From ea89849fc561c0d88542950fb38f175231a07e78 Mon Sep 17 00:00:00 2001 From: Dmitrii Novikov Date: Wed, 4 Dec 2024 22:20:17 +0400 Subject: [PATCH] feat(ethexe): refactor and optimize mirror; split initialization logic; remove unnecessary token manipulations (#4372) --- ethexe/cli/src/args.rs | 19 +- ethexe/cli/src/tests.rs | 22 +- ethexe/contracts/src/IMirror.sol | 28 +- ethexe/contracts/src/IRouter.sol | 12 +- ethexe/contracts/src/Middleware.sol | 2 +- ethexe/contracts/src/Mirror.sol | 270 +++++++++++------- ethexe/contracts/src/Router.sol | 146 +++------- ethexe/contracts/test/Router.t.sol | 10 +- 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/abi/mod.rs | 16 +- ethexe/ethereum/src/mirror/mod.rs | 7 + ethexe/ethereum/src/router/mod.rs | 17 +- ethexe/runtime/src/wasm/storage.rs | 6 +- 17 files changed, 289 insertions(+), 276 deletions(-) diff --git a/ethexe/cli/src/args.rs b/ethexe/cli/src/args.rs index 0dc0e8be807..05ea0dbd1a0 100644 --- a/ethexe/cli/src/args.rs +++ b/ethexe/cli/src/args.rs @@ -167,10 +167,10 @@ pub struct UploadCodeArgs { #[derive(Clone, Debug, Deserialize, Parser)] pub struct CreateProgramArgs { code_id: String, - init_payload: String, - value: u128, } +// TODO (breathx): support message sending here. + impl ExtraCommands { pub async fn run(&self, config: &config::Config) -> anyhow::Result<()> { let signer = ethexe_signer::Signer::new(config.key_path.clone())?; @@ -288,15 +288,8 @@ impl ExtraCommands { .code_id .parse() .map_err(|err| anyhow!("failed to parse code id: {err}"))?; + let salt = rand::random(); - let init_payload = if let Some(init_payload) = - create_program_args.init_payload.strip_prefix("0x") - { - hex::decode(init_payload)? - } else { - create_program_args.init_payload.clone().into_bytes() - }; - let value = create_program_args.value; let Some((sender_address, ethexe_ethereum)) = maybe_sender_address.zip(maybe_ethereum) @@ -308,13 +301,11 @@ impl ExtraCommands { let router = ethexe_ethereum.router(); - let (tx, actor_id) = router - .create_program(code_id, salt, init_payload, value) - .await?; + let (tx, actor_id) = router.create_program(code_id, salt).await?; println!("Completed in transaction {tx:?}"); println!( - "Waiting for state update of program {}...", + "Program address on Ethereum {}", actor_id.to_address_lossy() ); diff --git a/ethexe/cli/src/tests.rs b/ethexe/cli/src/tests.rs index 57cb4f312a2..e03239350cc 100644 --- a/ethexe/cli/src/tests.rs +++ b/ethexe/cli/src/tests.rs @@ -986,12 +986,15 @@ mod utils { Ok(WaitForUploadCode { listener, code_id }) } + // TODO (breathx): split it into different functions WITHIN THE PR. pub async fn create_program( &self, code_id: CodeId, payload: &[u8], value: u128, ) -> Result { + const EXECUTABLE_BALANCE: u128 = 500_000_000_000_000; + log::info!( "📗 Create program, code_id {code_id}, payload len {}", payload.len() @@ -999,12 +1002,23 @@ mod utils { let listener = self.events_publisher().subscribe().await; - let (_, program_id) = self - .ethereum - .router() - .create_program(code_id, H256::random(), payload, value) + let router = self.ethereum.router(); + + let (_, program_id) = router.create_program(code_id, H256::random()).await?; + + let program_address = program_id.to_address_lossy().0.into(); + + router + .wvara() + .approve(program_address, value + EXECUTABLE_BALANCE) .await?; + let mirror = self.ethereum.mirror(program_address.into_array().into()); + + mirror.executable_balance_top_up(EXECUTABLE_BALANCE).await?; + + mirror.send_message(payload, value).await?; + Ok(WaitForProgramCreation { listener, program_id, diff --git a/ethexe/contracts/src/IMirror.sol b/ethexe/contracts/src/IMirror.sol index 4f1895dfcaa..c8173296c4d 100644 --- a/ethexe/contracts/src/IMirror.sol +++ b/ethexe/contracts/src/IMirror.sol @@ -1,6 +1,8 @@ // SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.26; +import {Gear} from "./libraries/Gear.sol"; + // TODO (breathx): sort here everything. interface IMirror { /* Events section */ @@ -85,33 +87,19 @@ interface IMirror { /* Primary Gear logic */ - function sendMessage(bytes calldata payload, uint128 value) external payable returns (bytes32); + function sendMessage(bytes calldata payload, uint128 value) external returns (bytes32); - function sendReply(bytes32 repliedTo, bytes calldata payload, uint128 value) external payable; + function sendReply(bytes32 repliedTo, bytes calldata payload, uint128 value) external; - // payable? function claimValue(bytes32 claimedId) external; - function executableBalanceTopUp(uint128 value) external payable; + function executableBalanceTopUp(uint128 value) external; - function sendValueToInheritor() external; + function transferLockedValueToInheritor() external; /* Router-driven state and funds management */ - // NOTE: all of these methods will have additional handler (with hooks) for decoder. - - function updateState(bytes32 newStateHash) external; - - function setInheritor(address inheritor) external; - - function messageSent(bytes32 id, address destination, bytes calldata payload, uint128 value) external; - - function replySent(address destination, bytes calldata payload, uint128 value, bytes32 replyTo, bytes4 replyCode) - external; - - function valueClaimed(bytes32 claimedId, address destination, uint128 value) external; - function createDecoder(address implementation, bytes32 salt) external; + function initialize(address initializer, address decoder) external; - // TODO (breathx): consider removal of this in favor of separated creation and init. - function initMessage(address source, bytes calldata payload, uint128 value, uint128 executableBalance) external; + function performStateTransition(Gear.StateTransition calldata transition) external returns (bytes32); } diff --git a/ethexe/contracts/src/IRouter.sol b/ethexe/contracts/src/IRouter.sol index 94f9ebe8533..2eb4e918103 100644 --- a/ethexe/contracts/src/IRouter.sol +++ b/ethexe/contracts/src/IRouter.sol @@ -98,17 +98,9 @@ interface IRouter { /// @dev CodeValidationRequested Emitted on success. function requestCodeValidation(bytes32 codeId, bytes32 blobTxHash) external; /// @dev ProgramCreated Emitted on success. - function createProgram(bytes32 codeId, bytes32 salt, bytes calldata payload, uint128 value) - external - returns (address); + function createProgram(bytes32 codeId, bytes32 salt) external returns (address); /// @dev ProgramCreated Emitted on success. - function createProgramWithDecoder( - address decoderImpl, - bytes32 codeId, - bytes32 salt, - bytes calldata payload, - uint128 value - ) external returns (address); + function createProgramWithDecoder(address decoderImpl, bytes32 codeId, bytes32 salt) external returns (address); // # Validators calls. /// @dev CodeGotValidated Emitted for each code in commitment. diff --git a/ethexe/contracts/src/Middleware.sol b/ethexe/contracts/src/Middleware.sol index ee2fd915733..24d82e5a203 100644 --- a/ethexe/contracts/src/Middleware.sol +++ b/ethexe/contracts/src/Middleware.sol @@ -454,7 +454,7 @@ contract Middleware { require(cfg.minSlashExecutionDelay > 0, "Min slash execution delay cannot be zero"); require( cfg.minVetoDuration + cfg.minSlashExecutionDelay <= cfg.minVaultEpochDuration, - "Veto duration and slash execution delay must be less than ot equal to min vaults epoch duration" + "Veto duration and slash execution delay must be less than or equal to min vaults epoch duration" ); // In order to be able to change resolver, we need to limit max delay in epochs. diff --git a/ethexe/contracts/src/Mirror.sol b/ethexe/contracts/src/Mirror.sol index 68c85cce545..059f24c9465 100644 --- a/ethexe/contracts/src/Mirror.sol +++ b/ethexe/contracts/src/Mirror.sol @@ -7,14 +7,59 @@ import {IRouter} from "./IRouter.sol"; import {IWrappedVara} from "./IWrappedVara.sol"; import {IMirrorDecoder} from "./IMirrorDecoder.sol"; import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol"; +import {Gear} from "./libraries/Gear.sol"; -// TODO: handle ETH sent in each contract. contract Mirror is IMirror { - bytes32 public stateHash; - address public inheritor; - // NOTE: Nonce 0 is used for init message in current implementation - uint256 public nonce; /* = 1 */ address public decoder; + address public inheritor; + /// @dev This nonce is the source for message ids unique generations. Must be bumped on each send. Zeroed nonce is always represent init message by eligible account. + address public initializer; + bytes32 public stateHash; + uint256 public nonce; + + /// @dev Only the router can call functions marked with this modifier. + modifier onlyRouter() { + require(msg.sender == router(), "caller is not the router"); + _; + } + + /// @dev Non-zero value must be transferred from source to router in functions marked with this modifier. + modifier retrievingValue(uint128 value) { + if (value != 0) { + address routerAddr = router(); + bool success = _wvara(routerAddr).transferFrom(_source(), routerAddr, value); + require(success, "failed to transfer non-zero amount of WVara from source to router"); + } + _; + } + + // TODO (breathx): terminated programs compute threshold must always be treated as balance-enough. + /// @dev Functions marked with this modifier can be called only after the program is terminated. + modifier whenTerminated() { + require(inheritor != address(0), "program is not terminated"); + _; + } + + /// @dev Functions marked with this modifier can be called only after the initializer has created the init message. + modifier whenInitMessageCreated() { + require(nonce > 0, "initializer hasn't created init message yet"); + _; + } + + /// @dev Functions marked with this modifier can be called only after the initializer has created the init message or from the initializer (first access). + modifier whenInitMessageCreatedOrFromInitializer() { + require( + nonce > 0 || _source() == initializer, + "initializer hasn't created init message yet; and source is not initializer" + ); + _; + } + + /// @dev Functions marked with this modifier can be called only if the program is active. + modifier whileActive() { + require(inheritor == address(0), "program is terminated"); + _; + } /* Operational functions */ @@ -24,12 +69,13 @@ contract Mirror is IMirror { /* Primary Gear logic */ - // TODO (breathx): sendMessage with msg.sender, but with tx.origin if decoder. - function sendMessage(bytes calldata _payload, uint128 _value) external payable returns (bytes32) { - require(inheritor == address(0), "program is terminated"); - - _retrieveValueToRouter(_value); - + function sendMessage(bytes calldata _payload, uint128 _value) + external + whileActive + whenInitMessageCreatedOrFromInitializer + retrievingValue(_value) + returns (bytes32) + { bytes32 id = keccak256(abi.encodePacked(address(this), nonce++)); emit MessageQueueingRequested(id, _source(), _payload, _value); @@ -37,134 +83,179 @@ contract Mirror is IMirror { return id; } - function sendReply(bytes32 _repliedTo, bytes calldata _payload, uint128 _value) external payable { - require(inheritor == address(0), "program is terminated"); - - _retrieveValueToRouter(_value); - + function sendReply(bytes32 _repliedTo, bytes calldata _payload, uint128 _value) + external + whileActive + whenInitMessageCreated + retrievingValue(_value) + { emit ReplyQueueingRequested(_repliedTo, _source(), _payload, _value); } - function claimValue(bytes32 _claimedId) external { - require(inheritor == address(0), "program is terminated"); - + function claimValue(bytes32 _claimedId) external whenInitMessageCreated { emit ValueClaimingRequested(_claimedId, _source()); } - function executableBalanceTopUp(uint128 _value) external payable { - require(inheritor == address(0), "program is terminated"); - - _retrieveValueToRouter(_value); - + function executableBalanceTopUp(uint128 _value) external whileActive retrievingValue(_value) { emit ExecutableBalanceTopUpRequested(_value); } - function sendValueToInheritor() public { - require(inheritor != address(0), "program is not terminated"); - - uint256 balance = IWrappedVara(IRouter(router()).wrappedVara()).balanceOf(address(this)); - _sendValueTo(inheritor, uint128(balance)); + function transferLockedValueToInheritor() public whenTerminated { + uint256 balance = _wvara(router()).balanceOf(address(this)); + _transferValue(inheritor, uint128(balance)); } /* Router-driven state and funds management */ - function updateState(bytes32 newStateHash) external onlyRouter { - if (stateHash != newStateHash) { - stateHash = newStateHash; + function initialize(address _initializer, address _decoder) public onlyRouter { + require(initializer == address(0), "initializer could only be set once"); + require(decoder == address(0), "initializer could only be set once"); - emit StateChanged(stateHash); - } + initializer = _initializer; + decoder = _decoder; } - // TODO (breathx): handle after-all transfers to program on wvara event properly. - function setInheritor(address _inheritor) external onlyRouter { - inheritor = _inheritor; + // NOTE (breathx): value to receive should be already handled in router. + function performStateTransition(Gear.StateTransition calldata _transition) external onlyRouter returns (bytes32) { + /// @dev Verify that the transition belongs to this contract. + require(_transition.actorId == address(this), "actorId must be this contract"); + + /// @dev Send all outgoing messages. + bytes32 messagesHashesHash = _sendMessages(_transition.messages); + + /// @dev Send value for each claim. + bytes32 valueClaimsHash = _claimValues(_transition.valueClaims); - sendValueToInheritor(); + /// @dev Set inheritor if specified. + if (_transition.inheritor != address(0)) { + _setInheritor(_transition.inheritor); + } + + /// @dev Update the state hash if changed. + if (stateHash != _transition.newStateHash) { + _updateStateHash(_transition.newStateHash); + } + + /// @dev Return hash of performed state transition. + return Gear.stateTransitionHash( + _transition.actorId, + _transition.newStateHash, + _transition.inheritor, + _transition.valueToReceive, + valueClaimsHash, + messagesHashesHash + ); } - function messageSent(bytes32 id, address destination, bytes calldata payload, uint128 value) external onlyRouter { - // TODO (breathx): handle if goes to mailbox or not. Send value in place or not. + // TODO (breathx): consider when to emit event: on success in decoder, on failure etc. + // TODO (breathx): make decoder gas configurable. + // TODO (breathx): handle if goes to mailbox or not. + function _sendMessages(Gear.Message[] calldata _messages) private returns (bytes32) { + bytes memory messagesHashes; + + for (uint256 i = 0; i < _messages.length; i++) { + Gear.Message calldata message = _messages[i]; + messagesHashes = bytes.concat(messagesHashes, Gear.messageHash(message)); + + // TODO (breathx): optimize it to bytes WITHIN THE PR. + if (message.replyDetails.to == 0) { + _sendMailboxedMessage(message); + } else { + _sendReplyMessage(message); + } + } + + return keccak256(messagesHashes); + } + + /// @dev Value never sent since goes to mailbox. + function _sendMailboxedMessage(Gear.Message calldata _message) private { if (decoder != address(0)) { - bytes memory callData = - abi.encodeWithSelector(IMirrorDecoder.onMessageSent.selector, id, destination, payload, value); + bytes memory callData = abi.encodeWithSelector( + IMirrorDecoder.onMessageSent.selector, + _message.id, + _message.destination, + _message.payload, + _message.value + ); // Result is ignored here. - // TODO (breathx): make gas configurable? (bool success,) = decoder.call{gas: 500_000}(callData); if (success) { - // TODO (breathx): emit event with message hash? return; } } - emit Message(id, destination, payload, value); + emit Message(_message.id, _message.destination, _message.payload, _message.value); } - function replySent(address destination, bytes calldata payload, uint128 value, bytes32 replyTo, bytes4 replyCode) - external - onlyRouter - { - _sendValueTo(destination, value); + /// @dev Non-zero value always sent since never goes to mailbox. + function _sendReplyMessage(Gear.Message calldata _message) private { + _transferValue(_message.destination, _message.value); if (decoder != address(0)) { bytes memory callData = abi.encodeWithSelector( - IMirrorDecoder.onReplySent.selector, destination, payload, value, replyTo, replyCode + IMirrorDecoder.onReplySent.selector, + _message.destination, + _message.payload, + _message.value, + _message.replyDetails.to, + _message.replyDetails.code ); // Result is ignored here. - // TODO (breathx): make gas configurable? (bool success,) = decoder.call{gas: 500_000}(callData); if (success) { - // TODO (breathx): emit event with reply hash? return; } } - emit Reply(payload, value, replyTo, replyCode); + emit Reply(_message.payload, _message.value, _message.replyDetails.to, _message.replyDetails.code); } - function valueClaimed(bytes32 claimedId, address destination, uint128 value) external onlyRouter { - _sendValueTo(destination, value); + function _claimValues(Gear.ValueClaim[] calldata _claims) private returns (bytes32) { + bytes memory valueClaimsBytes; - emit ValueClaimed(claimedId, value); - } + for (uint256 i = 0; i < _claims.length; i++) { + Gear.ValueClaim calldata claim = _claims[i]; - function createDecoder(address implementation, bytes32 salt) external onlyRouter { - require(nonce == 0, "decoder could only be created before init message"); - require(decoder == address(0), "decoder could only be created once"); + valueClaimsBytes = bytes.concat(valueClaimsBytes, Gear.valueClaimBytes(claim)); - decoder = Clones.cloneDeterministic(implementation, salt); + _transferValue(claim.destination, claim.value); - IMirrorDecoder(decoder).initialize(); - } + emit ValueClaimed(claim.messageId, claim.value); + } - function initMessage(address source, bytes calldata payload, uint128 value, uint128 executableBalance) - external - onlyRouter - { - require(nonce == 0, "init message must be created before any others"); + return keccak256(valueClaimsBytes); + } - /* - * @dev: charging at this point is already made in router. - */ - uint256 initNonce = nonce++; - bytes32 id = keccak256(abi.encodePacked(address(this), initNonce)); + // TODO (breathx): optimize inheritor to bytes WITHIN THE PR. + function _setInheritor(address _inheritor) private whileActive { + /// @dev Set inheritor. + inheritor = _inheritor; - emit ExecutableBalanceTopUpRequested(executableBalance); - emit MessageQueueingRequested(id, source, payload, value); + /// @dev Transfer all available balance to the inheritor. + transferLockedValueToInheritor(); } - modifier onlyRouter() { - require(msg.sender == router(), "only router contract is eligible for operation"); - _; + function _updateStateHash(bytes32 _stateHash) private { + /// @dev Set state hash. + stateHash = _stateHash; + + /// @dev Emits an event signaling that the state has changed. + emit StateChanged(stateHash); } /* Local helper functions */ + function _wvara(address routerAddr) private view returns (IWrappedVara) { + address wvaraAddr = IRouter(routerAddr).wrappedVara(); + return IWrappedVara(wvaraAddr); + } + function _source() private view returns (address) { if (msg.sender == decoder) { return tx.origin; @@ -173,25 +264,10 @@ contract Mirror is IMirror { } } - function _retrieveValueToRouter(uint128 _value) private { - if (_value != 0) { - address routerAddress = router(); - - IWrappedVara wrappedVara = IWrappedVara(IRouter(routerAddress).wrappedVara()); - - bool success = wrappedVara.transferFrom(_source(), routerAddress, _value); - - require(success, "failed to retrieve WVara"); - } - } - - function _sendValueTo(address destination, uint128 value) private { - IWrappedVara wrappedVara = IWrappedVara(IRouter(router()).wrappedVara()); - + function _transferValue(address destination, uint128 value) private { if (value != 0) { - bool success = wrappedVara.transfer(destination, value); - - require(success, "failed to send WVara"); + bool success = _wvara(router()).transfer(destination, value); + require(success, "failed to transfer WVara"); } } } diff --git a/ethexe/contracts/src/Router.sol b/ethexe/contracts/src/Router.sol index 7f4f588e7af..07f21d243df 100644 --- a/ethexe/contracts/src/Router.sol +++ b/ethexe/contracts/src/Router.sol @@ -1,16 +1,15 @@ // SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.26; -import {StorageSlot} from "@openzeppelin/contracts/utils/StorageSlot.sol"; -import {OwnableUpgradeable} from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol"; -import {ReentrancyGuardTransient} from "@openzeppelin/contracts/utils/ReentrancyGuardTransient.sol"; -import {IRouter} from "./IRouter.sol"; +import {Gear} from "./libraries/Gear.sol"; import {IMirror} from "./IMirror.sol"; +import {IMirrorDecoder} from "./IMirrorDecoder.sol"; +import {IRouter} from "./IRouter.sol"; import {IWrappedVara} from "./IWrappedVara.sol"; -import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol"; -import {Gear} from "./libraries/Gear.sol"; +import {OwnableUpgradeable} from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; +import {ReentrancyGuardTransient} from "@openzeppelin/contracts/utils/ReentrancyGuardTransient.sol"; +import {StorageSlot} from "@openzeppelin/contracts/utils/StorageSlot.sol"; contract Router is IRouter, OwnableUpgradeable, ReentrancyGuardTransient { // keccak256(abi.encode(uint256(keccak256("router.storage.Slot")) - 1)) & ~bytes32(uint256(0xff)) @@ -187,33 +186,24 @@ contract Router is IRouter, OwnableUpgradeable, ReentrancyGuardTransient { emit CodeValidationRequested(_codeId, _blobTxHash); } - function createProgram(bytes32 _codeId, bytes32 _salt, bytes calldata _payload, uint128 _value) - external - returns (address) - { - (address actorId, uint128 executableBalance) = _createProgramWithoutMessage(_codeId, _salt, _value); + function createProgram(bytes32 _codeId, bytes32 _salt) external returns (address) { + address mirror = _createProgram(_codeId, _salt); - IMirror(actorId).initMessage(msg.sender, _payload, _value, executableBalance); + IMirror(mirror).initialize(msg.sender, address(0)); - return actorId; + return mirror; } - function createProgramWithDecoder( - address _decoderImpl, - bytes32 _codeId, - bytes32 _salt, - bytes calldata _payload, - uint128 _value - ) external returns (address) { - (address actorId, uint128 executableBalance) = _createProgramWithoutMessage(_codeId, _salt, _value); - - IMirror mirrorInstance = IMirror(actorId); - - mirrorInstance.createDecoder(_decoderImpl, keccak256(abi.encodePacked(_codeId, _salt))); + function createProgramWithDecoder(address _decoderImpl, bytes32 _codeId, bytes32 _salt) + external + returns (address) + { + address mirror = _createProgram(_codeId, _salt); + address decoder = _createDecoder(_decoderImpl, keccak256(abi.encodePacked(_codeId, _salt))); - mirrorInstance.initMessage(msg.sender, _payload, _value, executableBalance); + IMirror(mirror).initialize(msg.sender, decoder); - return actorId; + return mirror; } // # Validators calls. @@ -271,10 +261,7 @@ contract Router is IRouter, OwnableUpgradeable, ReentrancyGuardTransient { /* Helper private functions */ - function _createProgramWithoutMessage(bytes32 _codeId, bytes32 _salt, uint128 _value) - private - returns (address, uint128) - { + function _createProgram(bytes32 _codeId, bytes32 _salt) private returns (address) { Storage storage router = _router(); require(router.genesisBlock.hash != bytes32(0), "router genesis is zero; call `lookupGenesisHash()` first"); @@ -283,11 +270,6 @@ contract Router is IRouter, OwnableUpgradeable, ReentrancyGuardTransient { "code must be validated before program creation" ); - // By default get 10 WVara for executable balance. - uint128 executableBalance = 10_000_000_000_000; - - _retrieveValue(router, executableBalance + _value); - // Check for duplicate isn't necessary, because `Clones.cloneDeterministic` // reverts execution in case of address is already taken. address actorId = @@ -298,7 +280,15 @@ contract Router is IRouter, OwnableUpgradeable, ReentrancyGuardTransient { emit ProgramCreated(actorId, _codeId); - return (actorId, executableBalance); + return actorId; + } + + function _createDecoder(address _implementation, bytes32 _salt) private returns (address) { + address decoder = Clones.cloneDeterministic(_implementation, _salt); + + IMirrorDecoder(decoder).initialize(); + + return decoder; } function _commitBlock(Storage storage router, Gear.BlockCommitment calldata _blockCommitment) @@ -317,13 +307,7 @@ contract Router is IRouter, OwnableUpgradeable, ReentrancyGuardTransient { */ router.latestCommittedBlock = Gear.CommittedBlockInfo(_blockCommitment.hash, _blockCommitment.timestamp); - bytes memory transitionsHashes; - - for (uint256 i = 0; i < _blockCommitment.transitions.length; i++) { - Gear.StateTransition calldata stateTransition = _blockCommitment.transitions[i]; - - transitionsHashes = bytes.concat(transitionsHashes, _doStateTransition(stateTransition)); - } + bytes32 transitionsHashesHash = _commitTransitions(router, _blockCommitment.transitions); emit BlockCommitted(_blockCommitment.hash); @@ -332,73 +316,31 @@ contract Router is IRouter, OwnableUpgradeable, ReentrancyGuardTransient { _blockCommitment.timestamp, _blockCommitment.previousCommittedBlock, _blockCommitment.predecessorBlock, - keccak256(transitionsHashes) + transitionsHashesHash ); } - function _doStateTransition(Gear.StateTransition calldata _stateTransition) private returns (bytes32) { - Storage storage router = _router(); - - require( - router.protocolData.programs[_stateTransition.actorId] != 0, - "couldn't perform transition for unknown program" - ); - - IWrappedVara wrappedVaraActor = IWrappedVara(router.implAddresses.wrappedVara); - wrappedVaraActor.transfer(_stateTransition.actorId, _stateTransition.valueToReceive); - - IMirror mirrorActor = IMirror(_stateTransition.actorId); - - bytes memory valueClaimsBytes; - - for (uint256 i = 0; i < _stateTransition.valueClaims.length; i++) { - Gear.ValueClaim calldata claim = _stateTransition.valueClaims[i]; - - mirrorActor.valueClaimed(claim.messageId, claim.destination, claim.value); - - valueClaimsBytes = bytes.concat(valueClaimsBytes, Gear.valueClaimBytes(claim)); - } + function _commitTransitions(Storage storage router, Gear.StateTransition[] calldata _transitions) + private + returns (bytes32) + { + bytes memory transitionsHashes; - bytes memory messagesHashes; + for (uint256 i = 0; i < _transitions.length; i++) { + Gear.StateTransition calldata transition = _transitions[i]; - for (uint256 i = 0; i < _stateTransition.messages.length; i++) { - Gear.Message calldata message = _stateTransition.messages[i]; + require( + router.protocolData.programs[transition.actorId] != 0, "couldn't perform transition for unknown program" + ); - if (message.replyDetails.to == 0) { - mirrorActor.messageSent(message.id, message.destination, message.payload, message.value); - } else { - mirrorActor.replySent( - message.destination, - message.payload, - message.value, - message.replyDetails.to, - message.replyDetails.code - ); - } + IWrappedVara(router.implAddresses.wrappedVara).transfer(transition.actorId, transition.valueToReceive); - messagesHashes = bytes.concat(messagesHashes, Gear.messageHash(message)); - } + bytes32 transitionHash = IMirror(transition.actorId).performStateTransition(transition); - if (_stateTransition.inheritor != address(0)) { - mirrorActor.setInheritor(_stateTransition.inheritor); + transitionsHashes = bytes.concat(transitionsHashes, transitionHash); } - mirrorActor.updateState(_stateTransition.newStateHash); - - return Gear.stateTransitionHash( - _stateTransition.actorId, - _stateTransition.newStateHash, - _stateTransition.inheritor, - _stateTransition.valueToReceive, - keccak256(valueClaimsBytes), - keccak256(messagesHashes) - ); - } - - function _retrieveValue(Storage storage router, uint128 _value) private { - bool success = IERC20(router.implAddresses.wrappedVara).transferFrom(msg.sender, address(this), _value); - - require(success, "failed to retrieve WVara"); + return keccak256(transitionsHashes); } function _setValidators(Storage storage router, address[] memory _validators) private { diff --git a/ethexe/contracts/test/Router.t.sol b/ethexe/contracts/test/Router.t.sol index ece9a2e8b0e..976ad808068 100644 --- a/ethexe/contracts/test/Router.t.sol +++ b/ethexe/contracts/test/Router.t.sol @@ -28,6 +28,7 @@ contract RouterTest is Test { uint256[] public validatorsPrivateKeys; Router public router; + WrappedVara public wrappedVara; function setUp() public { validators.push(alicePublic); @@ -40,7 +41,7 @@ contract RouterTest is Test { startPrank(deployer); - WrappedVara wrappedVara = WrappedVara( + wrappedVara = WrappedVara( Upgrades.deployTransparentProxy( "WrappedVara.sol", deployer, abi.encodeCall(WrappedVara.initialize, (deployer)) ) @@ -63,8 +64,6 @@ contract RouterTest is Test { router.lookupGenesisHash(); - wrappedVara.approve(address(router), type(uint256).max); - Mirror mirror = new Mirror(); MirrorProxy mirrorProxy = new MirrorProxy(address(router)); @@ -94,9 +93,12 @@ contract RouterTest is Test { router.commitCodes(codeCommitments, _signCodeCommitments(codeCommitments)); - address actorId = router.createProgram(codeId, "salt", "PING", 1_000_000_000); + address actorId = router.createProgram(codeId, "salt"); IMirror actor = IMirror(actorId); + wrappedVara.approve(address(actor), 1_000_000_000); + actor.sendMessage("PING", 1_000_000_000); + assertEq(actor.router(), address(router)); assertEq(actor.stateHash(), 0); assertEq(actor.inheritor(), address(0)); diff --git a/ethexe/ethereum/Mirror.json b/ethexe/ethereum/Mirror.json index ab35e7e6c0e..754512af072 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":"createDecoder","inputs":[{"name":"implementation","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"decoder","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"executableBalanceTopUp","inputs":[{"name":"_value","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"inheritor","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"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":"sendValueToInheritor","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setInheritor","inputs":[{"name":"_inheritor","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"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},{"type":"error","name":"FailedDeployment","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x608080604052346015576111d7908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f803560e01c806312b222561461092557806314503e51146108aa57806329336f391461080757806336a52a18146107df5780635b1b84f71461062e57806360302d2414610615578063701da98e146105f8578063704ed5421461058b5780638ea59e1d1461052657806391d5a64c146104be5780639cb3300514610495578063affed0e014610477578063c2df600914610414578063c78bde7714610394578063d562422214610298578063de1dd2e0146101045763f887ea40146100d5575f80fd5b3461010157806003193601126101015760206100ef610ed9565b6040516001600160a01b039091168152f35b80fd5b50346101015760803660031901126101015761011e610979565b60243567ffffffffffffffff81116102945761013e9036906004016109d1565b906101476109a5565b926101506109bb565b9361016c6001600160a01b03610164610ed9565b1633146109ff565b6002549081610238577f3527a119fe7f25d965cb7abc58139f031e8909b8592488c7926862d569e435c6947f85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c0542366676020846101c761023296610eb7565b6002556040513060601b6bffffffffffffffffffffffff1916838201908152601481019290925261020581603484015b03601f198101835282610af4565b519020986001600160801b0360405191168152a16040516001600160a01b03909416969394859485610ac6565b0390a280f35b60405162461bcd60e51b815260206004820152602e60248201527f696e6974206d657373616765206d75737420626520637265617465642062656660448201526d6f726520616e79206f746865727360901b6064820152608490fd5b8280fd5b5060403660031901126101015760043567ffffffffffffffff8111610390576102c59036906004016109d1565b91602435906001600160801b038216820361010157506001546020937f3527a119fe7f25d965cb7abc58139f031e8909b8592488c7926862d569e435c691610316906001600160a01b031615610a62565b61031f8361105f565b60025461032b81610eb7565b6002556040513060601b6bffffffffffffffffffffffff1916878201908152601481019290925261035f81603484016101f7565b519020936103856001600160a01b03610376611185565b16946040519384938885610ac6565b0390a2604051908152f35b5080fd5b50346101015760a0366003190112610101576103ae610979565b60243567ffffffffffffffff8111610294576103ce9036906004016109d1565b90916103d86109a5565b608435926001600160e01b0319841684036104105761040d946104046001600160a01b03610164610ed9565b60643593610da4565b80f35b8580fd5b50346101015760803660031901126101015761042e61098f565b6044359067ffffffffffffffff82116102945761045261040d9236906004016109d1565b9061045b6109bb565b9261046f6001600160a01b03610164610ed9565b600435610ccc565b50346101015780600319360112610101576020600254604051908152f35b50346101015780600319360112610101576003546040516001600160a01b039091168152602090f35b5034610101576020366003190112610101576001546104e6906001600160a01b031615610a62565b6001600160a01b036104f6611185565b167f0354817698da67944179457b89e15c1c57ca7b8cfd9d80eab1d09c258f6c497860206040516004358152a280f35b50346101015760203660031901126101015760043561054e6001600160a01b03610164610ed9565b8082540361055a575080f35b6020817f5c601f20d27885120b6fed87a4c313849b86eaddc9d28e7685e2e66a9c080930928455604051908152a180f35b506020366003190112610101576004356001600160801b03811690818103610294577f85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c054236667916105ee6020926105e960018060a01b036001541615610a62565b61105f565b604051908152a180f35b503461010157806003193601126101015760209054604051908152f35b503461010157806003193601126101015761040d610b49565b503461071d57604036600319011261071d57610648610979565b61065b6001600160a01b03610164610ed9565b600254610780576003546001600160a01b03166107305780763d602d80600a3d3981f3363d3d373d3d3d363d7300000062ffffff6e5af43d82803e903d91602b57fd5bf39360881c16175f5260781b1760205260018060a01b03602435603760095ff516801561072157600380546001600160a01b03191682179055803b1561071d575f809160046040518094819363204a7f0760e21b83525af1801561071257610704575080f35b61071091505f90610af4565b005b6040513d5f823e3d90fd5b5f80fd5b63b06ebf3d60e01b5f5260045ffd5b60405162461bcd60e51b815260206004820152602260248201527f6465636f64657220636f756c64206f6e6c792062652063726561746564206f6e604482015261636560f01b6064820152608490fd5b60405162461bcd60e51b815260206004820152603160248201527f6465636f64657220636f756c64206f6e6c792062652063726561746564206265604482015270666f726520696e6974206d65737361676560781b6064820152608490fd5b3461071d575f36600319011261071d576001546040516001600160a01b039091168152602090f35b606036600319011261071d5760243567ffffffffffffffff811161071d576108547fb64dad8a89028819d048f9c75ec4c516341da68972bb68a8e1262b5443c61e7f9136906004016109d1565b61085f9291926109a5565b600154909390610878906001600160a01b031615610a62565b6108818461105f565b6108a56001600160a01b03610894611185565b169460405193849360043585610ac6565b0390a2005b3461071d57606036600319011261071d577fa217f2987a7942c2966f1fd16d39097862308325249e8b9fb4c00a430fd6578360406108e661098f565b61090c6108f16109a5565b9182906109076001600160a01b03610164610ed9565b610f34565b6001600160801b038251916004358352166020820152a1005b3461071d57602036600319011261071d5761093e610979565b6109516001600160a01b03610164610ed9565b60018060a01b03166bffffffffffffffffffffffff60a01b6001541617600155610710610b49565b600435906001600160a01b038216820361071d57565b602435906001600160a01b038216820361071d57565b604435906001600160801b038216820361071d57565b606435906001600160801b038216820361071d57565b9181601f8401121561071d5782359167ffffffffffffffff831161071d576020838186019501011161071d57565b15610a0657565b60405162461bcd60e51b815260206004820152602e60248201527f6f6e6c7920726f7574657220636f6e747261637420697320656c696769626c6560448201526d103337b91037b832b930ba34b7b760911b6064820152608490fd5b15610a6957565b60405162461bcd60e51b81526020600482015260156024820152741c1c9bd9dc985b481a5cc81d195c9b5a5b985d1959605a1b6044820152606490fd5b908060209392818452848401375f828201840152601f01601f1916010190565b92604092610aed916001600160801b03939796978652606060208701526060860191610aa6565b9416910152565b90601f8019910116810190811067ffffffffffffffff821117610b1657604052565b634e487b7160e01b5f52604160045260245ffd5b9081602091031261071d57516001600160a01b038116810361071d5790565b6001546001600160a01b03168015610c485760049060206001600160a01b03610b70610ed9565b166040519384809263088f50cf60e41b82525afa918215610712576024926020915f91610c1b575b506040516370a0823160e01b815230600482015293849182906001600160a01b03165afa918215610712575f92610be0575b506001600160801b03610bde921690610f34565b565b91506020823d602011610c13575b81610bfb60209383610af4565b8101031261071d579051906001600160801b03610bca565b3d9150610bee565b610c3b9150823d8411610c41575b610c338183610af4565b810190610b2a565b5f610b98565b503d610c29565b60405162461bcd60e51b815260206004820152601960248201527f70726f6772616d206973206e6f74207465726d696e61746564000000000000006044820152606490fd5b3d15610cc7573d9067ffffffffffffffff8211610b165760405191610cbc601f8201601f191660200184610af4565b82523d5f602084013e565b606090565b600354909493906001600160a01b031680610d23575b507f9c4ffe7286aed9eb205c8adb12b51219122c7e56c67017f312af0e15f801177393610d1e9160405194859460018060a01b03169785610ac6565b0390a2565b5f80916040518260208201916374fad4ef60e01b83528a602482015260018060a01b038816604482015260806064820152610d8381610d6660a482018a8d610aa6565b6001600160801b038d16608483015203601f198101835282610af4565b51926207a120f1610d92610c8d565b50610d9d575f610ce2565b5050505050565b94909294610db28682610f34565b6003546001600160a01b03169081610e24575b50507fe240a19e4a4ef8e5861c0eea48f9ab2cdb47bfe98347c94ccabb9c45f7d8d1c6936001600160801b03610e08604051958695606087526060870191610aa6565b9616602084015260408301526001600160e01b031916930390a2565b604051639649744960e01b602082019081526001600160a01b03909216602482015260a060448201525f92839290918390610e9c818c6001600160801b03610e7060c484018d8f610aa6565b91166064830152608482018d90526001600160e01b03198a1660a483015203601f198101835282610af4565b51926207a120f1610eab610c8d565b50610d9d575f80610dc5565b5f198114610ec55760010190565b634e487b7160e01b5f52601160045260245ffd5b6040516303e21fa960e61b8152602081600481305afa908115610712575f91610f00575090565b610f19915060203d602011610c4157610c338183610af4565b90565b9081602091031261071d5751801515810361071d5790565b60049160206001600160a01b03610f49610ed9565b166040519485809263088f50cf60e41b82525afa928315610712575f93611035575b506001600160801b031680610f7f57505050565b60405163a9059cbb60e01b81526001600160a01b039283166004820152602481019190915291602091839160449183915f91165af1908115610712575f91611006575b5015610fca57565b60405162461bcd60e51b81526020600482015260146024820152736661696c656420746f2073656e6420575661726160601b6044820152606490fd5b611028915060203d60201161102e575b6110208183610af4565b810190610f1c565b5f610fc2565b503d611016565b6001600160801b039193506110589060203d602011610c4157610c338183610af4565b9290610f6b565b6001600160801b0316806110705750565b6001600160a01b03611080610ed9565b60405163088f50cf60e41b81529116602082600481845afa918215610712576020926064915f91611168575b505f6110b6611185565b6040516323b872dd60e01b81526001600160a01b039182166004820152602481019590955260448501969096529294859384929091165af1908115610712575f91611149575b501561110457565b60405162461bcd60e51b815260206004820152601860248201527f6661696c656420746f20726574726965766520575661726100000000000000006044820152606490fd5b611162915060203d60201161102e576110208183610af4565b5f6110fc565b61117f9150843d8611610c4157610c338183610af4565b5f6110ac565b600354336001600160a01b039091160361119d573290565b339056fea2646970667358221220b494dbdf9a3752137d3750f75138c50d55c481fa64665364f23894379254372e64736f6c634300081a0033","sourceMap":"403:6111:157:-:0;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f803560e01c806312b222561461092557806314503e51146108aa57806329336f391461080757806336a52a18146107df5780635b1b84f71461062e57806360302d2414610615578063701da98e146105f8578063704ed5421461058b5780638ea59e1d1461052657806391d5a64c146104be5780639cb3300514610495578063affed0e014610477578063c2df600914610414578063c78bde7714610394578063d562422214610298578063de1dd2e0146101045763f887ea40146100d5575f80fd5b3461010157806003193601126101015760206100ef610ed9565b6040516001600160a01b039091168152f35b80fd5b50346101015760803660031901126101015761011e610979565b60243567ffffffffffffffff81116102945761013e9036906004016109d1565b906101476109a5565b926101506109bb565b9361016c6001600160a01b03610164610ed9565b1633146109ff565b6002549081610238577f3527a119fe7f25d965cb7abc58139f031e8909b8592488c7926862d569e435c6947f85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c0542366676020846101c761023296610eb7565b6002556040513060601b6bffffffffffffffffffffffff1916838201908152601481019290925261020581603484015b03601f198101835282610af4565b519020986001600160801b0360405191168152a16040516001600160a01b03909416969394859485610ac6565b0390a280f35b60405162461bcd60e51b815260206004820152602e60248201527f696e6974206d657373616765206d75737420626520637265617465642062656660448201526d6f726520616e79206f746865727360901b6064820152608490fd5b8280fd5b5060403660031901126101015760043567ffffffffffffffff8111610390576102c59036906004016109d1565b91602435906001600160801b038216820361010157506001546020937f3527a119fe7f25d965cb7abc58139f031e8909b8592488c7926862d569e435c691610316906001600160a01b031615610a62565b61031f8361105f565b60025461032b81610eb7565b6002556040513060601b6bffffffffffffffffffffffff1916878201908152601481019290925261035f81603484016101f7565b519020936103856001600160a01b03610376611185565b16946040519384938885610ac6565b0390a2604051908152f35b5080fd5b50346101015760a0366003190112610101576103ae610979565b60243567ffffffffffffffff8111610294576103ce9036906004016109d1565b90916103d86109a5565b608435926001600160e01b0319841684036104105761040d946104046001600160a01b03610164610ed9565b60643593610da4565b80f35b8580fd5b50346101015760803660031901126101015761042e61098f565b6044359067ffffffffffffffff82116102945761045261040d9236906004016109d1565b9061045b6109bb565b9261046f6001600160a01b03610164610ed9565b600435610ccc565b50346101015780600319360112610101576020600254604051908152f35b50346101015780600319360112610101576003546040516001600160a01b039091168152602090f35b5034610101576020366003190112610101576001546104e6906001600160a01b031615610a62565b6001600160a01b036104f6611185565b167f0354817698da67944179457b89e15c1c57ca7b8cfd9d80eab1d09c258f6c497860206040516004358152a280f35b50346101015760203660031901126101015760043561054e6001600160a01b03610164610ed9565b8082540361055a575080f35b6020817f5c601f20d27885120b6fed87a4c313849b86eaddc9d28e7685e2e66a9c080930928455604051908152a180f35b506020366003190112610101576004356001600160801b03811690818103610294577f85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c054236667916105ee6020926105e960018060a01b036001541615610a62565b61105f565b604051908152a180f35b503461010157806003193601126101015760209054604051908152f35b503461010157806003193601126101015761040d610b49565b503461071d57604036600319011261071d57610648610979565b61065b6001600160a01b03610164610ed9565b600254610780576003546001600160a01b03166107305780763d602d80600a3d3981f3363d3d373d3d3d363d7300000062ffffff6e5af43d82803e903d91602b57fd5bf39360881c16175f5260781b1760205260018060a01b03602435603760095ff516801561072157600380546001600160a01b03191682179055803b1561071d575f809160046040518094819363204a7f0760e21b83525af1801561071257610704575080f35b61071091505f90610af4565b005b6040513d5f823e3d90fd5b5f80fd5b63b06ebf3d60e01b5f5260045ffd5b60405162461bcd60e51b815260206004820152602260248201527f6465636f64657220636f756c64206f6e6c792062652063726561746564206f6e604482015261636560f01b6064820152608490fd5b60405162461bcd60e51b815260206004820152603160248201527f6465636f64657220636f756c64206f6e6c792062652063726561746564206265604482015270666f726520696e6974206d65737361676560781b6064820152608490fd5b3461071d575f36600319011261071d576001546040516001600160a01b039091168152602090f35b606036600319011261071d5760243567ffffffffffffffff811161071d576108547fb64dad8a89028819d048f9c75ec4c516341da68972bb68a8e1262b5443c61e7f9136906004016109d1565b61085f9291926109a5565b600154909390610878906001600160a01b031615610a62565b6108818461105f565b6108a56001600160a01b03610894611185565b169460405193849360043585610ac6565b0390a2005b3461071d57606036600319011261071d577fa217f2987a7942c2966f1fd16d39097862308325249e8b9fb4c00a430fd6578360406108e661098f565b61090c6108f16109a5565b9182906109076001600160a01b03610164610ed9565b610f34565b6001600160801b038251916004358352166020820152a1005b3461071d57602036600319011261071d5761093e610979565b6109516001600160a01b03610164610ed9565b60018060a01b03166bffffffffffffffffffffffff60a01b6001541617600155610710610b49565b600435906001600160a01b038216820361071d57565b602435906001600160a01b038216820361071d57565b604435906001600160801b038216820361071d57565b606435906001600160801b038216820361071d57565b9181601f8401121561071d5782359167ffffffffffffffff831161071d576020838186019501011161071d57565b15610a0657565b60405162461bcd60e51b815260206004820152602e60248201527f6f6e6c7920726f7574657220636f6e747261637420697320656c696769626c6560448201526d103337b91037b832b930ba34b7b760911b6064820152608490fd5b15610a6957565b60405162461bcd60e51b81526020600482015260156024820152741c1c9bd9dc985b481a5cc81d195c9b5a5b985d1959605a1b6044820152606490fd5b908060209392818452848401375f828201840152601f01601f1916010190565b92604092610aed916001600160801b03939796978652606060208701526060860191610aa6565b9416910152565b90601f8019910116810190811067ffffffffffffffff821117610b1657604052565b634e487b7160e01b5f52604160045260245ffd5b9081602091031261071d57516001600160a01b038116810361071d5790565b6001546001600160a01b03168015610c485760049060206001600160a01b03610b70610ed9565b166040519384809263088f50cf60e41b82525afa918215610712576024926020915f91610c1b575b506040516370a0823160e01b815230600482015293849182906001600160a01b03165afa918215610712575f92610be0575b506001600160801b03610bde921690610f34565b565b91506020823d602011610c13575b81610bfb60209383610af4565b8101031261071d579051906001600160801b03610bca565b3d9150610bee565b610c3b9150823d8411610c41575b610c338183610af4565b810190610b2a565b5f610b98565b503d610c29565b60405162461bcd60e51b815260206004820152601960248201527f70726f6772616d206973206e6f74207465726d696e61746564000000000000006044820152606490fd5b3d15610cc7573d9067ffffffffffffffff8211610b165760405191610cbc601f8201601f191660200184610af4565b82523d5f602084013e565b606090565b600354909493906001600160a01b031680610d23575b507f9c4ffe7286aed9eb205c8adb12b51219122c7e56c67017f312af0e15f801177393610d1e9160405194859460018060a01b03169785610ac6565b0390a2565b5f80916040518260208201916374fad4ef60e01b83528a602482015260018060a01b038816604482015260806064820152610d8381610d6660a482018a8d610aa6565b6001600160801b038d16608483015203601f198101835282610af4565b51926207a120f1610d92610c8d565b50610d9d575f610ce2565b5050505050565b94909294610db28682610f34565b6003546001600160a01b03169081610e24575b50507fe240a19e4a4ef8e5861c0eea48f9ab2cdb47bfe98347c94ccabb9c45f7d8d1c6936001600160801b03610e08604051958695606087526060870191610aa6565b9616602084015260408301526001600160e01b031916930390a2565b604051639649744960e01b602082019081526001600160a01b03909216602482015260a060448201525f92839290918390610e9c818c6001600160801b03610e7060c484018d8f610aa6565b91166064830152608482018d90526001600160e01b03198a1660a483015203601f198101835282610af4565b51926207a120f1610eab610c8d565b50610d9d575f80610dc5565b5f198114610ec55760010190565b634e487b7160e01b5f52601160045260245ffd5b6040516303e21fa960e61b8152602081600481305afa908115610712575f91610f00575090565b610f19915060203d602011610c4157610c338183610af4565b90565b9081602091031261071d5751801515810361071d5790565b60049160206001600160a01b03610f49610ed9565b166040519485809263088f50cf60e41b82525afa928315610712575f93611035575b506001600160801b031680610f7f57505050565b60405163a9059cbb60e01b81526001600160a01b039283166004820152602481019190915291602091839160449183915f91165af1908115610712575f91611006575b5015610fca57565b60405162461bcd60e51b81526020600482015260146024820152736661696c656420746f2073656e6420575661726160601b6044820152606490fd5b611028915060203d60201161102e575b6110208183610af4565b810190610f1c565b5f610fc2565b503d611016565b6001600160801b039193506110589060203d602011610c4157610c338183610af4565b9290610f6b565b6001600160801b0316806110705750565b6001600160a01b03611080610ed9565b60405163088f50cf60e41b81529116602082600481845afa918215610712576020926064915f91611168575b505f6110b6611185565b6040516323b872dd60e01b81526001600160a01b039182166004820152602481019590955260448501969096529294859384929091165af1908115610712575f91611149575b501561110457565b60405162461bcd60e51b815260206004820152601860248201527f6661696c656420746f20726574726965766520575661726100000000000000006044820152606490fd5b611162915060203d60201161102e576110208183610af4565b5f6110fc565b61117f9150843d8611610c4157610c338183610af4565b5f6110ac565b600354336001600160a01b039091160361119d573290565b339056fea2646970667358221220b494dbdf9a3752137d3750f75138c50d55c481fa64665364f23894379254372e64736f6c634300081a0033","sourceMap":"403:6111:157:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;403:6111:157;;;;;;;;;;;;;;;;-1:-1:-1;;403:6111:157;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;5478:81;-1:-1:-1;;;;;5500:8:157;;:::i;:::-;403:6111;5486:10;:22;5478:81;:::i;:::-;5035:5;403:6111;5035:10;;403:6111;;5381:52;5217:7;5316:50;403:6111;5217:7;;5381:52;5217:7;;:::i;:::-;5035:5;403:6111;;;5282:4;403:6111;;-1:-1:-1;;403:6111:157;5257:42;;;403:6111;;;;;;;;;;5257:42;403:6111;;;;5257:42;;1132:40;;5257:42;;;;;;:::i;:::-;403:6111;5247:53;;403:6111;-1:-1:-1;;;;;403:6111:157;;;;;;5316:50;403:6111;;-1:-1:-1;;;;;403:6111:157;;;;;;;;;5381:52;:::i;:::-;;;;403:6111;;;;;-1:-1:-1;;;403:6111:157;;;;;;;;;;;;;;;;;-1:-1:-1;;;403:6111:157;;;;;;;;;;;;-1:-1:-1;403:6111:157;;-1:-1:-1;;403:6111:157;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;403:6111:157;;;;;;-1:-1:-1;403:6111:157;;;;1189:57;;1000;;-1:-1:-1;;;;;403:6111:157;1008:23;1000:57;:::i;:::-;1091:6;;;:::i;:::-;1164:7;403:6111;1164:7;;;:::i;:::-;;403:6111;;;1157:4;403:6111;;-1:-1:-1;;403:6111:157;1132:40;;;403:6111;;;;;;;;;;1132:40;403:6111;;;;1132:40;403:6111;1132:40;403:6111;1122:51;;;1189:57;-1:-1:-1;;;;;1218:9:157;;:::i;:::-;403:6111;;;;1189:57;;;;;;:::i;:::-;;;;403:6111;;;;;;;;;;;;;;;;;-1:-1:-1;;403:6111:157;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;403:6111:157;;;;;;5569:1;;5478:81;-1:-1:-1;;;;;5500:8:157;;:::i;5478:81::-;403:6111;;5569:1;;:::i;:::-;403:6111;;;;;;;;;;;;;-1:-1:-1;;403:6111:157;;;;;;:::i;:::-;;;;;;;;;;5569:1;403:6111;;;;;;:::i;:::-;;;;:::i;:::-;;5478:81;-1:-1:-1;;;;;5500:8:157;;:::i;5478:81::-;403:6111;;5569:1;:::i;403:6111::-;;;;;;;;;;;;;;568:20;403:6111;;;;;;;;;;;;;;;;;;;;604:22;403:6111;;;-1:-1:-1;;;;;403:6111:157;;;;;;;;;;;;;;;-1:-1:-1;;403:6111:157;;;;;;1635:57;;-1:-1:-1;;;;;403:6111:157;1643:23;1635:57;:::i;:::-;-1:-1:-1;;;;;1743:9:157;;:::i;:::-;403:6111;1708:45;403:6111;;;;;;;1708:45;403:6111;;;;;;;;;-1:-1:-1;;403:6111:157;;;;;;5478:81;-1:-1:-1;;;;;5500:8:157;;:::i;5478:81::-;403:6111;;;2409:25;2405:123;;403:6111;;;2405:123;403:6111;;2494:23;403:6111;;;;;;;;2494:23;403:6111;;;-1:-1:-1;403:6111:157;;-1:-1:-1;;403:6111:157;;;;;;-1:-1:-1;;;;;403:6111:157;;;;;;;;1955:39;403:6111;1932:6;403:6111;;1841:57;403:6111;;;;;1849:9;403:6111;;1849:23;1841:57;:::i;:::-;1932:6;:::i;:::-;403:6111;;;;;1955:39;403:6111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;403:6111:157;;;;;;:::i;:::-;5478:81;-1:-1:-1;;;;;5500:8:157;;:::i;5478:81::-;4604:5;403:6111;;;4686:7;403:6111;-1:-1:-1;;;;;403:6111:157;;;3743:569:44;;;;;;;;;403:6111:157;3743:569:44;;;;403:6111:157;3743:569:44;403:6111:157;;;;;;;3743:569:44;;403:6111:157;3743:569:44;403:6111:157;4325:22:44;;4321:85;;4686:7:157;403:6111;;-1:-1:-1;;;;;;403:6111:157;;;;;4825:36;;;;;403:6111;;;;;;;;;;;;;4825:36;;;;;;;;;;403:6111;;;4825:36;;;;403:6111;4825:36;;:::i;:::-;403:6111;4825:36;403:6111;;;;;;;;;4825:36;403:6111;;;4321:85:44;4370:25;;;403:6111:157;4370:25:44;403:6111:157;;4370:25:44;403:6111:157;;;-1:-1:-1;;;403:6111:157;;;;;;;;;;;;;;;;;-1:-1:-1;;;403:6111:157;;;;;;;;;;-1:-1:-1;;;403:6111:157;;;;;;;;;;;;;;;;;-1:-1:-1;;;403:6111:157;;;;;;;;;;;;;-1:-1:-1;;403:6111:157;;;;;;;;-1:-1:-1;;;;;403:6111:157;;;;;;;;;;;-1:-1:-1;;403:6111:157;;;;;;;;;;;;1500:63;403:6111;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;1386:57;;-1:-1:-1;;;;;403:6111:157;1394:23;1386:57;:::i;:::-;1477:6;;;:::i;:::-;1500:63;-1:-1:-1;;;;;1535:9:157;;:::i;:::-;403:6111;;;;;;;;;1500:63;;:::i;:::-;;;;403:6111;;;;;;;-1:-1:-1;;403:6111:157;;;;4462:30;403:6111;;;:::i;:::-;4440:5;403:6111;;:::i;:::-;;;;5478:81;-1:-1:-1;;;;;5500:8:157;;:::i;5478:81::-;4440:5;:::i;:::-;-1:-1:-1;;;;;403:6111:157;;;;;;;;;;;;4462:30;403:6111;;;;;;;-1:-1:-1;;403:6111:157;;;;;;:::i;:::-;5478:81;-1:-1:-1;;;;;5500:8:157;;:::i;5478:81::-;403:6111;;;;;;;;;2698:22;403:6111;;;2698:22;403:6111;2698:22;;:::i;403:6111::-;;;;-1:-1:-1;;;;;403:6111:157;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;403:6111:157;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;403:6111:157;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;403:6111:157;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;403:6111:157;;;;;;;;;;;;;;;;;-1:-1:-1;;;403:6111:157;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;403:6111:157;;;;;;;;;;;;-1:-1:-1;;;403:6111:157;;;;;;;;;;;;;;;;;;;;-1:-1:-1;403:6111:157;;;;;;;;-1:-1:-1;;403:6111:157;;;;:::o;:::-;;;;;;-1:-1:-1;;;;;403:6111:157;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;1132:40;;403:6111;;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;403:6111:157;;;;;-1:-1:-1;403:6111:157;;;;;;;;;;;-1:-1:-1;;;;;403:6111:157;;;;;;;:::o;2007:267::-;403:6111;;-1:-1:-1;;;;;403:6111:157;2064:23;;403:6111;;2159:31;;;-1:-1:-1;;;;;2167:8:157;;:::i;:::-;403:6111;;;;;;;;;;2159:31;;;;;;;;;2146:70;2159:31;;;-1:-1:-1;2159:31:157;;;2007:267;-1:-1:-1;403:6111:157;;-1:-1:-1;;;2146:70:157;;2210:4;2159:31;2146:70;;403:6111;;;;;;-1:-1:-1;;;;;403:6111:157;2146:70;;;;;;;-1:-1:-1;2146:70:157;;;2007:267;403:6111;-1:-1:-1;;;;;2250:16:157;403:6111;;2250:16;;:::i;:::-;2007:267::o;2146:70::-;;;2159:31;2146:70;;2159:31;2146:70;;;;;;2159:31;2146:70;;;:::i;:::-;;;403:6111;;;;;;;-1:-1:-1;;;;;2146:70:157;;;;;-1:-1:-1;2146:70:157;;2159:31;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;403:6111;;;-1:-1:-1;;;403:6111:157;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1132:40;403:6111;;-1:-1:-1;;403:6111:157;;;;;:::i;:::-;;;;-1:-1:-1;403:6111:157;;;;:::o;:::-;;;:::o;2766:754::-;2983:7;403:6111;2766:754;;;;-1:-1:-1;;;;;403:6111:157;;2979:479;;2766:754;403:6111;3473:40;403:6111;3473:40;403:6111;;;;;;;;;;;;3473:40;;;:::i;:::-;;;;2766:754::o;2979:479::-;-1:-1:-1;403:6111:157;;;;3060:94;;;;3083:37;;;;3060:94;;;;;;403:6111;;;;;;;;;;;;;;;;;3060:94;403:6111;;;;;;;;:::i;:::-;-1:-1:-1;;;;;403:6111:157;;;;;;3060:94;1132:40;;3060:94;;;;;;:::i;:::-;3280:36;;3298:7;3280:36;;;:::i;:::-;;3331:117;;2979:479;;;3331:117;3427:7;;;;;:::o;3526:775::-;;;;;3716:5;;;;:::i;:::-;3737:7;403:6111;-1:-1:-1;;;;;403:6111:157;;;3733:505;;3526:775;403:6111;;4253:41;403:6111;-1:-1:-1;;;;;403:6111:157;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;;403:6111:157;;4253:41;;;3526:775::o;3733:505::-;403:6111;;-1:-1:-1;;;3798:138:157;;;;;;-1:-1:-1;;;;;403:6111:157;;;3798:138;;;403:6111;;;;;;-1:-1:-1;;;;403:6111:157;;-1:-1:-1;;3798:138:157;403:6111;;-1:-1:-1;;;;;403:6111:157;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;;403:6111:157;;;;;;3798:138;-1:-1:-1;;3798:138:157;;;;;;:::i;:::-;4062:36;;4080:7;4062:36;;;:::i;:::-;;4113:115;;3733:505;;;;403:6111;-1:-1:-1;;403:6111:157;;;;;;;:::o;:::-;;;;;;;;;;;;666:108;403:6111;;-1:-1:-1;;;731:36:157;;;403:6111;731:36;403:6111;752:4;731:36;;;;;;;-1:-1:-1;731:36:157;;;724:43;666:108;:::o;731:36::-;;;;;;;;;;;;;;:::i;:::-;666:108;:::o;403:6111::-;;;;;;;;;;;;;;;;;;:::o;6196:316::-;6312:31;;;-1:-1:-1;;;;;6320:8:157;;:::i;:::-;403:6111;;;;;;;;;;6312:31;;;;;;;;;-1:-1:-1;6312:31:157;;;6196:316;403:6111;-1:-1:-1;;;;;403:6111:157;6359:10;6355:151;;6196:316;;;:::o;6355:151::-;403:6111;;-1:-1:-1;;;6400:40:157;;-1:-1:-1;;;;;403:6111:157;;;6312:31;6400:40;;403:6111;;;;;;;;;6312:31;;403:6111;;6400:40;;403:6111;;-1:-1:-1;;403:6111:157;6400:40;;;;;;;-1:-1:-1;6400:40:157;;;6355:151;403:6111;;;;6196:316::o;403:6111::-;;;-1:-1:-1;;;403:6111:157;;6312:31;;403:6111;;;;;;;;-1:-1:-1;;;6400:40:157;403:6111;;;;;;6400:40;;;;6312:31;6400:40;6312:31;6400:40;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;6312:31;-1:-1:-1;;;;;6312:31:157;;;;;;;;;;;;;;;:::i;:::-;;;;;5805:385;-1:-1:-1;;;;;403:6111:157;5875:11;5871:313;;5805:385;:::o;5871:313::-;-1:-1:-1;;;;;5926:8:157;;:::i;:::-;403:6111;;-1:-1:-1;;;5989:36:157;;403:6111;;5989:36;403:6111;5989:36;403:6111;;5989:36;;;;;;;;;6056:58;5989:36;5885:1;5989:36;;;5871:313;6081:9;5885:1;6081:9;;:::i;:::-;403:6111;;-1:-1:-1;;;6056:58:157;;-1:-1:-1;;;;;403:6111:157;;;5989:36;6056:58;;403:6111;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:6111:157;6056:58;;;;;;;5885:1;6056:58;;;5871:313;403:6111;;;;5805:385::o;403:6111::-;;;-1:-1:-1;;;403:6111:157;;5989:36;;403:6111;;;;;;;;;;;;;6056:58;;403:6111;6056:58;;;;5989:36;6056:58;5989:36;6056:58;;;;;;;:::i;:::-;;;;5989:36;;;;;;;;;;;;;;:::i;:::-;;;;5617:182;5695:7;403:6111;5681:10;-1:-1:-1;;;;;403:6111:157;;;5681:21;403:6111;;5725:9;5718:16;:::o;5677:116::-;5681:10;5765:17;:::o","linkReferences":{}},"methodIdentifiers":{"claimValue(bytes32)":"91d5a64c","createDecoder(address,bytes32)":"5b1b84f7","decoder()":"9cb33005","executableBalanceTopUp(uint128)":"704ed542","inheritor()":"36a52a18","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","sendValueToInheritor()":"60302d24","setInheritor(address)":"12b22256","stateHash()":"701da98e","updateState(bytes32)":"8ea59e1d","valueClaimed(bytes32,address,uint128)":"14503e51"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"FailedDeployment\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"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\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"createDecoder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decoder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"_value\",\"type\":\"uint128\"}],\"name\":\"executableBalanceTopUp\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inheritor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"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\":\"sendValueToInheritor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_inheritor\",\"type\":\"address\"}],\"name\":\"setInheritor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":{\"errors\":{\"FailedDeployment()\":[{\"details\":\"The deployment failed.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}]},\"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/\",\":symbiotic-core/=lib/symbiotic-core/\"],\"viaIR\":true},\"sources\":{\"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/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\":\"0x78105f388516b83fcb68f7c006c5d9d685bc8ad7fadcdfa56c0919efa79a6373\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://3a8ab1264895b4f5c8fd3aa18524016c4e88712a50e0a9935f421e13f3e09601\",\"dweb:/ipfs/QmXyVe9k37fDFWmrfjYHisxmqnEynevYo88uVrnRAmYW6L\"]},\"src/IMirrorDecoder.sol\":{\"keccak256\":\"0x95bfe42461bd03e726f894679f4b4133034a405672fe8343c3343d0964cf9072\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://a0907d84596ed62b9ea222fd841fc0259e87b17dd0b5af3f6d0d8a8f4726994d\",\"dweb:/ipfs/QmTkumKh7DBJNXrark6NBqBxCtnYmbRMGYkRyxxzpW9wKr\"]},\"src/IMirrorProxy.sol\":{\"keccak256\":\"0x56448b8905cc408f5656d47c893f3cda6623992ef1ba6a2e0a1be06b04c0b570\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://7d148123c4f51abce8b8e92c45830dd7de3829e228f37fd2e9093616dd7b2469\",\"dweb:/ipfs/QmTkohe2uFVsJiCKdu7QBFYff6L3tzvE7rTjnRhnjdgEmG\"]},\"src/IRouter.sol\":{\"keccak256\":\"0xdbae96165e93f374f6b0ab185c3ce61e5eed76cce317349eda4aab002f3998c7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://275140952f5612b545caf34e66af939a42a6156ddf9ae312192e9dd3010c8be2\",\"dweb:/ipfs/QmZYtSdHt5GkL5GT4gqNsuoryZ1whB1AQfmSmoNCHhicQc\"]},\"src/IWrappedVara.sol\":{\"keccak256\":\"0xfc2f9955b1d8f74a98a087b490a03b86933c423eb58b840f1e3eb4cd58eac175\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://5942f66657786636ddb832587404810bf65fc757e12ddaa07393a0b3f885840f\",\"dweb:/ipfs/QmTEP15EF9zrA7bCj8cesNd8QyUPHM3XgtKJecCUjsA5Jf\"]},\"src/Mirror.sol\":{\"keccak256\":\"0x0267b86e843457670a1bfde7690c19f449383eab961b6127dda5f8e4fe5a1d83\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://13361caf3d945b1fb9117e8fc360059b28a5764f1811d8f53f96fb1f8a9d352f\",\"dweb:/ipfs/QmWhAnGpkpVohUWxkJSJm5PmNZVS8WpGQCfwkqTG2TXd1g\"]},\"src/libraries/Gear.sol\":{\"keccak256\":\"0xa543913342b4408d07fe4d884280b5c1d2430e8386713e9b6e1a5924e3e2bfbc\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://9e466d986795dab2d942984fcbf03e8e8995cd17e4221f1dfca715af091d03ec\",\"dweb:/ipfs/QmWo16RoqKERSYornA8qPqL32rYveeEHxiHmDHongS6uzy\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"FailedDeployment"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"InsufficientBalance"},{"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":"address","name":"implementation","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"createDecoder"},{"inputs":[],"stateMutability":"view","type":"function","name":"decoder","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint128","name":"_value","type":"uint128"}],"stateMutability":"payable","type":"function","name":"executableBalanceTopUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"inheritor","outputs":[{"internalType":"address","name":"","type":"address"}]},{"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":"nonpayable","type":"function","name":"sendValueToInheritor"},{"inputs":[{"internalType":"address","name":"_inheritor","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setInheritor"},{"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/","symbiotic-core/=lib/symbiotic-core/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/Mirror.sol":"Mirror"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"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/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":"0x78105f388516b83fcb68f7c006c5d9d685bc8ad7fadcdfa56c0919efa79a6373","urls":["bzz-raw://3a8ab1264895b4f5c8fd3aa18524016c4e88712a50e0a9935f421e13f3e09601","dweb:/ipfs/QmXyVe9k37fDFWmrfjYHisxmqnEynevYo88uVrnRAmYW6L"],"license":"UNLICENSED"},"src/IMirrorDecoder.sol":{"keccak256":"0x95bfe42461bd03e726f894679f4b4133034a405672fe8343c3343d0964cf9072","urls":["bzz-raw://a0907d84596ed62b9ea222fd841fc0259e87b17dd0b5af3f6d0d8a8f4726994d","dweb:/ipfs/QmTkumKh7DBJNXrark6NBqBxCtnYmbRMGYkRyxxzpW9wKr"],"license":"UNLICENSED"},"src/IMirrorProxy.sol":{"keccak256":"0x56448b8905cc408f5656d47c893f3cda6623992ef1ba6a2e0a1be06b04c0b570","urls":["bzz-raw://7d148123c4f51abce8b8e92c45830dd7de3829e228f37fd2e9093616dd7b2469","dweb:/ipfs/QmTkohe2uFVsJiCKdu7QBFYff6L3tzvE7rTjnRhnjdgEmG"],"license":"UNLICENSED"},"src/IRouter.sol":{"keccak256":"0xdbae96165e93f374f6b0ab185c3ce61e5eed76cce317349eda4aab002f3998c7","urls":["bzz-raw://275140952f5612b545caf34e66af939a42a6156ddf9ae312192e9dd3010c8be2","dweb:/ipfs/QmZYtSdHt5GkL5GT4gqNsuoryZ1whB1AQfmSmoNCHhicQc"],"license":"UNLICENSED"},"src/IWrappedVara.sol":{"keccak256":"0xfc2f9955b1d8f74a98a087b490a03b86933c423eb58b840f1e3eb4cd58eac175","urls":["bzz-raw://5942f66657786636ddb832587404810bf65fc757e12ddaa07393a0b3f885840f","dweb:/ipfs/QmTEP15EF9zrA7bCj8cesNd8QyUPHM3XgtKJecCUjsA5Jf"],"license":"UNLICENSED"},"src/Mirror.sol":{"keccak256":"0x0267b86e843457670a1bfde7690c19f449383eab961b6127dda5f8e4fe5a1d83","urls":["bzz-raw://13361caf3d945b1fb9117e8fc360059b28a5764f1811d8f53f96fb1f8a9d352f","dweb:/ipfs/QmWhAnGpkpVohUWxkJSJm5PmNZVS8WpGQCfwkqTG2TXd1g"],"license":"UNLICENSED"},"src/libraries/Gear.sol":{"keccak256":"0xa543913342b4408d07fe4d884280b5c1d2430e8386713e9b6e1a5924e3e2bfbc","urls":["bzz-raw://9e466d986795dab2d942984fcbf03e8e8995cd17e4221f1dfca715af091d03ec","dweb:/ipfs/QmWo16RoqKERSYornA8qPqL32rYveeEHxiHmDHongS6uzy"],"license":"UNLICENSED"}},"version":1},"storageLayout":{"storage":[{"astId":74655,"contract":"src/Mirror.sol:Mirror","label":"stateHash","offset":0,"slot":"0","type":"t_bytes32"},{"astId":74657,"contract":"src/Mirror.sol:Mirror","label":"inheritor","offset":0,"slot":"1","type":"t_address"},{"astId":74659,"contract":"src/Mirror.sol:Mirror","label":"nonce","offset":0,"slot":"2","type":"t_uint256"},{"astId":74661,"contract":"src/Mirror.sol:Mirror","label":"decoder","offset":0,"slot":"3","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"ast":{"absolutePath":"src/Mirror.sol","id":75222,"exportedSymbols":{"Clones":[41840],"IMirror":[73603],"IMirrorDecoder":[73638],"IMirrorProxy":[73646],"IRouter":[73896],"IWrappedVara":[73907],"Mirror":[75221]},"nodeType":"SourceUnit","src":"39:6476:157","nodes":[{"id":74639,"nodeType":"PragmaDirective","src":"39:24:157","nodes":[],"literals":["solidity","^","0.8",".26"]},{"id":74641,"nodeType":"ImportDirective","src":"65:48:157","nodes":[],"absolutePath":"src/IMirrorProxy.sol","file":"./IMirrorProxy.sol","nameLocation":"-1:-1:-1","scope":75222,"sourceUnit":73647,"symbolAliases":[{"foreign":{"id":74640,"name":"IMirrorProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73646,"src":"73:12:157","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":74643,"nodeType":"ImportDirective","src":"114:38:157","nodes":[],"absolutePath":"src/IMirror.sol","file":"./IMirror.sol","nameLocation":"-1:-1:-1","scope":75222,"sourceUnit":73604,"symbolAliases":[{"foreign":{"id":74642,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73603,"src":"122:7:157","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":74645,"nodeType":"ImportDirective","src":"153:38:157","nodes":[],"absolutePath":"src/IRouter.sol","file":"./IRouter.sol","nameLocation":"-1:-1:-1","scope":75222,"sourceUnit":73897,"symbolAliases":[{"foreign":{"id":74644,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73896,"src":"161:7:157","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":74647,"nodeType":"ImportDirective","src":"192:48:157","nodes":[],"absolutePath":"src/IWrappedVara.sol","file":"./IWrappedVara.sol","nameLocation":"-1:-1:-1","scope":75222,"sourceUnit":73908,"symbolAliases":[{"foreign":{"id":74646,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73907,"src":"200:12:157","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":74649,"nodeType":"ImportDirective","src":"241:52:157","nodes":[],"absolutePath":"src/IMirrorDecoder.sol","file":"./IMirrorDecoder.sol","nameLocation":"-1:-1:-1","scope":75222,"sourceUnit":73639,"symbolAliases":[{"foreign":{"id":74648,"name":"IMirrorDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73638,"src":"249:14:157","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":74651,"nodeType":"ImportDirective","src":"294:64:157","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/Clones.sol","file":"@openzeppelin/contracts/proxy/Clones.sol","nameLocation":"-1:-1:-1","scope":75222,"sourceUnit":41841,"symbolAliases":[{"foreign":{"id":74650,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41840,"src":"302:6:157","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75221,"nodeType":"ContractDefinition","src":"403:6111:157","nodes":[{"id":74655,"nodeType":"VariableDeclaration","src":"436:24:157","nodes":[],"baseFunctions":[73490],"constant":false,"functionSelector":"701da98e","mutability":"mutable","name":"stateHash","nameLocation":"451:9:157","scope":75221,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":74654,"name":"bytes32","nodeType":"ElementaryTypeName","src":"436:7:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"id":74657,"nodeType":"VariableDeclaration","src":"466:24:157","nodes":[],"baseFunctions":[73495],"constant":false,"functionSelector":"36a52a18","mutability":"mutable","name":"inheritor","nameLocation":"481:9:157","scope":75221,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":74656,"name":"address","nodeType":"ElementaryTypeName","src":"466:7:157","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":74659,"nodeType":"VariableDeclaration","src":"568:20:157","nodes":[],"baseFunctions":[73500],"constant":false,"functionSelector":"affed0e0","mutability":"mutable","name":"nonce","nameLocation":"583:5:157","scope":75221,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74658,"name":"uint256","nodeType":"ElementaryTypeName","src":"568:7:157","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":74661,"nodeType":"VariableDeclaration","src":"604:22:157","nodes":[],"baseFunctions":[73510],"constant":false,"functionSelector":"9cb33005","mutability":"mutable","name":"decoder","nameLocation":"619:7:157","scope":75221,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":74660,"name":"address","nodeType":"ElementaryTypeName","src":"604:7:157","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":74676,"nodeType":"FunctionDefinition","src":"666:108:157","nodes":[],"body":{"id":74675,"nodeType":"Block","src":"714:60:157","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[{"id":74669,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"752:4:157","typeDescriptions":{"typeIdentifier":"t_contract$_Mirror_$75221","typeString":"contract Mirror"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Mirror_$75221","typeString":"contract Mirror"}],"id":74668,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"744:7:157","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":74667,"name":"address","nodeType":"ElementaryTypeName","src":"744:7:157","typeDescriptions":{}}},"id":74670,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"744:13:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":74666,"name":"IMirrorProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73646,"src":"731:12:157","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirrorProxy_$73646_$","typeString":"type(contract IMirrorProxy)"}},"id":74671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"731:27:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirrorProxy_$73646","typeString":"contract IMirrorProxy"}},"id":74672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"759:6:157","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":73645,"src":"731:34:157","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":74673,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"731:36:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":74665,"id":74674,"nodeType":"Return","src":"724:43:157"}]},"baseFunctions":[73505],"functionSelector":"f887ea40","implemented":true,"kind":"function","modifiers":[],"name":"router","nameLocation":"675:6:157","parameters":{"id":74662,"nodeType":"ParameterList","parameters":[],"src":"681:2:157"},"returnParameters":{"id":74665,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74664,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":74676,"src":"705:7:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":74663,"name":"address","nodeType":"ElementaryTypeName","src":"705:7:157","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"704:9:157"},"scope":75221,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":74724,"nodeType":"FunctionDefinition","src":"893:380:157","nodes":[],"body":{"id":74723,"nodeType":"Block","src":"990:283:157","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":74691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":74686,"name":"inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74657,"src":"1008:9:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":74689,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1029:1:157","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":74688,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1021:7:157","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":74687,"name":"address","nodeType":"ElementaryTypeName","src":"1021:7:157","typeDescriptions":{}}},"id":74690,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1021:10:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1008:23:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"70726f6772616d206973207465726d696e61746564","id":74692,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1033:23:157","typeDescriptions":{"typeIdentifier":"t_stringliteral_b99e931e301d9bf46f7569c6df99f13b4ced53db9be4aedb00fc4bbd41b4ec22","typeString":"literal_string \"program is terminated\""},"value":"program is terminated"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b99e931e301d9bf46f7569c6df99f13b4ced53db9be4aedb00fc4bbd41b4ec22","typeString":"literal_string \"program is terminated\""}],"id":74685,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1000:7:157","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":74693,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1000:57:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74694,"nodeType":"ExpressionStatement","src":"1000:57:157"},{"expression":{"arguments":[{"id":74696,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74680,"src":"1091:6:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":74695,"name":"_retrieveValueToRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75182,"src":"1068:22:157","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":74697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1068:30:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74698,"nodeType":"ExpressionStatement","src":"1068:30:157"},{"assignments":[74700],"declarations":[{"constant":false,"id":74700,"mutability":"mutable","name":"id","nameLocation":"1117:2:157","nodeType":"VariableDeclaration","scope":74723,"src":"1109:10:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":74699,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1109:7:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":74712,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"id":74706,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1157:4:157","typeDescriptions":{"typeIdentifier":"t_contract$_Mirror_$75221","typeString":"contract Mirror"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Mirror_$75221","typeString":"contract Mirror"}],"id":74705,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1149:7:157","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":74704,"name":"address","nodeType":"ElementaryTypeName","src":"1149:7:157","typeDescriptions":{}}},"id":74707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1149:13:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":74709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1164:7:157","subExpression":{"id":74708,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74659,"src":"1164:5:157","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":74702,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1132:3:157","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":74703,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1136:12:157","memberName":"encodePacked","nodeType":"MemberAccess","src":"1132:16:157","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":74710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1132:40:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":74701,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1122:9:157","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":74711,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1122:51:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"1109:64:157"},{"eventCall":{"arguments":[{"id":74714,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74700,"src":"1214:2:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":74715,"name":"_source","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75140,"src":"1218:7:157","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":74716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1218:9:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":74717,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74678,"src":"1229:8:157","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":74718,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74680,"src":"1239:6:157","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":74713,"name":"MessageQueueingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73433,"src":"1189:24:157","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":74719,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1189:57:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74720,"nodeType":"EmitStatement","src":"1184:62:157"},{"expression":{"id":74721,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74700,"src":"1264:2:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":74684,"id":74722,"nodeType":"Return","src":"1257:9:157"}]},"baseFunctions":[73519],"functionSelector":"d5624222","implemented":true,"kind":"function","modifiers":[],"name":"sendMessage","nameLocation":"902:11:157","parameters":{"id":74681,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74678,"mutability":"mutable","name":"_payload","nameLocation":"929:8:157","nodeType":"VariableDeclaration","scope":74724,"src":"914:23:157","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":74677,"name":"bytes","nodeType":"ElementaryTypeName","src":"914:5:157","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":74680,"mutability":"mutable","name":"_value","nameLocation":"947:6:157","nodeType":"VariableDeclaration","scope":74724,"src":"939:14:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":74679,"name":"uint128","nodeType":"ElementaryTypeName","src":"939:7:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"913:41:157"},"returnParameters":{"id":74684,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74683,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":74724,"src":"981:7:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":74682,"name":"bytes32","nodeType":"ElementaryTypeName","src":"981:7:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"980:9:157"},"scope":75221,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":74756,"nodeType":"FunctionDefinition","src":"1279:291:157","nodes":[],"body":{"id":74755,"nodeType":"Block","src":"1376:194:157","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":74739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":74734,"name":"inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74657,"src":"1394:9:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":74737,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1415:1:157","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":74736,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1407:7:157","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":74735,"name":"address","nodeType":"ElementaryTypeName","src":"1407:7:157","typeDescriptions":{}}},"id":74738,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1407:10:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1394:23:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"70726f6772616d206973207465726d696e61746564","id":74740,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1419:23:157","typeDescriptions":{"typeIdentifier":"t_stringliteral_b99e931e301d9bf46f7569c6df99f13b4ced53db9be4aedb00fc4bbd41b4ec22","typeString":"literal_string \"program is terminated\""},"value":"program is terminated"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b99e931e301d9bf46f7569c6df99f13b4ced53db9be4aedb00fc4bbd41b4ec22","typeString":"literal_string \"program is terminated\""}],"id":74733,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1386:7:157","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":74741,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1386:57:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74742,"nodeType":"ExpressionStatement","src":"1386:57:157"},{"expression":{"arguments":[{"id":74744,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74730,"src":"1477:6:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":74743,"name":"_retrieveValueToRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75182,"src":"1454:22:157","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":74745,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1454:30:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74746,"nodeType":"ExpressionStatement","src":"1454:30:157"},{"eventCall":{"arguments":[{"id":74748,"name":"_repliedTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74726,"src":"1523:10:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":74749,"name":"_source","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75140,"src":"1535:7:157","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":74750,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1535:9:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":74751,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74728,"src":"1546:8:157","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":74752,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74730,"src":"1556:6:157","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":74747,"name":"ReplyQueueingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73444,"src":"1500:22:157","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":74753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1500:63:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74754,"nodeType":"EmitStatement","src":"1495:68:157"}]},"baseFunctions":[73528],"functionSelector":"29336f39","implemented":true,"kind":"function","modifiers":[],"name":"sendReply","nameLocation":"1288:9:157","parameters":{"id":74731,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74726,"mutability":"mutable","name":"_repliedTo","nameLocation":"1306:10:157","nodeType":"VariableDeclaration","scope":74756,"src":"1298:18:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":74725,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1298:7:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":74728,"mutability":"mutable","name":"_payload","nameLocation":"1333:8:157","nodeType":"VariableDeclaration","scope":74756,"src":"1318:23:157","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":74727,"name":"bytes","nodeType":"ElementaryTypeName","src":"1318:5:157","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":74730,"mutability":"mutable","name":"_value","nameLocation":"1351:6:157","nodeType":"VariableDeclaration","scope":74756,"src":"1343:14:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":74729,"name":"uint128","nodeType":"ElementaryTypeName","src":"1343:7:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1297:61:157"},"returnParameters":{"id":74732,"nodeType":"ParameterList","parameters":[],"src":"1376:0:157"},"scope":75221,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":74778,"nodeType":"FunctionDefinition","src":"1576:184:157","nodes":[],"body":{"id":74777,"nodeType":"Block","src":"1625:135:157","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":74767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":74762,"name":"inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74657,"src":"1643:9:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":74765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1664:1:157","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":74764,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1656:7:157","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":74763,"name":"address","nodeType":"ElementaryTypeName","src":"1656:7:157","typeDescriptions":{}}},"id":74766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1656:10:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1643:23:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"70726f6772616d206973207465726d696e61746564","id":74768,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1668:23:157","typeDescriptions":{"typeIdentifier":"t_stringliteral_b99e931e301d9bf46f7569c6df99f13b4ced53db9be4aedb00fc4bbd41b4ec22","typeString":"literal_string \"program is terminated\""},"value":"program is terminated"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b99e931e301d9bf46f7569c6df99f13b4ced53db9be4aedb00fc4bbd41b4ec22","typeString":"literal_string \"program is terminated\""}],"id":74761,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1635:7:157","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":74769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1635:57:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74770,"nodeType":"ExpressionStatement","src":"1635:57:157"},{"eventCall":{"arguments":[{"id":74772,"name":"_claimedId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74758,"src":"1731:10:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":74773,"name":"_source","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75140,"src":"1743:7:157","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":74774,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1743:9:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":74771,"name":"ValueClaimingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73451,"src":"1708:22:157","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":74775,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1708:45:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74776,"nodeType":"EmitStatement","src":"1703:50:157"}]},"baseFunctions":[73533],"functionSelector":"91d5a64c","implemented":true,"kind":"function","modifiers":[],"name":"claimValue","nameLocation":"1585:10:157","parameters":{"id":74759,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74758,"mutability":"mutable","name":"_claimedId","nameLocation":"1604:10:157","nodeType":"VariableDeclaration","scope":74778,"src":"1596:18:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":74757,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1596:7:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1595:20:157"},"returnParameters":{"id":74760,"nodeType":"ParameterList","parameters":[],"src":"1625:0:157"},"scope":75221,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":74802,"nodeType":"FunctionDefinition","src":"1766:235:157","nodes":[],"body":{"id":74801,"nodeType":"Block","src":"1831:170:157","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":74789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":74784,"name":"inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74657,"src":"1849:9:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":74787,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1870:1:157","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":74786,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1862:7:157","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":74785,"name":"address","nodeType":"ElementaryTypeName","src":"1862:7:157","typeDescriptions":{}}},"id":74788,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1862:10:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1849:23:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"70726f6772616d206973207465726d696e61746564","id":74790,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1874:23:157","typeDescriptions":{"typeIdentifier":"t_stringliteral_b99e931e301d9bf46f7569c6df99f13b4ced53db9be4aedb00fc4bbd41b4ec22","typeString":"literal_string \"program is terminated\""},"value":"program is terminated"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b99e931e301d9bf46f7569c6df99f13b4ced53db9be4aedb00fc4bbd41b4ec22","typeString":"literal_string \"program is terminated\""}],"id":74783,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1841:7:157","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":74791,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1841:57:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74792,"nodeType":"ExpressionStatement","src":"1841:57:157"},{"expression":{"arguments":[{"id":74794,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74780,"src":"1932:6:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":74793,"name":"_retrieveValueToRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75182,"src":"1909:22:157","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":74795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1909:30:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74796,"nodeType":"ExpressionStatement","src":"1909:30:157"},{"eventCall":{"arguments":[{"id":74798,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74780,"src":"1987:6:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":74797,"name":"ExecutableBalanceTopUpRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73456,"src":"1955:31:157","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":74799,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1955:39:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74800,"nodeType":"EmitStatement","src":"1950:44:157"}]},"baseFunctions":[73538],"functionSelector":"704ed542","implemented":true,"kind":"function","modifiers":[],"name":"executableBalanceTopUp","nameLocation":"1775:22:157","parameters":{"id":74781,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74780,"mutability":"mutable","name":"_value","nameLocation":"1806:6:157","nodeType":"VariableDeclaration","scope":74802,"src":"1798:14:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":74779,"name":"uint128","nodeType":"ElementaryTypeName","src":"1798:7:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1797:16:157"},"returnParameters":{"id":74782,"nodeType":"ParameterList","parameters":[],"src":"1831:0:157"},"scope":75221,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":74841,"nodeType":"FunctionDefinition","src":"2007:267:157","nodes":[],"body":{"id":74840,"nodeType":"Block","src":"2046:228:157","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":74811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":74806,"name":"inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74657,"src":"2064:9:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":74809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2085:1:157","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":74808,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2077:7:157","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":74807,"name":"address","nodeType":"ElementaryTypeName","src":"2077:7:157","typeDescriptions":{}}},"id":74810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2077:10:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2064:23:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"70726f6772616d206973206e6f74207465726d696e61746564","id":74812,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2089:27:157","typeDescriptions":{"typeIdentifier":"t_stringliteral_645ea9267b04b6ac53df8eea2c448cbffac59a494197543c99a5f296932bd588","typeString":"literal_string \"program is not terminated\""},"value":"program is not terminated"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_645ea9267b04b6ac53df8eea2c448cbffac59a494197543c99a5f296932bd588","typeString":"literal_string \"program is not terminated\""}],"id":74805,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2056:7:157","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":74813,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2056:61:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74814,"nodeType":"ExpressionStatement","src":"2056:61:157"},{"assignments":[74816],"declarations":[{"constant":false,"id":74816,"mutability":"mutable","name":"balance","nameLocation":"2136:7:157","nodeType":"VariableDeclaration","scope":74840,"src":"2128:15:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74815,"name":"uint256","nodeType":"ElementaryTypeName","src":"2128:7:157","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":74831,"initialValue":{"arguments":[{"arguments":[{"id":74828,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2210:4:157","typeDescriptions":{"typeIdentifier":"t_contract$_Mirror_$75221","typeString":"contract Mirror"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Mirror_$75221","typeString":"contract Mirror"}],"id":74827,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2202:7:157","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":74826,"name":"address","nodeType":"ElementaryTypeName","src":"2202:7:157","typeDescriptions":{}}},"id":74829,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2202:13:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":74819,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74676,"src":"2167:6:157","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":74820,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2167:8:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":74818,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73896,"src":"2159:7:157","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRouter_$73896_$","typeString":"type(contract IRouter)"}},"id":74821,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2159:17:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$73896","typeString":"contract IRouter"}},"id":74822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2177:11:157","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":73741,"src":"2159:29:157","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":74823,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2159:31:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":74817,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73907,"src":"2146:12:157","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$73907_$","typeString":"type(contract IWrappedVara)"}},"id":74824,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2146:45:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$73907","typeString":"contract IWrappedVara"}},"id":74825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2192:9:157","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":43097,"src":"2146:55:157","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":74830,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2146:70:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2128:88:157"},{"expression":{"arguments":[{"id":74833,"name":"inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74657,"src":"2239:9:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":74836,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74816,"src":"2258:7:157","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":74835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2250:7:157","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":74834,"name":"uint128","nodeType":"ElementaryTypeName","src":"2250:7:157","typeDescriptions":{}}},"id":74837,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2250:16:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":74832,"name":"_sendValueTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75220,"src":"2226:12:157","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$__$","typeString":"function (address,uint128)"}},"id":74838,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2226:41:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74839,"nodeType":"ExpressionStatement","src":"2226:41:157"}]},"baseFunctions":[73541],"functionSelector":"60302d24","implemented":true,"kind":"function","modifiers":[],"name":"sendValueToInheritor","nameLocation":"2016:20:157","parameters":{"id":74803,"nodeType":"ParameterList","parameters":[],"src":"2036:2:157"},"returnParameters":{"id":74804,"nodeType":"ParameterList","parameters":[],"src":"2046:0:157"},"scope":75221,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":74862,"nodeType":"FunctionDefinition","src":"2332:202:157","nodes":[],"body":{"id":74861,"nodeType":"Block","src":"2395:139:157","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":74850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":74848,"name":"stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74655,"src":"2409:9:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":74849,"name":"newStateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74843,"src":"2422:12:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2409:25:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":74860,"nodeType":"IfStatement","src":"2405:123:157","trueBody":{"id":74859,"nodeType":"Block","src":"2436:92:157","statements":[{"expression":{"id":74853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":74851,"name":"stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74655,"src":"2450:9:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":74852,"name":"newStateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74843,"src":"2462:12:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2450:24:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":74854,"nodeType":"ExpressionStatement","src":"2450:24:157"},{"eventCall":{"arguments":[{"id":74856,"name":"stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74655,"src":"2507:9:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":74855,"name":"StateChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73422,"src":"2494:12:157","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":74857,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2494:23:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74858,"nodeType":"EmitStatement","src":"2489:28:157"}]}}]},"baseFunctions":[73546],"functionSelector":"8ea59e1d","implemented":true,"kind":"function","modifiers":[{"id":74846,"kind":"modifierInvocation","modifierName":{"id":74845,"name":"onlyRouter","nameLocations":["2384:10:157"],"nodeType":"IdentifierPath","referencedDeclaration":75121,"src":"2384:10:157"},"nodeType":"ModifierInvocation","src":"2384:10:157"}],"name":"updateState","nameLocation":"2341:11:157","parameters":{"id":74844,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74843,"mutability":"mutable","name":"newStateHash","nameLocation":"2361:12:157","nodeType":"VariableDeclaration","scope":74862,"src":"2353:20:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":74842,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2353:7:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2352:22:157"},"returnParameters":{"id":74847,"nodeType":"ParameterList","parameters":[],"src":"2395:0:157"},"scope":75221,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":74877,"nodeType":"FunctionDefinition","src":"2626:134:157","nodes":[],"body":{"id":74876,"nodeType":"Block","src":"2688:72:157","nodes":[],"statements":[{"expression":{"id":74871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":74869,"name":"inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74657,"src":"2698:9:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":74870,"name":"_inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74864,"src":"2710:10:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2698:22:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":74872,"nodeType":"ExpressionStatement","src":"2698:22:157"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":74873,"name":"sendValueToInheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74841,"src":"2731:20:157","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":74874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2731:22:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74875,"nodeType":"ExpressionStatement","src":"2731:22:157"}]},"baseFunctions":[73551],"functionSelector":"12b22256","implemented":true,"kind":"function","modifiers":[{"id":74867,"kind":"modifierInvocation","modifierName":{"id":74866,"name":"onlyRouter","nameLocations":["2677:10:157"],"nodeType":"IdentifierPath","referencedDeclaration":75121,"src":"2677:10:157"},"nodeType":"ModifierInvocation","src":"2677:10:157"}],"name":"setInheritor","nameLocation":"2635:12:157","parameters":{"id":74865,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74864,"mutability":"mutable","name":"_inheritor","nameLocation":"2656:10:157","nodeType":"VariableDeclaration","scope":74877,"src":"2648:18:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":74863,"name":"address","nodeType":"ElementaryTypeName","src":"2648:7:157","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2647:20:157"},"returnParameters":{"id":74868,"nodeType":"ParameterList","parameters":[],"src":"2688:0:157"},"scope":75221,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":74932,"nodeType":"FunctionDefinition","src":"2766:754:157","nodes":[],"body":{"id":74931,"nodeType":"Block","src":"2879:641:157","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":74895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":74890,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74661,"src":"2983:7:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":74893,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3002:1:157","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":74892,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2994:7:157","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":74891,"name":"address","nodeType":"ElementaryTypeName","src":"2994:7:157","typeDescriptions":{}}},"id":74894,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2994:10:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2983:21:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":74923,"nodeType":"IfStatement","src":"2979:479:157","trueBody":{"id":74922,"nodeType":"Block","src":"3006:452:157","statements":[{"assignments":[74897],"declarations":[{"constant":false,"id":74897,"mutability":"mutable","name":"callData","nameLocation":"3033:8:157","nodeType":"VariableDeclaration","scope":74922,"src":"3020:21:157","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":74896,"name":"bytes","nodeType":"ElementaryTypeName","src":"3020:5:157","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":74908,"initialValue":{"arguments":[{"expression":{"expression":{"id":74900,"name":"IMirrorDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73638,"src":"3083:14:157","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirrorDecoder_$73638_$","typeString":"type(contract IMirrorDecoder)"}},"id":74901,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3098:13:157","memberName":"onMessageSent","nodeType":"MemberAccess","referencedDeclaration":73624,"src":"3083:28:157","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_bytes32_$_t_address_$_t_bytes_calldata_ptr_$_t_uint128_$returns$__$","typeString":"function IMirrorDecoder.onMessageSent(bytes32,address,bytes calldata,uint128)"}},"id":74902,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3112:8:157","memberName":"selector","nodeType":"MemberAccess","src":"3083:37:157","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":74903,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74879,"src":"3122:2:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":74904,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74881,"src":"3126:11:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":74905,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74883,"src":"3139:7:157","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":74906,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74885,"src":"3148:5:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"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":74898,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3060:3:157","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":74899,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3064:18:157","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"3060:22:157","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":74907,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3060:94:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"3020:134:157"},{"assignments":[74910,null],"declarations":[{"constant":false,"id":74910,"mutability":"mutable","name":"success","nameLocation":"3268:7:157","nodeType":"VariableDeclaration","scope":74922,"src":"3263:12:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":74909,"name":"bool","nodeType":"ElementaryTypeName","src":"3263:4:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":74917,"initialValue":{"arguments":[{"id":74915,"name":"callData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74897,"src":"3307:8:157","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":74911,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74661,"src":"3280:7:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":74912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3288:4:157","memberName":"call","nodeType":"MemberAccess","src":"3280:12:157","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":74914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["gas"],"nodeType":"FunctionCallOptions","options":[{"hexValue":"3530305f303030","id":74913,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3298:7:157","typeDescriptions":{"typeIdentifier":"t_rational_500000_by_1","typeString":"int_const 500000"},"value":"500_000"}],"src":"3280:26:157","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$gas","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":74916,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3280:36:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"3262:54:157"},{"condition":{"id":74918,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74910,"src":"3335:7:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":74921,"nodeType":"IfStatement","src":"3331:117:157","trueBody":{"id":74920,"nodeType":"Block","src":"3344:104:157","statements":[{"functionReturnParameters":74889,"id":74919,"nodeType":"Return","src":"3427:7:157"}]}}]}},{"eventCall":{"arguments":[{"id":74925,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74879,"src":"3481:2:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":74926,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74881,"src":"3485:11:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":74927,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74883,"src":"3498:7:157","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":74928,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74885,"src":"3507:5:157","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":74924,"name":"Message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73467,"src":"3473:7:157","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":74929,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3473:40:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74930,"nodeType":"EmitStatement","src":"3468:45:157"}]},"baseFunctions":[73562],"functionSelector":"c2df6009","implemented":true,"kind":"function","modifiers":[{"id":74888,"kind":"modifierInvocation","modifierName":{"id":74887,"name":"onlyRouter","nameLocations":["2868:10:157"],"nodeType":"IdentifierPath","referencedDeclaration":75121,"src":"2868:10:157"},"nodeType":"ModifierInvocation","src":"2868:10:157"}],"name":"messageSent","nameLocation":"2775:11:157","parameters":{"id":74886,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74879,"mutability":"mutable","name":"id","nameLocation":"2795:2:157","nodeType":"VariableDeclaration","scope":74932,"src":"2787:10:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":74878,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2787:7:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":74881,"mutability":"mutable","name":"destination","nameLocation":"2807:11:157","nodeType":"VariableDeclaration","scope":74932,"src":"2799:19:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":74880,"name":"address","nodeType":"ElementaryTypeName","src":"2799:7:157","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":74883,"mutability":"mutable","name":"payload","nameLocation":"2835:7:157","nodeType":"VariableDeclaration","scope":74932,"src":"2820:22:157","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":74882,"name":"bytes","nodeType":"ElementaryTypeName","src":"2820:5:157","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":74885,"mutability":"mutable","name":"value","nameLocation":"2852:5:157","nodeType":"VariableDeclaration","scope":74932,"src":"2844:13:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":74884,"name":"uint128","nodeType":"ElementaryTypeName","src":"2844:7:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"2786:72:157"},"returnParameters":{"id":74889,"nodeType":"ParameterList","parameters":[],"src":"2879:0:157"},"scope":75221,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":74995,"nodeType":"FunctionDefinition","src":"3526:775:157","nodes":[],"body":{"id":74994,"nodeType":"Block","src":"3680:621:157","nodes":[],"statements":[{"expression":{"arguments":[{"id":74948,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74934,"src":"3703:11:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":74949,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74938,"src":"3716:5:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":74947,"name":"_sendValueTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75220,"src":"3690:12:157","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$__$","typeString":"function (address,uint128)"}},"id":74950,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3690:32:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74951,"nodeType":"ExpressionStatement","src":"3690:32:157"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":74957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":74952,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74661,"src":"3737:7:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":74955,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3756:1:157","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":74954,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3748:7:157","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":74953,"name":"address","nodeType":"ElementaryTypeName","src":"3748:7:157","typeDescriptions":{}}},"id":74956,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3748:10:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3737:21:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":74986,"nodeType":"IfStatement","src":"3733:505:157","trueBody":{"id":74985,"nodeType":"Block","src":"3760:478:157","statements":[{"assignments":[74959],"declarations":[{"constant":false,"id":74959,"mutability":"mutable","name":"callData","nameLocation":"3787:8:157","nodeType":"VariableDeclaration","scope":74985,"src":"3774:21:157","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":74958,"name":"bytes","nodeType":"ElementaryTypeName","src":"3774:5:157","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":74971,"initialValue":{"arguments":[{"expression":{"expression":{"id":74962,"name":"IMirrorDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73638,"src":"3838:14:157","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirrorDecoder_$73638_$","typeString":"type(contract IMirrorDecoder)"}},"id":74963,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3853:11:157","memberName":"onReplySent","nodeType":"MemberAccess","referencedDeclaration":73637,"src":"3838:26:157","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_bytes_calldata_ptr_$_t_uint128_$_t_bytes32_$_t_bytes4_$returns$__$","typeString":"function IMirrorDecoder.onReplySent(address,bytes calldata,uint128,bytes32,bytes4)"}},"id":74964,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3865:8:157","memberName":"selector","nodeType":"MemberAccess","src":"3838:35:157","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":74965,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74934,"src":"3875:11:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":74966,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74936,"src":"3888:7:157","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":74967,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74938,"src":"3897:5:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":74968,"name":"replyTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74940,"src":"3904:7:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":74969,"name":"replyCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74942,"src":"3913:9:157","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"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":74960,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3798:3:157","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":74961,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3802:18:157","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"3798:22:157","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":74970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3798:138:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"3774:162:157"},{"assignments":[74973,null],"declarations":[{"constant":false,"id":74973,"mutability":"mutable","name":"success","nameLocation":"4050:7:157","nodeType":"VariableDeclaration","scope":74985,"src":"4045:12:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":74972,"name":"bool","nodeType":"ElementaryTypeName","src":"4045:4:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":74980,"initialValue":{"arguments":[{"id":74978,"name":"callData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74959,"src":"4089:8:157","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":74974,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74661,"src":"4062:7:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":74975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4070:4:157","memberName":"call","nodeType":"MemberAccess","src":"4062:12:157","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":74977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["gas"],"nodeType":"FunctionCallOptions","options":[{"hexValue":"3530305f303030","id":74976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4080:7:157","typeDescriptions":{"typeIdentifier":"t_rational_500000_by_1","typeString":"int_const 500000"},"value":"500_000"}],"src":"4062:26:157","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$gas","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":74979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4062:36:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"4044:54:157"},{"condition":{"id":74981,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74973,"src":"4117:7:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":74984,"nodeType":"IfStatement","src":"4113:115:157","trueBody":{"id":74983,"nodeType":"Block","src":"4126:102:157","statements":[{"functionReturnParameters":74946,"id":74982,"nodeType":"Return","src":"4207:7:157"}]}}]}},{"eventCall":{"arguments":[{"id":74988,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74936,"src":"4259:7:157","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":74989,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74938,"src":"4268:5:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":74990,"name":"replyTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74940,"src":"4275:7:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":74991,"name":"replyCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74942,"src":"4284:9:157","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":74987,"name":"Reply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73478,"src":"4253:5:157","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":74992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4253:41:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74993,"nodeType":"EmitStatement","src":"4248:46:157"}]},"baseFunctions":[73575],"functionSelector":"c78bde77","implemented":true,"kind":"function","modifiers":[{"id":74945,"kind":"modifierInvocation","modifierName":{"id":74944,"name":"onlyRouter","nameLocations":["3665:10:157"],"nodeType":"IdentifierPath","referencedDeclaration":75121,"src":"3665:10:157"},"nodeType":"ModifierInvocation","src":"3665:10:157"}],"name":"replySent","nameLocation":"3535:9:157","parameters":{"id":74943,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74934,"mutability":"mutable","name":"destination","nameLocation":"3553:11:157","nodeType":"VariableDeclaration","scope":74995,"src":"3545:19:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":74933,"name":"address","nodeType":"ElementaryTypeName","src":"3545:7:157","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":74936,"mutability":"mutable","name":"payload","nameLocation":"3581:7:157","nodeType":"VariableDeclaration","scope":74995,"src":"3566:22:157","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":74935,"name":"bytes","nodeType":"ElementaryTypeName","src":"3566:5:157","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":74938,"mutability":"mutable","name":"value","nameLocation":"3598:5:157","nodeType":"VariableDeclaration","scope":74995,"src":"3590:13:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":74937,"name":"uint128","nodeType":"ElementaryTypeName","src":"3590:7:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":74940,"mutability":"mutable","name":"replyTo","nameLocation":"3613:7:157","nodeType":"VariableDeclaration","scope":74995,"src":"3605:15:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":74939,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3605:7:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":74942,"mutability":"mutable","name":"replyCode","nameLocation":"3629:9:157","nodeType":"VariableDeclaration","scope":74995,"src":"3622:16:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":74941,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3622:6:157","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"3544:95:157"},"returnParameters":{"id":74946,"nodeType":"ParameterList","parameters":[],"src":"3680:0:157"},"scope":75221,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":75017,"nodeType":"FunctionDefinition","src":"4307:192:157","nodes":[],"body":{"id":75016,"nodeType":"Block","src":"4404:95:157","nodes":[],"statements":[{"expression":{"arguments":[{"id":75007,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74999,"src":"4427:11:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":75008,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75001,"src":"4440:5:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":75006,"name":"_sendValueTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75220,"src":"4414:12:157","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$__$","typeString":"function (address,uint128)"}},"id":75009,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4414:32:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75010,"nodeType":"ExpressionStatement","src":"4414:32:157"},{"eventCall":{"arguments":[{"id":75012,"name":"claimedId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74997,"src":"4475:9:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":75013,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75001,"src":"4486:5:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":75011,"name":"ValueClaimed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73485,"src":"4462:12:157","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint128_$returns$__$","typeString":"function (bytes32,uint128)"}},"id":75014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4462:30:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75015,"nodeType":"EmitStatement","src":"4457:35:157"}]},"baseFunctions":[73584],"functionSelector":"14503e51","implemented":true,"kind":"function","modifiers":[{"id":75004,"kind":"modifierInvocation","modifierName":{"id":75003,"name":"onlyRouter","nameLocations":["4393:10:157"],"nodeType":"IdentifierPath","referencedDeclaration":75121,"src":"4393:10:157"},"nodeType":"ModifierInvocation","src":"4393:10:157"}],"name":"valueClaimed","nameLocation":"4316:12:157","parameters":{"id":75002,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74997,"mutability":"mutable","name":"claimedId","nameLocation":"4337:9:157","nodeType":"VariableDeclaration","scope":75017,"src":"4329:17:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":74996,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4329:7:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":74999,"mutability":"mutable","name":"destination","nameLocation":"4356:11:157","nodeType":"VariableDeclaration","scope":75017,"src":"4348:19:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":74998,"name":"address","nodeType":"ElementaryTypeName","src":"4348:7:157","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":75001,"mutability":"mutable","name":"value","nameLocation":"4377:5:157","nodeType":"VariableDeclaration","scope":75017,"src":"4369:13:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":75000,"name":"uint128","nodeType":"ElementaryTypeName","src":"4369:7:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"4328:55:157"},"returnParameters":{"id":75005,"nodeType":"ParameterList","parameters":[],"src":"4404:0:157"},"scope":75221,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":75058,"nodeType":"FunctionDefinition","src":"4505:363:157","nodes":[],"body":{"id":75057,"nodeType":"Block","src":"4586:282:157","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75027,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74659,"src":"4604:5:157","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":75028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4613:1:157","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4604:10:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6465636f64657220636f756c64206f6e6c792062652063726561746564206265666f726520696e6974206d657373616765","id":75030,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4616:51:157","typeDescriptions":{"typeIdentifier":"t_stringliteral_6179111dcaf1477c3041b02777f68e6f9b47b46bbab14442425a87a2628d248f","typeString":"literal_string \"decoder could only be created before init message\""},"value":"decoder could only be created before init message"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6179111dcaf1477c3041b02777f68e6f9b47b46bbab14442425a87a2628d248f","typeString":"literal_string \"decoder could only be created before init message\""}],"id":75026,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"4596:7:157","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":75031,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4596:72:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75032,"nodeType":"ExpressionStatement","src":"4596:72:157"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":75039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75034,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74661,"src":"4686:7:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":75037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4705:1:157","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":75036,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4697:7:157","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":75035,"name":"address","nodeType":"ElementaryTypeName","src":"4697:7:157","typeDescriptions":{}}},"id":75038,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4697:10:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4686:21:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6465636f64657220636f756c64206f6e6c792062652063726561746564206f6e6365","id":75040,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4709:36:157","typeDescriptions":{"typeIdentifier":"t_stringliteral_2e378c5f64e230407f2ea4b317edbd32f061bf14b6bede40dc75fef40a2c3f34","typeString":"literal_string \"decoder could only be created once\""},"value":"decoder could only be created once"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2e378c5f64e230407f2ea4b317edbd32f061bf14b6bede40dc75fef40a2c3f34","typeString":"literal_string \"decoder could only be created once\""}],"id":75033,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"4678:7:157","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":75041,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4678:68:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75042,"nodeType":"ExpressionStatement","src":"4678:68:157"},{"expression":{"id":75049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":75043,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74661,"src":"4757:7:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":75046,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75019,"src":"4793:14:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":75047,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75021,"src":"4809:4:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":75044,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41840,"src":"4767:6:157","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Clones_$41840_$","typeString":"type(library Clones)"}},"id":75045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4774:18:157","memberName":"cloneDeterministic","nodeType":"MemberAccess","referencedDeclaration":41758,"src":"4767:25:157","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$_t_address_$","typeString":"function (address,bytes32) returns (address)"}},"id":75048,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4767:47:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4757:57:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":75050,"nodeType":"ExpressionStatement","src":"4757:57:157"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":75052,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74661,"src":"4840:7:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":75051,"name":"IMirrorDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73638,"src":"4825:14:157","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirrorDecoder_$73638_$","typeString":"type(contract IMirrorDecoder)"}},"id":75053,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4825:23:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirrorDecoder_$73638","typeString":"contract IMirrorDecoder"}},"id":75054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4849:10:157","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":73608,"src":"4825:34:157","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$__$","typeString":"function () external"}},"id":75055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4825:36:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75056,"nodeType":"ExpressionStatement","src":"4825:36:157"}]},"baseFunctions":[73591],"functionSelector":"5b1b84f7","implemented":true,"kind":"function","modifiers":[{"id":75024,"kind":"modifierInvocation","modifierName":{"id":75023,"name":"onlyRouter","nameLocations":["4575:10:157"],"nodeType":"IdentifierPath","referencedDeclaration":75121,"src":"4575:10:157"},"nodeType":"ModifierInvocation","src":"4575:10:157"}],"name":"createDecoder","nameLocation":"4514:13:157","parameters":{"id":75022,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75019,"mutability":"mutable","name":"implementation","nameLocation":"4536:14:157","nodeType":"VariableDeclaration","scope":75058,"src":"4528:22:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75018,"name":"address","nodeType":"ElementaryTypeName","src":"4528:7:157","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":75021,"mutability":"mutable","name":"salt","nameLocation":"4560:4:157","nodeType":"VariableDeclaration","scope":75058,"src":"4552:12:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75020,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4552:7:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4527:38:157"},"returnParameters":{"id":75025,"nodeType":"ParameterList","parameters":[],"src":"4586:0:157"},"scope":75221,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":75108,"nodeType":"FunctionDefinition","src":"4874:566:157","nodes":[],"body":{"id":75107,"nodeType":"Block","src":"5017:423:157","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75072,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74659,"src":"5035:5:157","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":75073,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5044:1:157","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5035:10:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e6974206d657373616765206d7573742062652063726561746564206265666f726520616e79206f7468657273","id":75075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5047:48:157","typeDescriptions":{"typeIdentifier":"t_stringliteral_f66d837affa62c092147eee2ea617e19f402b656aab0578ab0acad8d1e9a6341","typeString":"literal_string \"init message must be created before any others\""},"value":"init message must be created before any others"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f66d837affa62c092147eee2ea617e19f402b656aab0578ab0acad8d1e9a6341","typeString":"literal_string \"init message must be created before any others\""}],"id":75071,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"5027:7:157","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":75076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5027:69:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75077,"nodeType":"ExpressionStatement","src":"5027:69:157"},{"assignments":[75079],"declarations":[{"constant":false,"id":75079,"mutability":"mutable","name":"initNonce","nameLocation":"5205:9:157","nodeType":"VariableDeclaration","scope":75107,"src":"5197:17:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75078,"name":"uint256","nodeType":"ElementaryTypeName","src":"5197:7:157","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":75082,"initialValue":{"id":75081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5217:7:157","subExpression":{"id":75080,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74659,"src":"5217:5:157","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5197:27:157"},{"assignments":[75084],"declarations":[{"constant":false,"id":75084,"mutability":"mutable","name":"id","nameLocation":"5242:2:157","nodeType":"VariableDeclaration","scope":75107,"src":"5234:10:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75083,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5234:7:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":75095,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"id":75090,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5282:4:157","typeDescriptions":{"typeIdentifier":"t_contract$_Mirror_$75221","typeString":"contract Mirror"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Mirror_$75221","typeString":"contract Mirror"}],"id":75089,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5274:7:157","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":75088,"name":"address","nodeType":"ElementaryTypeName","src":"5274:7:157","typeDescriptions":{}}},"id":75091,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5274:13:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":75092,"name":"initNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75079,"src":"5289:9:157","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":75086,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5257:3:157","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":75087,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5261:12:157","memberName":"encodePacked","nodeType":"MemberAccess","src":"5257:16:157","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":75093,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5257:42:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":75085,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"5247:9:157","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":75094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5247:53:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"5234:66:157"},{"eventCall":{"arguments":[{"id":75097,"name":"executableBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75066,"src":"5348:17:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":75096,"name":"ExecutableBalanceTopUpRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73456,"src":"5316:31:157","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":75098,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5316:50:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75099,"nodeType":"EmitStatement","src":"5311:55:157"},{"eventCall":{"arguments":[{"id":75101,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75084,"src":"5406:2:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":75102,"name":"source","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75060,"src":"5410:6:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":75103,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75062,"src":"5418:7:157","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":75104,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75064,"src":"5427:5:157","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":75100,"name":"MessageQueueingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73433,"src":"5381:24:157","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":75105,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5381:52:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75106,"nodeType":"EmitStatement","src":"5376:57:157"}]},"baseFunctions":[73602],"functionSelector":"de1dd2e0","implemented":true,"kind":"function","modifiers":[{"id":75069,"kind":"modifierInvocation","modifierName":{"id":75068,"name":"onlyRouter","nameLocations":["5002:10:157"],"nodeType":"IdentifierPath","referencedDeclaration":75121,"src":"5002:10:157"},"nodeType":"ModifierInvocation","src":"5002:10:157"}],"name":"initMessage","nameLocation":"4883:11:157","parameters":{"id":75067,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75060,"mutability":"mutable","name":"source","nameLocation":"4903:6:157","nodeType":"VariableDeclaration","scope":75108,"src":"4895:14:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75059,"name":"address","nodeType":"ElementaryTypeName","src":"4895:7:157","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":75062,"mutability":"mutable","name":"payload","nameLocation":"4926:7:157","nodeType":"VariableDeclaration","scope":75108,"src":"4911:22:157","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":75061,"name":"bytes","nodeType":"ElementaryTypeName","src":"4911:5:157","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":75064,"mutability":"mutable","name":"value","nameLocation":"4943:5:157","nodeType":"VariableDeclaration","scope":75108,"src":"4935:13:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":75063,"name":"uint128","nodeType":"ElementaryTypeName","src":"4935:7:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":75066,"mutability":"mutable","name":"executableBalance","nameLocation":"4958:17:157","nodeType":"VariableDeclaration","scope":75108,"src":"4950:25:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":75065,"name":"uint128","nodeType":"ElementaryTypeName","src":"4950:7:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"4894:82:157"},"returnParameters":{"id":75070,"nodeType":"ParameterList","parameters":[],"src":"5017:0:157"},"scope":75221,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":75121,"nodeType":"ModifierDefinition","src":"5446:131:157","nodes":[],"body":{"id":75120,"nodeType":"Block","src":"5468:109:157","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":75115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":75111,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5486:3:157","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":75112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5490:6:157","memberName":"sender","nodeType":"MemberAccess","src":"5486:10:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":75113,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74676,"src":"5500:6:157","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":75114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5500:8:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5486:22:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6f6e6c7920726f7574657220636f6e747261637420697320656c696769626c6520666f72206f7065726174696f6e","id":75116,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5510:48:157","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":75110,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"5478:7:157","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":75117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5478:81:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75118,"nodeType":"ExpressionStatement","src":"5478:81:157"},{"id":75119,"nodeType":"PlaceholderStatement","src":"5569:1:157"}]},"name":"onlyRouter","nameLocation":"5455:10:157","parameters":{"id":75109,"nodeType":"ParameterList","parameters":[],"src":"5465:2:157"},"virtual":false,"visibility":"internal"},{"id":75140,"nodeType":"FunctionDefinition","src":"5617:182:157","nodes":[],"body":{"id":75139,"nodeType":"Block","src":"5667:132:157","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":75129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":75126,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5681:3:157","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":75127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5685:6:157","memberName":"sender","nodeType":"MemberAccess","src":"5681:10:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":75128,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74661,"src":"5695:7:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5681:21:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":75137,"nodeType":"Block","src":"5751:42:157","statements":[{"expression":{"expression":{"id":75134,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5772:3:157","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":75135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5776:6:157","memberName":"sender","nodeType":"MemberAccess","src":"5772:10:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":75125,"id":75136,"nodeType":"Return","src":"5765:17:157"}]},"id":75138,"nodeType":"IfStatement","src":"5677:116:157","trueBody":{"id":75133,"nodeType":"Block","src":"5704:41:157","statements":[{"expression":{"expression":{"id":75130,"name":"tx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-26,"src":"5725:2:157","typeDescriptions":{"typeIdentifier":"t_magic_transaction","typeString":"tx"}},"id":75131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5728:6:157","memberName":"origin","nodeType":"MemberAccess","src":"5725:9:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":75125,"id":75132,"nodeType":"Return","src":"5718:16:157"}]}}]},"implemented":true,"kind":"function","modifiers":[],"name":"_source","nameLocation":"5626:7:157","parameters":{"id":75122,"nodeType":"ParameterList","parameters":[],"src":"5633:2:157"},"returnParameters":{"id":75125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75124,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75140,"src":"5658:7:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75123,"name":"address","nodeType":"ElementaryTypeName","src":"5658:7:157","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5657:9:157"},"scope":75221,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":75182,"nodeType":"FunctionDefinition","src":"5805:385:157","nodes":[],"body":{"id":75181,"nodeType":"Block","src":"5861:329:157","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":75147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75145,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75142,"src":"5875:6:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":75146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5885:1:157","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5875:11:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75180,"nodeType":"IfStatement","src":"5871:313:157","trueBody":{"id":75179,"nodeType":"Block","src":"5888:296:157","statements":[{"assignments":[75149],"declarations":[{"constant":false,"id":75149,"mutability":"mutable","name":"routerAddress","nameLocation":"5910:13:157","nodeType":"VariableDeclaration","scope":75179,"src":"5902:21:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75148,"name":"address","nodeType":"ElementaryTypeName","src":"5902:7:157","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":75152,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":75150,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74676,"src":"5926:6:157","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":75151,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5926:8:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5902:32:157"},{"assignments":[75155],"declarations":[{"constant":false,"id":75155,"mutability":"mutable","name":"wrappedVara","nameLocation":"5962:11:157","nodeType":"VariableDeclaration","scope":75179,"src":"5949:24:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$73907","typeString":"contract IWrappedVara"},"typeName":{"id":75154,"nodeType":"UserDefinedTypeName","pathNode":{"id":75153,"name":"IWrappedVara","nameLocations":["5949:12:157"],"nodeType":"IdentifierPath","referencedDeclaration":73907,"src":"5949:12:157"},"referencedDeclaration":73907,"src":"5949:12:157","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$73907","typeString":"contract IWrappedVara"}},"visibility":"internal"}],"id":75163,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":75158,"name":"routerAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75149,"src":"5997:13:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":75157,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73896,"src":"5989:7:157","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRouter_$73896_$","typeString":"type(contract IRouter)"}},"id":75159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5989:22:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$73896","typeString":"contract IRouter"}},"id":75160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6012:11:157","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":73741,"src":"5989:34:157","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":75161,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5989:36:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":75156,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73907,"src":"5976:12:157","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$73907_$","typeString":"type(contract IWrappedVara)"}},"id":75162,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5976:50:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$73907","typeString":"contract IWrappedVara"}},"nodeType":"VariableDeclarationStatement","src":"5949:77:157"},{"assignments":[75165],"declarations":[{"constant":false,"id":75165,"mutability":"mutable","name":"success","nameLocation":"6046:7:157","nodeType":"VariableDeclaration","scope":75179,"src":"6041:12:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":75164,"name":"bool","nodeType":"ElementaryTypeName","src":"6041:4:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":75173,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":75168,"name":"_source","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75140,"src":"6081:7:157","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":75169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6081:9:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":75170,"name":"routerAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75149,"src":"6092:13:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":75171,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75142,"src":"6107:6:157","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":75166,"name":"wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75155,"src":"6056:11:157","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$73907","typeString":"contract IWrappedVara"}},"id":75167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6068:12:157","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":43139,"src":"6056:24:157","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":75172,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6056:58:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"6041:73:157"},{"expression":{"arguments":[{"id":75175,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75165,"src":"6137:7:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6661696c656420746f207265747269657665205756617261","id":75176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6146:26:157","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":75174,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"6129:7:157","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":75177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6129:44:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75178,"nodeType":"ExpressionStatement","src":"6129:44:157"}]}}]},"implemented":true,"kind":"function","modifiers":[],"name":"_retrieveValueToRouter","nameLocation":"5814:22:157","parameters":{"id":75143,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75142,"mutability":"mutable","name":"_value","nameLocation":"5845:6:157","nodeType":"VariableDeclaration","scope":75182,"src":"5837:14:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":75141,"name":"uint128","nodeType":"ElementaryTypeName","src":"5837:7:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"5836:16:157"},"returnParameters":{"id":75144,"nodeType":"ParameterList","parameters":[],"src":"5861:0:157"},"scope":75221,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":75220,"nodeType":"FunctionDefinition","src":"6196:316:157","nodes":[],"body":{"id":75219,"nodeType":"Block","src":"6262:250:157","nodes":[],"statements":[{"assignments":[75191],"declarations":[{"constant":false,"id":75191,"mutability":"mutable","name":"wrappedVara","nameLocation":"6285:11:157","nodeType":"VariableDeclaration","scope":75219,"src":"6272:24:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$73907","typeString":"contract IWrappedVara"},"typeName":{"id":75190,"nodeType":"UserDefinedTypeName","pathNode":{"id":75189,"name":"IWrappedVara","nameLocations":["6272:12:157"],"nodeType":"IdentifierPath","referencedDeclaration":73907,"src":"6272:12:157"},"referencedDeclaration":73907,"src":"6272:12:157","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$73907","typeString":"contract IWrappedVara"}},"visibility":"internal"}],"id":75200,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":75194,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74676,"src":"6320:6:157","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":75195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6320:8:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":75193,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73896,"src":"6312:7:157","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRouter_$73896_$","typeString":"type(contract IRouter)"}},"id":75196,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6312:17:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$73896","typeString":"contract IRouter"}},"id":75197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6330:11:157","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":73741,"src":"6312:29:157","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":75198,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6312:31:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":75192,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73907,"src":"6299:12:157","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$73907_$","typeString":"type(contract IWrappedVara)"}},"id":75199,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6299:45:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$73907","typeString":"contract IWrappedVara"}},"nodeType":"VariableDeclarationStatement","src":"6272:72:157"},{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":75203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75201,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75186,"src":"6359:5:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":75202,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6368:1:157","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6359:10:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75218,"nodeType":"IfStatement","src":"6355:151:157","trueBody":{"id":75217,"nodeType":"Block","src":"6371:135:157","statements":[{"assignments":[75205],"declarations":[{"constant":false,"id":75205,"mutability":"mutable","name":"success","nameLocation":"6390:7:157","nodeType":"VariableDeclaration","scope":75217,"src":"6385:12:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":75204,"name":"bool","nodeType":"ElementaryTypeName","src":"6385:4:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":75211,"initialValue":{"arguments":[{"id":75208,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75184,"src":"6421:11:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":75209,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75186,"src":"6434:5:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":75206,"name":"wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75191,"src":"6400:11:157","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$73907","typeString":"contract IWrappedVara"}},"id":75207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6412:8:157","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":43107,"src":"6400:20:157","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":75210,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6400:40:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"6385:55:157"},{"expression":{"arguments":[{"id":75213,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75205,"src":"6463:7:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6661696c656420746f2073656e64205756617261","id":75214,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6472:22:157","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":75212,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"6455:7:157","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":75215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6455:40:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75216,"nodeType":"ExpressionStatement","src":"6455:40:157"}]}}]},"implemented":true,"kind":"function","modifiers":[],"name":"_sendValueTo","nameLocation":"6205:12:157","parameters":{"id":75187,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75184,"mutability":"mutable","name":"destination","nameLocation":"6226:11:157","nodeType":"VariableDeclaration","scope":75220,"src":"6218:19:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75183,"name":"address","nodeType":"ElementaryTypeName","src":"6218:7:157","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":75186,"mutability":"mutable","name":"value","nameLocation":"6247:5:157","nodeType":"VariableDeclaration","scope":75220,"src":"6239:13:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":75185,"name":"uint128","nodeType":"ElementaryTypeName","src":"6239:7:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"6217:36:157"},"returnParameters":{"id":75188,"nodeType":"ParameterList","parameters":[],"src":"6262:0:157"},"scope":75221,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":74652,"name":"IMirror","nameLocations":["422:7:157"],"nodeType":"IdentifierPath","referencedDeclaration":73603,"src":"422:7:157"},"id":74653,"nodeType":"InheritanceSpecifier","src":"422:7:157"}],"canonicalName":"Mirror","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[75221,73603],"name":"Mirror","nameLocation":"412:6:157","scope":75222,"usedErrors":[43912,43918],"usedEvents":[73422,73433,73444,73451,73456,73467,73478,73485]}],"license":"UNLICENSED"},"id":157} \ No newline at end of file +{"abi":[{"type":"function","name":"claimValue","inputs":[{"name":"_claimedId","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"decoder","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"executableBalanceTopUp","inputs":[{"name":"_value","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"inheritor","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_initializer","type":"address","internalType":"address"},{"name":"_decoder","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"initializer","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"nonce","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"performStateTransition","inputs":[{"name":"_transition","type":"tuple","internalType":"struct Gear.StateTransition","components":[{"name":"actorId","type":"address","internalType":"address"},{"name":"newStateHash","type":"bytes32","internalType":"bytes32"},{"name":"inheritor","type":"address","internalType":"address"},{"name":"valueToReceive","type":"uint128","internalType":"uint128"},{"name":"valueClaims","type":"tuple[]","internalType":"struct Gear.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 Gear.Message[]","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 Gear.ReplyDetails","components":[{"name":"to","type":"bytes32","internalType":"bytes32"},{"name":"code","type":"bytes4","internalType":"bytes4"}]}]}]}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"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":"nonpayable"},{"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":"nonpayable"},{"type":"function","name":"stateHash","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"transferLockedValueToInheritor","inputs":[],"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":"0x608080604052346015576116bb908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c806329336f3914610d3957806336a52a1814610d11578063485cc95514610c7c578063701da98e14610c5f578063704ed54214610b4b57806391d5a64c14610aee5780639cb3300514610ac75780639ce110d714610a9f5780639ed323501461043e578063affed0e014610421578063d5624222146101e0578063e43f3433146100d85763f887ea40146100a8575f80fd5b346100d4575f3660031901126100d45760206100c26111ad565b6040516001600160a01b039091168152f35b5f80fd5b346100d4575f3660031901126100d4576001546001600160a01b0316801561019b5760249060206001600160a01b036101176101126111ad565b611200565b16604051938480926370a0823160e01b82523060048301525afa918215610190575f92610155575b506001600160801b03610153921690611293565b005b91506020823d602011610188575b8161017060209383610f96565b810103126100d4579051906001600160801b0361013f565b3d9150610163565b6040513d5f823e3d90fd5b60405162461bcd60e51b815260206004820152601960248201527f70726f6772616d206973206e6f74207465726d696e61746564000000000000006044820152606490fd5b346100d45760403660031901126100d4576004356001600160401b0381116100d457610210903690600401610e9d565b906024356001600160801b0381168082036100d45760015461023b906001600160a01b031615610ef2565b60045415801590610402575b15610384576102ee575b6004545f1981146102da576020938160017f3527a119fe7f25d965cb7abc58139f031e8909b8592488c7926862d569e435c69301600455604051868101913060601b83526034820152603481526102a9605482610f96565b519020936102cf6001600160a01b036102c061125d565b16946040519384938885611095565b0390a2604051908152f35b634e487b7160e01b5f52601160045260245ffd5b6103356020826102fc6111ad565b6001600160a01b0361030d82611200565b16905f61031861125d565b6040516323b872dd60e01b81529687958694859360048501610fcf565b03925af1801561019057610350915f91610355575b50610ff9565b610251565b610377915060203d60201161037d575b61036f8183610f96565b810190610fb7565b8561034a565b503d610365565b60405162461bcd60e51b815260206004820152604a60248201527f696e697469616c697a6572206861736e2774206372656174656420696e69742060448201527f6d657373616765207965743b20616e6420736f75726365206973206e6f7420696064820152693734ba34b0b634bd32b960b11b608482015260a490fd5b5061040b61125d565b6002546001600160a01b03918216911614610247565b346100d4575f3660031901126100d4576020600454604051908152f35b346100d45760203660031901126100d4576004356001600160401b0381116100d45736819003906004810160c06003198401126100d4576104906001600160a01b036104886111ad565b1633146110c3565b61049981611166565b306001600160a01b0390911603610a5a5760a4820135926022190192838112156100d4578201906004820135906001600160401b0382116100d4578160051b360360248401136100d4575f94919360e2193685900301929060605b8688101561070a576024600589901b87010135858112156100d4576004908701019760208901601f198a3603019260c084126100d45760405160a081018181106001600160401b038211176106f6576040528235815261055660408d01610ede565b906020810191825260608d01356001600160401b0381116100d4576020908e010136601f820112156100d45780359061058e82611278565b9161059c6040519384610f96565b80835236602082840101116100d4578f6080905f6020846105d0958260409801838a01378701015283860194855201610eca565b6060840190815297607f1901126100d45760405193604085018581106001600160401b038211176106f65760405260a08f01358086529e60c00135936001600160e01b0319851685036100d4576001986106ad6034605460209996876106d39a8c9a8b809b019182528260808201525197519251965191519063ffffffff60e01b905116908a6040519889958287019b8c526001600160601b03199060601b1660408701528051918291018787015e8401926001600160801b03199060801b16858401526064830152608482015203016014810184520182610f96565b5190206040519582879351918291018585015e8201908382015203018084520182610f96565b996106e8576106e19061155f565b01966104f4565b6106f1906113dc565b6106e1565b634e487b7160e01b5f52604160045260245ffd5b60208151910120916084820135908112156100d4578101906004820135926001600160401b0384116100d45760608402360360248401136100d4576060945f5b85811015610899576004606082028601016060601f1982360301126100d45760405190606082018281106001600160401b038211176106f657604052602081013591828152604082019961079d8b610ede565b92836020840152606001926107b184610eca565b6040819401526040519260208401918683526001600160601b03199060601b1660408501526001600160801b03199060801b166054840152604483526107f8606484610f96565b60405192828493516020819201602086015e83019060208201905f8252519283915e016020015f815203601f19810182526108339082610f96565b9861083d90611166565b6108468261117a565b61084f91611293565b6108589061117a565b6040519182526001600160801b0316602082015260407fa217f2987a7942c2966f1fd16d39097862308325249e8b9fb4c00a430fd6578391a160010161074a565b50855160208701206044840192906001600160a01b036108b885611166565b16610988575b6020946108ee60646108e76108e160035497602486013580990361095657611166565b97611166565b920161117a565b9060405194878601966001600160601b03199060601b16875260348601526001600160601b03199060601b1660548501526001600160801b03199060801b166068840152607883015260988201526098815261094b60b882610f96565b519020604051908152f35b886003557f5c601f20d27885120b6fed87a4c313849b86eaddc9d28e7685e2e66a9c0809308b6040518b8152a1611166565b61099184611166565b60015495906109a96001600160a01b03881615610ef2565b6001600160a01b03166001600160a01b0319969096168617600155851561019b57602460206001600160a01b036109e16101126111ad565b16604051928380926370a0823160e01b82523060048301525afa908115610190575f91610a27575b506020966001600160801b03610a20921690611293565b94506108be565b90506020813d602011610a52575b81610a4260209383610f96565b810103126100d457516020610a09565b3d9150610a35565b60405162461bcd60e51b815260206004820152601d60248201527f6163746f724964206d757374206265207468697320636f6e74726163740000006044820152606490fd5b346100d4575f3660031901126100d4576002546040516001600160a01b039091168152602090f35b346100d4575f3660031901126100d4575f546040516001600160a01b039091168152602090f35b346100d45760203660031901126100d457610b0c6004541515610f36565b6001600160a01b03610b1c61125d565b167f0354817698da67944179457b89e15c1c57ca7b8cfd9d80eab1d09c258f6c497860206040516004358152a2005b346100d45760203660031901126100d4576004356001600160801b038116908181036100d457600154610b87906001600160a01b031615610ef2565b81610bba575b7f85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c054236667602083604051908152a1005b906020610c0292610bc96111ad565b6001600160a01b03610bda82611200565b16905f610be561125d565b6040516323b872dd60e01b81529788958694859360048501610fcf565b03925af190811561019057610c416020927f85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c054236667945f91610c485750610ff9565b9150610b8d565b6103779150843d861161037d5761036f8183610f96565b346100d4575f3660031901126100d4576020600354604051908152f35b346100d45760403660031901126100d4576004356001600160a01b038116908190036100d4576024356001600160a01b03811691908290036100d457610ccb6001600160a01b036104886111ad565b60025490610ce26001600160a01b0383161561110f565b5f5491610cf86001600160a01b0384161561110f565b6001600160a01b03199081169190911760025516175f55005b346100d4575f3660031901126100d4576001546040516001600160a01b039091168152602090f35b346100d45760603660031901126100d4576024356001600160401b0381116100d457610d69903690600401610e9d565b90604435916001600160801b0383168084036100d457600154610d95906001600160a01b031615610ef2565b610da26004541515610f36565b610df2575b7fb64dad8a89028819d048f9c75ec4c516341da68972bb68a8e1262b5443c61e7f91610ded6001600160a01b03610ddc61125d565b169460405193849360043585611095565b0390a2005b610e3a91602084610e016111ad565b6001600160a01b03610e1282611200565b16905f610e1d61125d565b6040516323b872dd60e01b81529889958694859360048501610fcf565b03925af1928315610190577fb64dad8a89028819d048f9c75ec4c516341da68972bb68a8e1262b5443c61e7f93610e77915f91610e7e5750610ff9565b9150610da7565b610e97915060203d60201161037d5761036f8183610f96565b8661034a565b9181601f840112156100d4578235916001600160401b0383116100d457602083818601950101116100d457565b35906001600160801b03821682036100d457565b35906001600160a01b03821682036100d457565b15610ef957565b60405162461bcd60e51b81526020600482015260156024820152741c1c9bd9dc985b481a5cc81d195c9b5a5b985d1959605a1b6044820152606490fd5b15610f3d57565b60405162461bcd60e51b815260206004820152602b60248201527f696e697469616c697a6572206861736e2774206372656174656420696e69742060448201526a1b595cdcd859d9481e595d60aa1b6064820152608490fd5b90601f801991011681019081106001600160401b038211176106f657604052565b908160209103126100d4575180151581036100d45790565b6001600160a01b039182168152911660208201526001600160801b03909116604082015260600190565b1561100057565b60405162461bcd60e51b815260206004820152604160248201527f6661696c656420746f207472616e73666572206e6f6e2d7a65726f20616d6f7560448201527f6e74206f662057566172612066726f6d20736f7572636520746f20726f7574656064820152603960f91b608482015260a490fd5b908060209392818452848401375f828201840152601f01601f1916010190565b926040926110bc916001600160801b03939796978652606060208701526060860191611075565b9416910152565b156110ca57565b60405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f742074686520726f7574657200000000000000006044820152606490fd5b1561111657565b60405162461bcd60e51b815260206004820152602260248201527f696e697469616c697a657220636f756c64206f6e6c7920626520736574206f6e604482015261636560f01b6064820152608490fd5b356001600160a01b03811681036100d45790565b356001600160801b03811681036100d45790565b908160209103126100d457516001600160a01b03811681036100d45790565b6040516303e21fa960e61b8152602081600481305afa908115610190575f916111d4575090565b6111f6915060203d6020116111f9575b6111ee8183610f96565b81019061118e565b90565b503d6111e4565b60405163088f50cf60e41b815290602090829060049082906001600160a01b03165afa908115610190575f9161123e575b506001600160a01b031690565b611257915060203d6020116111f9576111ee8183610f96565b5f611231565b5f54336001600160a01b0390911603611274573290565b3390565b6001600160401b0381116106f657601f01601f191660200190565b906001600160801b0316806112a6575050565b60209060446001600160a01b036112be6101126111ad565b60405163a9059cbb60e01b81526001600160a01b0390961660048701526024860193909352849283915f91165af1908115610190575f91611347575b501561130257565b60405162461bcd60e51b815260206004820152601860248201527f6661696c656420746f207472616e7366657220575661726100000000000000006044820152606490fd5b611360915060203d60201161037d5761036f8183610f96565b5f6112fa565b903590601e19813603018212156100d457018035906001600160401b0382116100d4576020019181360383136100d457565b356001600160e01b0319811681036100d45790565b3d156113d7573d906113be82611278565b916113cc6040519384610f96565b82523d5f602084013e565b606090565b602081016113e981611166565b9061140160608401926113fb8461117a565b90611293565b5f546001600160a01b0316908161149a575b50507fe240a19e4a4ef8e5861c0eea48f9ab2cdb47bfe98347c94ccabb9c45f7d8d1c69061144f6114476040850185611366565b91909261117a565b60806001600160e01b031961146660a08801611398565b16956001600160801b03611487604051968796606088526060880191611075565b93166020850152013560408301520390a2565b5f916114a68392611166565b826115406114b76040890189611366565b6114c38993929361117a565b6114cf60a08c01611398565b604051639649744960e01b602082019081526001600160a01b03909816602482015260a060448201529485936001600160801b03916115129160c4870191611075565b9216606484015260808c013560848401526001600160e01b03191660a483015203601f198101835282610f96565b51926207a120f161154f6113ad565b5061155b575f80611413565b5050565b5f546001600160a01b0316806115d9575b507f9c4ffe7286aed9eb205c8adb12b51219122c7e56c67017f312af0e15f80117736115d46115a160208401611166565b6115ae6040850185611366565b6115bd6060879593950161117a565b9060405194859460018060a01b0316973585611095565b0390a2565b5f809183826115ea60208301611166565b6116686115fa6040850185611366565b92906001600160801b036116536116136060890161117a565b6040516374fad4ef60e01b60208201908152993560248201526001600160a01b03909516604486015260806064860152939586949360a486019190611075565b9116608483015203601f198101835282610f96565b51926207a120f16116776113ad565b50611682575f611570565b5056fea26469706673582212207bd98dde2756a9134e07240455fbe853fc91b36f97f5de661299768fb8022b9264736f6c634300081c0033","sourceMap":"403:9266:157:-:0;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806329336f3914610d3957806336a52a1814610d11578063485cc95514610c7c578063701da98e14610c5f578063704ed54214610b4b57806391d5a64c14610aee5780639cb3300514610ac75780639ce110d714610a9f5780639ed323501461043e578063affed0e014610421578063d5624222146101e0578063e43f3433146100d85763f887ea40146100a8575f80fd5b346100d4575f3660031901126100d45760206100c26111ad565b6040516001600160a01b039091168152f35b5f80fd5b346100d4575f3660031901126100d4576001546001600160a01b0316801561019b5760249060206001600160a01b036101176101126111ad565b611200565b16604051938480926370a0823160e01b82523060048301525afa918215610190575f92610155575b506001600160801b03610153921690611293565b005b91506020823d602011610188575b8161017060209383610f96565b810103126100d4579051906001600160801b0361013f565b3d9150610163565b6040513d5f823e3d90fd5b60405162461bcd60e51b815260206004820152601960248201527f70726f6772616d206973206e6f74207465726d696e61746564000000000000006044820152606490fd5b346100d45760403660031901126100d4576004356001600160401b0381116100d457610210903690600401610e9d565b906024356001600160801b0381168082036100d45760015461023b906001600160a01b031615610ef2565b60045415801590610402575b15610384576102ee575b6004545f1981146102da576020938160017f3527a119fe7f25d965cb7abc58139f031e8909b8592488c7926862d569e435c69301600455604051868101913060601b83526034820152603481526102a9605482610f96565b519020936102cf6001600160a01b036102c061125d565b16946040519384938885611095565b0390a2604051908152f35b634e487b7160e01b5f52601160045260245ffd5b6103356020826102fc6111ad565b6001600160a01b0361030d82611200565b16905f61031861125d565b6040516323b872dd60e01b81529687958694859360048501610fcf565b03925af1801561019057610350915f91610355575b50610ff9565b610251565b610377915060203d60201161037d575b61036f8183610f96565b810190610fb7565b8561034a565b503d610365565b60405162461bcd60e51b815260206004820152604a60248201527f696e697469616c697a6572206861736e2774206372656174656420696e69742060448201527f6d657373616765207965743b20616e6420736f75726365206973206e6f7420696064820152693734ba34b0b634bd32b960b11b608482015260a490fd5b5061040b61125d565b6002546001600160a01b03918216911614610247565b346100d4575f3660031901126100d4576020600454604051908152f35b346100d45760203660031901126100d4576004356001600160401b0381116100d45736819003906004810160c06003198401126100d4576104906001600160a01b036104886111ad565b1633146110c3565b61049981611166565b306001600160a01b0390911603610a5a5760a4820135926022190192838112156100d4578201906004820135906001600160401b0382116100d4578160051b360360248401136100d4575f94919360e2193685900301929060605b8688101561070a576024600589901b87010135858112156100d4576004908701019760208901601f198a3603019260c084126100d45760405160a081018181106001600160401b038211176106f6576040528235815261055660408d01610ede565b906020810191825260608d01356001600160401b0381116100d4576020908e010136601f820112156100d45780359061058e82611278565b9161059c6040519384610f96565b80835236602082840101116100d4578f6080905f6020846105d0958260409801838a01378701015283860194855201610eca565b6060840190815297607f1901126100d45760405193604085018581106001600160401b038211176106f65760405260a08f01358086529e60c00135936001600160e01b0319851685036100d4576001986106ad6034605460209996876106d39a8c9a8b809b019182528260808201525197519251965191519063ffffffff60e01b905116908a6040519889958287019b8c526001600160601b03199060601b1660408701528051918291018787015e8401926001600160801b03199060801b16858401526064830152608482015203016014810184520182610f96565b5190206040519582879351918291018585015e8201908382015203018084520182610f96565b996106e8576106e19061155f565b01966104f4565b6106f1906113dc565b6106e1565b634e487b7160e01b5f52604160045260245ffd5b60208151910120916084820135908112156100d4578101906004820135926001600160401b0384116100d45760608402360360248401136100d4576060945f5b85811015610899576004606082028601016060601f1982360301126100d45760405190606082018281106001600160401b038211176106f657604052602081013591828152604082019961079d8b610ede565b92836020840152606001926107b184610eca565b6040819401526040519260208401918683526001600160601b03199060601b1660408501526001600160801b03199060801b166054840152604483526107f8606484610f96565b60405192828493516020819201602086015e83019060208201905f8252519283915e016020015f815203601f19810182526108339082610f96565b9861083d90611166565b6108468261117a565b61084f91611293565b6108589061117a565b6040519182526001600160801b0316602082015260407fa217f2987a7942c2966f1fd16d39097862308325249e8b9fb4c00a430fd6578391a160010161074a565b50855160208701206044840192906001600160a01b036108b885611166565b16610988575b6020946108ee60646108e76108e160035497602486013580990361095657611166565b97611166565b920161117a565b9060405194878601966001600160601b03199060601b16875260348601526001600160601b03199060601b1660548501526001600160801b03199060801b166068840152607883015260988201526098815261094b60b882610f96565b519020604051908152f35b886003557f5c601f20d27885120b6fed87a4c313849b86eaddc9d28e7685e2e66a9c0809308b6040518b8152a1611166565b61099184611166565b60015495906109a96001600160a01b03881615610ef2565b6001600160a01b03166001600160a01b0319969096168617600155851561019b57602460206001600160a01b036109e16101126111ad565b16604051928380926370a0823160e01b82523060048301525afa908115610190575f91610a27575b506020966001600160801b03610a20921690611293565b94506108be565b90506020813d602011610a52575b81610a4260209383610f96565b810103126100d457516020610a09565b3d9150610a35565b60405162461bcd60e51b815260206004820152601d60248201527f6163746f724964206d757374206265207468697320636f6e74726163740000006044820152606490fd5b346100d4575f3660031901126100d4576002546040516001600160a01b039091168152602090f35b346100d4575f3660031901126100d4575f546040516001600160a01b039091168152602090f35b346100d45760203660031901126100d457610b0c6004541515610f36565b6001600160a01b03610b1c61125d565b167f0354817698da67944179457b89e15c1c57ca7b8cfd9d80eab1d09c258f6c497860206040516004358152a2005b346100d45760203660031901126100d4576004356001600160801b038116908181036100d457600154610b87906001600160a01b031615610ef2565b81610bba575b7f85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c054236667602083604051908152a1005b906020610c0292610bc96111ad565b6001600160a01b03610bda82611200565b16905f610be561125d565b6040516323b872dd60e01b81529788958694859360048501610fcf565b03925af190811561019057610c416020927f85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c054236667945f91610c485750610ff9565b9150610b8d565b6103779150843d861161037d5761036f8183610f96565b346100d4575f3660031901126100d4576020600354604051908152f35b346100d45760403660031901126100d4576004356001600160a01b038116908190036100d4576024356001600160a01b03811691908290036100d457610ccb6001600160a01b036104886111ad565b60025490610ce26001600160a01b0383161561110f565b5f5491610cf86001600160a01b0384161561110f565b6001600160a01b03199081169190911760025516175f55005b346100d4575f3660031901126100d4576001546040516001600160a01b039091168152602090f35b346100d45760603660031901126100d4576024356001600160401b0381116100d457610d69903690600401610e9d565b90604435916001600160801b0383168084036100d457600154610d95906001600160a01b031615610ef2565b610da26004541515610f36565b610df2575b7fb64dad8a89028819d048f9c75ec4c516341da68972bb68a8e1262b5443c61e7f91610ded6001600160a01b03610ddc61125d565b169460405193849360043585611095565b0390a2005b610e3a91602084610e016111ad565b6001600160a01b03610e1282611200565b16905f610e1d61125d565b6040516323b872dd60e01b81529889958694859360048501610fcf565b03925af1928315610190577fb64dad8a89028819d048f9c75ec4c516341da68972bb68a8e1262b5443c61e7f93610e77915f91610e7e5750610ff9565b9150610da7565b610e97915060203d60201161037d5761036f8183610f96565b8661034a565b9181601f840112156100d4578235916001600160401b0383116100d457602083818601950101116100d457565b35906001600160801b03821682036100d457565b35906001600160a01b03821682036100d457565b15610ef957565b60405162461bcd60e51b81526020600482015260156024820152741c1c9bd9dc985b481a5cc81d195c9b5a5b985d1959605a1b6044820152606490fd5b15610f3d57565b60405162461bcd60e51b815260206004820152602b60248201527f696e697469616c697a6572206861736e2774206372656174656420696e69742060448201526a1b595cdcd859d9481e595d60aa1b6064820152608490fd5b90601f801991011681019081106001600160401b038211176106f657604052565b908160209103126100d4575180151581036100d45790565b6001600160a01b039182168152911660208201526001600160801b03909116604082015260600190565b1561100057565b60405162461bcd60e51b815260206004820152604160248201527f6661696c656420746f207472616e73666572206e6f6e2d7a65726f20616d6f7560448201527f6e74206f662057566172612066726f6d20736f7572636520746f20726f7574656064820152603960f91b608482015260a490fd5b908060209392818452848401375f828201840152601f01601f1916010190565b926040926110bc916001600160801b03939796978652606060208701526060860191611075565b9416910152565b156110ca57565b60405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f742074686520726f7574657200000000000000006044820152606490fd5b1561111657565b60405162461bcd60e51b815260206004820152602260248201527f696e697469616c697a657220636f756c64206f6e6c7920626520736574206f6e604482015261636560f01b6064820152608490fd5b356001600160a01b03811681036100d45790565b356001600160801b03811681036100d45790565b908160209103126100d457516001600160a01b03811681036100d45790565b6040516303e21fa960e61b8152602081600481305afa908115610190575f916111d4575090565b6111f6915060203d6020116111f9575b6111ee8183610f96565b81019061118e565b90565b503d6111e4565b60405163088f50cf60e41b815290602090829060049082906001600160a01b03165afa908115610190575f9161123e575b506001600160a01b031690565b611257915060203d6020116111f9576111ee8183610f96565b5f611231565b5f54336001600160a01b0390911603611274573290565b3390565b6001600160401b0381116106f657601f01601f191660200190565b906001600160801b0316806112a6575050565b60209060446001600160a01b036112be6101126111ad565b60405163a9059cbb60e01b81526001600160a01b0390961660048701526024860193909352849283915f91165af1908115610190575f91611347575b501561130257565b60405162461bcd60e51b815260206004820152601860248201527f6661696c656420746f207472616e7366657220575661726100000000000000006044820152606490fd5b611360915060203d60201161037d5761036f8183610f96565b5f6112fa565b903590601e19813603018212156100d457018035906001600160401b0382116100d4576020019181360383136100d457565b356001600160e01b0319811681036100d45790565b3d156113d7573d906113be82611278565b916113cc6040519384610f96565b82523d5f602084013e565b606090565b602081016113e981611166565b9061140160608401926113fb8461117a565b90611293565b5f546001600160a01b0316908161149a575b50507fe240a19e4a4ef8e5861c0eea48f9ab2cdb47bfe98347c94ccabb9c45f7d8d1c69061144f6114476040850185611366565b91909261117a565b60806001600160e01b031961146660a08801611398565b16956001600160801b03611487604051968796606088526060880191611075565b93166020850152013560408301520390a2565b5f916114a68392611166565b826115406114b76040890189611366565b6114c38993929361117a565b6114cf60a08c01611398565b604051639649744960e01b602082019081526001600160a01b03909816602482015260a060448201529485936001600160801b03916115129160c4870191611075565b9216606484015260808c013560848401526001600160e01b03191660a483015203601f198101835282610f96565b51926207a120f161154f6113ad565b5061155b575f80611413565b5050565b5f546001600160a01b0316806115d9575b507f9c4ffe7286aed9eb205c8adb12b51219122c7e56c67017f312af0e15f80117736115d46115a160208401611166565b6115ae6040850185611366565b6115bd6060879593950161117a565b9060405194859460018060a01b0316973585611095565b0390a2565b5f809183826115ea60208301611166565b6116686115fa6040850185611366565b92906001600160801b036116536116136060890161117a565b6040516374fad4ef60e01b60208201908152993560248201526001600160a01b03909516604486015260806064860152939586949360a486019190611075565b9116608483015203601f198101835282610f96565b51926207a120f16116776113ad565b50611682575f611570565b5056fea26469706673582212207bd98dde2756a9134e07240455fbe853fc91b36f97f5de661299768fb8022b9264736f6c634300081c0033","sourceMap":"403:9266:157:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:9266:157;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;;;;;;;;-1:-1:-1;;403:9266:157;;;;;;-1:-1:-1;;;;;403:9266:157;1633:23;;403:9266;;3811:41;;403:9266;-1:-1:-1;;;;;3811:16:157;3818:8;;:::i;:::-;3811:16;:::i;:::-;403:9266;;;;;;;;;;3811:41;;3846:4;403:9266;3811:41;;403:9266;3811:41;;;;;;;403:9266;3811:41;;;403:9266;;-1:-1:-1;;;;;3888:16:157;403:9266;;3888:16;;:::i;:::-;403:9266;3811:41;;;403:9266;3811:41;;403:9266;3811:41;;;;;;403:9266;3811:41;;;:::i;:::-;;;403:9266;;;;;;;-1:-1:-1;;;;;3811:41:157;;;;;-1:-1:-1;3811:41:157;;;403:9266;;;;;;;;;;;;-1:-1:-1;;;403:9266:157;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:9266:157;;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;2492:57;;-1:-1:-1;;;;;403:9266:157;2500:23;2492:57;:::i;:::-;403:9266;;2204:9;;;:37;;;403:9266;;;;1103:259;;403:9266;;;-1:-1:-1;;403:9266:157;;;;;;;2500:9;3049:57;403:9266;;;;;;2992:40;;;3017:4;;403:9266;;;;;;;;;2992:40;;;;;;:::i;:::-;403:9266;2982:51;;;3049:57;-1:-1:-1;;;;;3078:9:157;;:::i;:::-;403:9266;;;;3049:57;;;;;;:::i;:::-;;;;403:9266;;;;;;;;;;;;;;;;;;1103:259;1191:61;403:9266;1154:8;;;:::i;:::-;-1:-1:-1;;;;;1191:18:157;;;:::i;:::-;403:9266;1223:9;403:9266;1223:9;;:::i;:::-;403:9266;;-1:-1:-1;;;1191:61:157;;403:9266;;;;;;;;1191:61;;;:::i;:::-;;;;;;;;;1266:85;1191:61;403:9266;1191:61;;;1103:259;1266:85;;:::i;:::-;1103:259;;1191:61;;;;403:9266;1191:61;403:9266;1191:61;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;403:9266;;;-1:-1:-1;;;403:9266:157;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;403:9266:157;;;;;;;2204:37;2217:9;;;:::i;:::-;2230:11;403:9266;-1:-1:-1;;;;;403:9266:157;;;;;2217:24;2204:37;;403:9266;;;;;;-1:-1:-1;;403:9266:157;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:9266:157;;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;;;;;-1:-1:-1;;403:9266:157;;;;;860:59;-1:-1:-1;;;;;882:8:157;;:::i;:::-;403:9266;868:10;:22;860:59;:::i;:::-;4564:19;;;:::i;:::-;4595:4;-1:-1:-1;;;;;403:9266:157;;;4564:36;403:9266;;4733:20;;;403:9266;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;;;;;;;;;5828:27;;-1:-1:-1;;403:9266:157;;;;;;5828:27;403:9266;5908:3;5886:20;;;;;;403:9266;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4733:20;403:9266;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;403:9266:157;;;;;;;;;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;4733:20;403:9266;;;;;;;;;;;-1:-1:-1;;;;;;403:9266:157;;;;;;;;3679:243:161;403:9266:157;;;;;;;;;;;;;;;;;;;;;;;;;3778:15:161;;403:9266:157;;;;;;;;;;;;;;;3679:243:161;;;;;;403:9266:157;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;;;;;;;;;3679:243:161;;;;;;;;;;:::i;:::-;403:9266:157;3656:276:161;;403:9266:157;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6144:28;;;6214:7;;;:::i;:::-;403:9266;5871:13;;;6140:162;6279:7;;;:::i;:::-;6140:162;;403:9266;;;;;;;;;;;;5886:20;403:9266;;;;;6329:25;4848:23;;;;403:9266;;;;;;;;;;;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;;;;;;;;8077:13;403:9266;8112:3;8092:18;;;;;;403:9266;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;5709:65:161;403:9266:157;5709:65:161;;403:9266:157;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;;5709:65:161;;;;;;:::i;:::-;403:9266:157;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8297:17;;;;:::i;:::-;8316:11;;;:::i;:::-;;;;:::i;:::-;8378;;;:::i;:::-;403:9266;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;8348:42;;;403:9266;;8077:13;;8092:18;-1:-1:-1;403:9266:157;;;;;8418:27;403:9266;4932:21;;;;-1:-1:-1;;;;;4932:21:157;;;:::i;:::-;403:9266;4928:102;;8072:329;403:9266;;5422:26;5709:65:161;5387:21:157;5316:19;5095:9;403:9266;5108:24;;;;403:9266;5095:37;;;5091:110;;5316:19;:::i;:::-;5387:21;;:::i;:::-;5422:26;;;:::i;:::-;403:9266;;;4408:101:161;;;;403:9266:157;-1:-1:-1;;;;;403:9266:157;;;;;;;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;;;;;;;;;;4408:101:161;;;;;;:::i;:::-;403:9266:157;4385:134:161;;403:9266:157;;;;;;5091:110;403:9266;5095:9;403:9266;8978:23;403:9266;;;;;;8978:23;5316:19;:::i;4928:102::-;4997:21;;;:::i;:::-;403:9266;;;;2492:57;-1:-1:-1;;;;;403:9266:157;;2500:23;2492:57;:::i;:::-;-1:-1:-1;;;;;403:9266:157;-1:-1:-1;;;;;;403:9266:157;;;;;;;;1633:23;;403:9266;;3811:41;403:9266;-1:-1:-1;;;;;3811:16:157;3818:8;;:::i;3811:16::-;403:9266;;;;;;;;;;3811:41;;4595:4;403:9266;3811:41;;403:9266;3811:41;;;;;;;403:9266;3811:41;;;4928:102;403:9266;;;-1:-1:-1;;;;;3888:16:157;403:9266;;3888:16;;:::i;:::-;4928:102;;;;3811:41;;;403:9266;3811:41;;403:9266;3811:41;;;;;;403:9266;3811:41;;;:::i;:::-;;;403:9266;;;;;;3811:41;;;;;-1:-1:-1;3811:41:157;;403:9266;;;-1:-1:-1;;;403:9266:157;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:9266:157;;;;664:26;403:9266;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;;;;;;-1:-1:-1;;403:9266:157;;;;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;;;;;;-1:-1:-1;;403:9266:157;;;;1874:65;403:9266;;1882:9;;1874:65;:::i;:::-;-1:-1:-1;;;;;3536:9:157;;:::i;:::-;403:9266;3501:45;403:9266;;;;;;;3501:45;403:9266;;;;;;;-1:-1:-1;;403:9266:157;;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;;2492:57;;-1:-1:-1;;;;;403:9266:157;2500:23;2492:57;:::i;:::-;1107:10;1103:259;;403:9266;3667:39;403:9266;;;;;;;3667:39;403:9266;1103:259;1154:8;403:9266;1191:61;1154:8;;;:::i;:::-;-1:-1:-1;;;;;1191:18:157;;;:::i;:::-;403:9266;1223:9;403:9266;1223:9;;:::i;:::-;403:9266;;-1:-1:-1;;;1191:61:157;;403:9266;;;;;;;;1191:61;;;:::i;:::-;;;;;;;;;;1266:85;403:9266;1191:61;3667:39;1191:61;403:9266;1191:61;;;1266:85;;:::i;:::-;1103:259;;;;1191:61;;;;;;;;;;;;;;:::i;403:9266::-;;;;;;-1:-1:-1;;403:9266:157;;;;;696:24;403:9266;;;;;;;;;;;;;-1:-1:-1;;403:9266:157;;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;860:59;-1:-1:-1;;;;;882:8:157;;:::i;860:59::-;4066:11;403:9266;;4058:72;-1:-1:-1;;;;;403:9266:157;;4066:25;4058:72;:::i;:::-;403:9266;;;4140:68;-1:-1:-1;;;;;403:9266:157;;4148:21;4140:68;:::i;:::-;-1:-1:-1;;;;;;403:9266:157;;;;;;;4066:11;403:9266;;;;;;;;;;;;-1:-1:-1;;403:9266:157;;;;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;;;;;;-1:-1:-1;;403:9266:157;;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;2492:57;;-1:-1:-1;;;;;403:9266:157;2500:23;2492:57;:::i;:::-;1874:65;403:9266;;1882:9;;1874:65;:::i;:::-;1103:259;;403:9266;3338:63;;;-1:-1:-1;;;;;3373:9:157;;:::i;:::-;403:9266;;;;;;;;;3338:63;;:::i;:::-;;;;403:9266;1103:259;1191:61;1154:8;403:9266;1154:8;;;:::i;:::-;-1:-1:-1;;;;;1191:18:157;;;:::i;:::-;403:9266;1223:9;403:9266;1223:9;;:::i;:::-;403:9266;;-1:-1:-1;;;1191:61:157;;403:9266;;;;;;;;1191:61;;;:::i;:::-;;;;;;;;;;3338:63;1191:61;1266:85;1191:61;403:9266;1191:61;;;1266:85;;:::i;:::-;1103:259;;;;1191:61;;;;403:9266;1191:61;403:9266;1191:61;;;;;;;:::i;:::-;;;;403:9266;;;;;;;;;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;403:9266:157;;;;;;:::o;:::-;;;-1:-1:-1;;;;;403:9266:157;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;403:9266:157;;;;;;;;;;;;-1:-1:-1;;;403:9266:157;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;403:9266:157;;;;;;;;;;;;;;;;;-1:-1:-1;;;403:9266:157;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;403:9266:157;;;;;;;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;403:9266:157;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;403:9266:157;;;;;;;;;;;;;;;;;;;;-1:-1:-1;403:9266:157;;;;;;;;-1:-1:-1;;403:9266:157;;;;:::o;:::-;;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;403:9266:157;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;403:9266:157;;;;;;;;;;;;;;;;;-1:-1:-1;;;403:9266:157;;;;;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;:::o;:::-;;-1:-1:-1;;;;;403:9266:157;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;:::o;2606:108::-;403:9266;;-1:-1:-1;;;2671:36:157;;;403:9266;2671:36;403:9266;2692:4;2671:36;;;;;;;-1:-1:-1;2671:36:157;;;2664:43;2606:108;:::o;2671:36::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;2606:108;:::o;2671:36::-;;;;;9048:182;403:9266;;-1:-1:-1;;;9150:33:157;;403:9266;9150:33;;403:9266;;9150:33;;403:9266;;-1:-1:-1;;;;;403:9266:157;9150:33;;;;;;;-1:-1:-1;9150:33:157;;;9048:182;-1:-1:-1;;;;;;403:9266:157;;9048:182::o;9150:33::-;;;;;;;;;;;;;;:::i;:::-;;;;9236:182;403:9266;;9300:10;-1:-1:-1;;;;;403:9266:157;;;9300:21;403:9266;;9344:9;9337:16;:::o;9296:116::-;9300:10;9384:17;:::o;403:9266::-;-1:-1:-1;;;;;403:9266:157;;;;;;-1:-1:-1;;403:9266:157;;;;:::o;9424:243::-;;-1:-1:-1;;;;;403:9266:157;9506:10;9502:159;;9424:243;;:::o;9502:159::-;403:9266;;9547:45;-1:-1:-1;;;;;9547:16:157;9554:8;;:::i;9547:16::-;403:9266;;-1:-1:-1;;;9547:45:157;;-1:-1:-1;;;;;403:9266:157;;;9547:45;;;403:9266;;;;;;;;;;;;9515:1;;403:9266;9547:45;;;;;;;9515:1;9547:45;;;9502:159;403:9266;;;;9424:243::o;403:9266::-;;;-1:-1:-1;;;403:9266:157;;;9547:45;403:9266;;;;;;;;;9547:45;403:9266;;;;;;9547:45;;;;403:9266;9547:45;403:9266;9547:45;;;;;;;:::i;:::-;;;;403:9266;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;;;;;;403:9266:157;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;403:9266:157;;;;:::o;:::-;;;:::o;7148:784::-;7240:20;;;;;;:::i;:::-;7262:14;;;;;;;;;:::i;:::-;;;:::i;:::-;7292:7;403:9266;-1:-1:-1;;;;;403:9266:157;;;7288:529;;7148:784;7838:16;;7832:93;7838:16;7856:14;7838:16;;;;;;:::i;:::-;7856:14;;;;:::i;:::-;7872:21;-1:-1:-1;;;;;;7898:26:157;;;;;:::i;:::-;403:9266;;-1:-1:-1;;;;;403:9266:157;7838:16;403:9266;;;;7262:14;403:9266;;7262:14;403:9266;;;;:::i;:::-;;;7240:20;403:9266;;;7872:21;403:9266;7838:16;403:9266;;;7832:93;;;7148:784::o;7288:529::-;7292:7;7446:20;;;;;:::i;:::-;7484:16;7353:279;7484:16;;;;;;:::i;:::-;7518:14;;;;;;:::i;:::-;7592:26;;;;;:::i;:::-;7484:16;403:9266;-1:-1:-1;;;7240:20:157;7353:279;;;;;-1:-1:-1;;;;;403:9266:157;;;7353:279;;;403:9266;;;;;;;;;-1:-1:-1;;;;;403:9266:157;;;;;;;;:::i;:::-;;;;;;;7550:21;;;403:9266;;;;;-1:-1:-1;;;;;;403:9266:157;;;;;7353:279;-1:-1:-1;;7353:279:157;;;;;;:::i;:::-;7704:36;;7722:7;7704:36;;;:::i;:::-;;7755:52;;7288:529;;;;7755:52;7786:7;;:::o;6420:653::-;6505:7;403:9266;-1:-1:-1;;;;;403:9266:157;;6501:474;;6420:653;7011:20;6990:76;;7011:20;;;;;:::i;:::-;7033:16;;;;;;:::i;:::-;7051:14;;;;;;;;:::i;:::-;403:9266;7033:16;403:9266;;;;;;;;;;;;6990:76;;:::i;:::-;;;;6420:653::o;6501:474::-;6505:7;6690:20;;;;;;;;;:::i;:::-;6566:224;6728:16;;;;;;:::i;:::-;6762:14;;-1:-1:-1;;;;;403:9266:157;6762:14;;;;;:::i;:::-;6728:16;403:9266;-1:-1:-1;;;6690:20:157;6566:224;;;;;403:9266;;6566:224;;;403:9266;-1:-1:-1;;;;;403:9266:157;;;;;;;;;;;;;;;;;;;;;6566:224;403:9266;:::i;:::-;;;;;;;6566:224;403:9266;;6566:224;;;;;;:::i;:::-;6862:36;;6880:7;6862:36;;;:::i;:::-;;6913:52;;6501:474;;;6913:52;6944:7;:::o","linkReferences":{}},"methodIdentifiers":{"claimValue(bytes32)":"91d5a64c","decoder()":"9cb33005","executableBalanceTopUp(uint128)":"704ed542","inheritor()":"36a52a18","initialize(address,address)":"485cc955","initializer()":"9ce110d7","nonce()":"affed0e0","performStateTransition((address,bytes32,address,uint128,(bytes32,address,uint128)[],(bytes32,address,bytes,uint128,(bytes32,bytes4))[]))":"9ed32350","router()":"f887ea40","sendMessage(bytes,uint128)":"d5624222","sendReply(bytes32,bytes,uint128)":"29336f39","stateHash()":"701da98e","transferLockedValueToInheritor()":"e43f3433"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"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\":[],\"name\":\"decoder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"_value\",\"type\":\"uint128\"}],\"name\":\"executableBalanceTopUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inheritor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_initializer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_decoder\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initializer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"actorId\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"newStateHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"inheritor\",\"type\":\"address\"},{\"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 Gear.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 Gear.ReplyDetails\",\"name\":\"replyDetails\",\"type\":\"tuple\"}],\"internalType\":\"struct Gear.Message[]\",\"name\":\"messages\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Gear.StateTransition\",\"name\":\"_transition\",\"type\":\"tuple\"}],\"name\":\"performStateTransition\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"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\":\"nonpayable\",\"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\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stateHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"transferLockedValueToInheritor\",\"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\":{},\"stateVariables\":{\"initializer\":{\"details\":\"This nonce is the source for message ids unique generations. Must be bumped on each send. Zeroed nonce is always represent init message by eligible account.\"}},\"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/\",\":symbiotic-core/=lib/symbiotic-core/\"],\"viaIR\":true},\"sources\":{\"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/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\":\"0x1899463c32e174ebde503846dd1b40ddb6d6ba15e21d68b21b8151e97af35a5e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://3c91227968491548c006b70f1de87bb1b67a83d72d05faf19ba09ddfe27de3f6\",\"dweb:/ipfs/QmeXXQd2Wk1Jp1rvbysD1hZb3QVXR3sPxkU8UKBfwrKmkm\"]},\"src/IMirrorDecoder.sol\":{\"keccak256\":\"0x95bfe42461bd03e726f894679f4b4133034a405672fe8343c3343d0964cf9072\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://a0907d84596ed62b9ea222fd841fc0259e87b17dd0b5af3f6d0d8a8f4726994d\",\"dweb:/ipfs/QmTkumKh7DBJNXrark6NBqBxCtnYmbRMGYkRyxxzpW9wKr\"]},\"src/IMirrorProxy.sol\":{\"keccak256\":\"0x56448b8905cc408f5656d47c893f3cda6623992ef1ba6a2e0a1be06b04c0b570\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://7d148123c4f51abce8b8e92c45830dd7de3829e228f37fd2e9093616dd7b2469\",\"dweb:/ipfs/QmTkohe2uFVsJiCKdu7QBFYff6L3tzvE7rTjnRhnjdgEmG\"]},\"src/IRouter.sol\":{\"keccak256\":\"0x924f9a3927e943beba5f83107a8b206ab64c6a8f31deed543b923007bb49b9b8\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8775b64fab00cc3b3a87c6e980d8dfc32a851ea668c7d719d7074bd8a56d0f17\",\"dweb:/ipfs/QmRofDymj9HH3ePviV6yUiweCb8dfKKwbBF6ChwZabYGFi\"]},\"src/IWrappedVara.sol\":{\"keccak256\":\"0xfc2f9955b1d8f74a98a087b490a03b86933c423eb58b840f1e3eb4cd58eac175\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://5942f66657786636ddb832587404810bf65fc757e12ddaa07393a0b3f885840f\",\"dweb:/ipfs/QmTEP15EF9zrA7bCj8cesNd8QyUPHM3XgtKJecCUjsA5Jf\"]},\"src/Mirror.sol\":{\"keccak256\":\"0x494ced7f53fdc22cf426db303e63345a1022aff1c2ddcb378a5cfd8a1fb8f2d9\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://11392c8f9e2a34094e8ace4f34fadce3f1d6a53679797e69d251fead6383969f\",\"dweb:/ipfs/QmRsY5xdxWgtmHArNQqBScABFyMehg1HcoeTjjeysazv1E\"]},\"src/libraries/Gear.sol\":{\"keccak256\":\"0xa543913342b4408d07fe4d884280b5c1d2430e8386713e9b6e1a5924e3e2bfbc\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://9e466d986795dab2d942984fcbf03e8e8995cd17e4221f1dfca715af091d03ec\",\"dweb:/ipfs/QmWo16RoqKERSYornA8qPqL32rYveeEHxiHmDHongS6uzy\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"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":[],"stateMutability":"view","type":"function","name":"decoder","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint128","name":"_value","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"executableBalanceTopUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"inheritor","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_initializer","type":"address"},{"internalType":"address","name":"_decoder","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"initializer","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"nonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"struct Gear.StateTransition","name":"_transition","type":"tuple","components":[{"internalType":"address","name":"actorId","type":"address"},{"internalType":"bytes32","name":"newStateHash","type":"bytes32"},{"internalType":"address","name":"inheritor","type":"address"},{"internalType":"uint128","name":"valueToReceive","type":"uint128"},{"internalType":"struct Gear.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 Gear.Message[]","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 Gear.ReplyDetails","name":"replyDetails","type":"tuple","components":[{"internalType":"bytes32","name":"to","type":"bytes32"},{"internalType":"bytes4","name":"code","type":"bytes4"}]}]}]}],"stateMutability":"nonpayable","type":"function","name":"performStateTransition","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"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":"nonpayable","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":"nonpayable","type":"function","name":"sendReply"},{"inputs":[],"stateMutability":"view","type":"function","name":"stateHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"transferLockedValueToInheritor"}],"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/","symbiotic-core/=lib/symbiotic-core/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/Mirror.sol":"Mirror"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"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/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":"0x1899463c32e174ebde503846dd1b40ddb6d6ba15e21d68b21b8151e97af35a5e","urls":["bzz-raw://3c91227968491548c006b70f1de87bb1b67a83d72d05faf19ba09ddfe27de3f6","dweb:/ipfs/QmeXXQd2Wk1Jp1rvbysD1hZb3QVXR3sPxkU8UKBfwrKmkm"],"license":"UNLICENSED"},"src/IMirrorDecoder.sol":{"keccak256":"0x95bfe42461bd03e726f894679f4b4133034a405672fe8343c3343d0964cf9072","urls":["bzz-raw://a0907d84596ed62b9ea222fd841fc0259e87b17dd0b5af3f6d0d8a8f4726994d","dweb:/ipfs/QmTkumKh7DBJNXrark6NBqBxCtnYmbRMGYkRyxxzpW9wKr"],"license":"UNLICENSED"},"src/IMirrorProxy.sol":{"keccak256":"0x56448b8905cc408f5656d47c893f3cda6623992ef1ba6a2e0a1be06b04c0b570","urls":["bzz-raw://7d148123c4f51abce8b8e92c45830dd7de3829e228f37fd2e9093616dd7b2469","dweb:/ipfs/QmTkohe2uFVsJiCKdu7QBFYff6L3tzvE7rTjnRhnjdgEmG"],"license":"UNLICENSED"},"src/IRouter.sol":{"keccak256":"0x924f9a3927e943beba5f83107a8b206ab64c6a8f31deed543b923007bb49b9b8","urls":["bzz-raw://8775b64fab00cc3b3a87c6e980d8dfc32a851ea668c7d719d7074bd8a56d0f17","dweb:/ipfs/QmRofDymj9HH3ePviV6yUiweCb8dfKKwbBF6ChwZabYGFi"],"license":"UNLICENSED"},"src/IWrappedVara.sol":{"keccak256":"0xfc2f9955b1d8f74a98a087b490a03b86933c423eb58b840f1e3eb4cd58eac175","urls":["bzz-raw://5942f66657786636ddb832587404810bf65fc757e12ddaa07393a0b3f885840f","dweb:/ipfs/QmTEP15EF9zrA7bCj8cesNd8QyUPHM3XgtKJecCUjsA5Jf"],"license":"UNLICENSED"},"src/Mirror.sol":{"keccak256":"0x494ced7f53fdc22cf426db303e63345a1022aff1c2ddcb378a5cfd8a1fb8f2d9","urls":["bzz-raw://11392c8f9e2a34094e8ace4f34fadce3f1d6a53679797e69d251fead6383969f","dweb:/ipfs/QmRsY5xdxWgtmHArNQqBScABFyMehg1HcoeTjjeysazv1E"],"license":"UNLICENSED"},"src/libraries/Gear.sol":{"keccak256":"0xa543913342b4408d07fe4d884280b5c1d2430e8386713e9b6e1a5924e3e2bfbc","urls":["bzz-raw://9e466d986795dab2d942984fcbf03e8e8995cd17e4221f1dfca715af091d03ec","dweb:/ipfs/QmWo16RoqKERSYornA8qPqL32rYveeEHxiHmDHongS6uzy"],"license":"UNLICENSED"}},"version":1},"storageLayout":{"storage":[{"astId":74605,"contract":"src/Mirror.sol:Mirror","label":"decoder","offset":0,"slot":"0","type":"t_address"},{"astId":74607,"contract":"src/Mirror.sol:Mirror","label":"inheritor","offset":0,"slot":"1","type":"t_address"},{"astId":74610,"contract":"src/Mirror.sol:Mirror","label":"initializer","offset":0,"slot":"2","type":"t_address"},{"astId":74612,"contract":"src/Mirror.sol:Mirror","label":"stateHash","offset":0,"slot":"3","type":"t_bytes32"},{"astId":74614,"contract":"src/Mirror.sol:Mirror","label":"nonce","offset":0,"slot":"4","type":"t_uint256"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"ast":{"absolutePath":"src/Mirror.sol","id":75332,"exportedSymbols":{"Clones":[41840],"Gear":[77275],"IMirror":[73559],"IMirrorDecoder":[73594],"IMirrorProxy":[73602],"IRouter":[73844],"IWrappedVara":[73855],"Mirror":[75331]},"nodeType":"SourceUnit","src":"39:9631:157","nodes":[{"id":74587,"nodeType":"PragmaDirective","src":"39:24:157","nodes":[],"literals":["solidity","^","0.8",".26"]},{"id":74589,"nodeType":"ImportDirective","src":"65:48:157","nodes":[],"absolutePath":"src/IMirrorProxy.sol","file":"./IMirrorProxy.sol","nameLocation":"-1:-1:-1","scope":75332,"sourceUnit":73603,"symbolAliases":[{"foreign":{"id":74588,"name":"IMirrorProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73602,"src":"73:12:157","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":74591,"nodeType":"ImportDirective","src":"114:38:157","nodes":[],"absolutePath":"src/IMirror.sol","file":"./IMirror.sol","nameLocation":"-1:-1:-1","scope":75332,"sourceUnit":73560,"symbolAliases":[{"foreign":{"id":74590,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73559,"src":"122:7:157","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":74593,"nodeType":"ImportDirective","src":"153:38:157","nodes":[],"absolutePath":"src/IRouter.sol","file":"./IRouter.sol","nameLocation":"-1:-1:-1","scope":75332,"sourceUnit":73845,"symbolAliases":[{"foreign":{"id":74592,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73844,"src":"161:7:157","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":74595,"nodeType":"ImportDirective","src":"192:48:157","nodes":[],"absolutePath":"src/IWrappedVara.sol","file":"./IWrappedVara.sol","nameLocation":"-1:-1:-1","scope":75332,"sourceUnit":73856,"symbolAliases":[{"foreign":{"id":74594,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73855,"src":"200:12:157","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":74597,"nodeType":"ImportDirective","src":"241:52:157","nodes":[],"absolutePath":"src/IMirrorDecoder.sol","file":"./IMirrorDecoder.sol","nameLocation":"-1:-1:-1","scope":75332,"sourceUnit":73595,"symbolAliases":[{"foreign":{"id":74596,"name":"IMirrorDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73594,"src":"249:14:157","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":74599,"nodeType":"ImportDirective","src":"294:64:157","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/Clones.sol","file":"@openzeppelin/contracts/proxy/Clones.sol","nameLocation":"-1:-1:-1","scope":75332,"sourceUnit":41841,"symbolAliases":[{"foreign":{"id":74598,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41840,"src":"302:6:157","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":74601,"nodeType":"ImportDirective","src":"359:42:157","nodes":[],"absolutePath":"src/libraries/Gear.sol","file":"./libraries/Gear.sol","nameLocation":"-1:-1:-1","scope":75332,"sourceUnit":77276,"symbolAliases":[{"foreign":{"id":74600,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77275,"src":"367:4:157","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75331,"nodeType":"ContractDefinition","src":"403:9266:157","nodes":[{"id":74605,"nodeType":"VariableDeclaration","src":"436:22:157","nodes":[],"baseFunctions":[73512],"constant":false,"functionSelector":"9cb33005","mutability":"mutable","name":"decoder","nameLocation":"451:7:157","scope":75331,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":74604,"name":"address","nodeType":"ElementaryTypeName","src":"436:7:157","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":74607,"nodeType":"VariableDeclaration","src":"464:24:157","nodes":[],"baseFunctions":[73497],"constant":false,"functionSelector":"36a52a18","mutability":"mutable","name":"inheritor","nameLocation":"479:9:157","scope":75331,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":74606,"name":"address","nodeType":"ElementaryTypeName","src":"464:7:157","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":74610,"nodeType":"VariableDeclaration","src":"664:26:157","nodes":[],"constant":false,"documentation":{"id":74608,"nodeType":"StructuredDocumentation","src":"494:165:157","text":"@dev This nonce is the source for message ids unique generations. Must be bumped on each send. Zeroed nonce is always represent init message by eligible account."},"functionSelector":"9ce110d7","mutability":"mutable","name":"initializer","nameLocation":"679:11:157","scope":75331,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":74609,"name":"address","nodeType":"ElementaryTypeName","src":"664:7:157","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":74612,"nodeType":"VariableDeclaration","src":"696:24:157","nodes":[],"baseFunctions":[73492],"constant":false,"functionSelector":"701da98e","mutability":"mutable","name":"stateHash","nameLocation":"711:9:157","scope":75331,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":74611,"name":"bytes32","nodeType":"ElementaryTypeName","src":"696:7:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"id":74614,"nodeType":"VariableDeclaration","src":"726:20:157","nodes":[],"baseFunctions":[73502],"constant":false,"functionSelector":"affed0e0","mutability":"mutable","name":"nonce","nameLocation":"741:5:157","scope":75331,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74613,"name":"uint256","nodeType":"ElementaryTypeName","src":"726:7:157","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":74628,"nodeType":"ModifierDefinition","src":"828:109:157","nodes":[],"body":{"id":74627,"nodeType":"Block","src":"850:87:157","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":74622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":74618,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"868:3:157","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":74619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"872:6:157","memberName":"sender","nodeType":"MemberAccess","src":"868:10:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":74620,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74736,"src":"882:6:157","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":74621,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"882:8:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"868:22:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"63616c6c6572206973206e6f742074686520726f75746572","id":74623,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"892:26:157","typeDescriptions":{"typeIdentifier":"t_stringliteral_198bece7548b89eb58a1e57e2a5c5ba93b63a70943a48214dc1508db322b92d3","typeString":"literal_string \"caller is not the router\""},"value":"caller is not the router"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_198bece7548b89eb58a1e57e2a5c5ba93b63a70943a48214dc1508db322b92d3","typeString":"literal_string \"caller is not the router\""}],"id":74617,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"860:7:157","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":74624,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"860:59:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74625,"nodeType":"ExpressionStatement","src":"860:59:157"},{"id":74626,"nodeType":"PlaceholderStatement","src":"929:1:157"}]},"documentation":{"id":74615,"nodeType":"StructuredDocumentation","src":"753:70:157","text":"@dev Only the router can call functions marked with this modifier."},"name":"onlyRouter","nameLocation":"837:10:157","parameters":{"id":74616,"nodeType":"ParameterList","parameters":[],"src":"847:2:157"},"virtual":false,"visibility":"internal"},{"id":74662,"nodeType":"ModifierDefinition","src":"1053:326:157","nodes":[],"body":{"id":74661,"nodeType":"Block","src":"1093:286:157","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":74635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":74633,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74631,"src":"1107:5:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":74634,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1116:1:157","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1107:10:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":74659,"nodeType":"IfStatement","src":"1103:259:157","trueBody":{"id":74658,"nodeType":"Block","src":"1119:243:157","statements":[{"assignments":[74637],"declarations":[{"constant":false,"id":74637,"mutability":"mutable","name":"routerAddr","nameLocation":"1141:10:157","nodeType":"VariableDeclaration","scope":74658,"src":"1133:18:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":74636,"name":"address","nodeType":"ElementaryTypeName","src":"1133:7:157","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":74640,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":74638,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74736,"src":"1154:6:157","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":74639,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1154:8:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1133:29:157"},{"assignments":[74642],"declarations":[{"constant":false,"id":74642,"mutability":"mutable","name":"success","nameLocation":"1181:7:157","nodeType":"VariableDeclaration","scope":74658,"src":"1176:12:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":74641,"name":"bool","nodeType":"ElementaryTypeName","src":"1176:4:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":74652,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":74647,"name":"_source","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75301,"src":"1223:7:157","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":74648,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1223:9:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":74649,"name":"routerAddr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74637,"src":"1234:10:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":74650,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74631,"src":"1246:5:157","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":[{"id":74644,"name":"routerAddr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74637,"src":"1198:10:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":74643,"name":"_wvara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75282,"src":"1191:6:157","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_contract$_IWrappedVara_$73855_$","typeString":"function (address) view returns (contract IWrappedVara)"}},"id":74645,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1191:18:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$73855","typeString":"contract IWrappedVara"}},"id":74646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1210:12:157","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":43139,"src":"1191:31:157","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":74651,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1191:61:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"1176:76:157"},{"expression":{"arguments":[{"id":74654,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74642,"src":"1274:7:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6661696c656420746f207472616e73666572206e6f6e2d7a65726f20616d6f756e74206f662057566172612066726f6d20736f7572636520746f20726f75746572","id":74655,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1283:67:157","typeDescriptions":{"typeIdentifier":"t_stringliteral_89834f4f5b676caeda9aeacc6e70651fe8c874cb9d7867ce1578400f765c69dd","typeString":"literal_string \"failed to transfer non-zero amount of WVara from source to router\""},"value":"failed to transfer non-zero amount of WVara from source to router"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_89834f4f5b676caeda9aeacc6e70651fe8c874cb9d7867ce1578400f765c69dd","typeString":"literal_string \"failed to transfer non-zero amount of WVara from source to router\""}],"id":74653,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1266:7:157","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":74656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1266:85:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74657,"nodeType":"ExpressionStatement","src":"1266:85:157"}]}},{"id":74660,"nodeType":"PlaceholderStatement","src":"1371:1:157"}]},"documentation":{"id":74629,"nodeType":"StructuredDocumentation","src":"943:105:157","text":"@dev Non-zero value must be transferred from source to router in functions marked with this modifier."},"name":"retrievingValue","nameLocation":"1062:15:157","parameters":{"id":74632,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74631,"mutability":"mutable","name":"value","nameLocation":"1086:5:157","nodeType":"VariableDeclaration","scope":74662,"src":"1078:13:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":74630,"name":"uint128","nodeType":"ElementaryTypeName","src":"1078:7:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1077:15:157"},"virtual":false,"visibility":"internal"},{"id":74677,"nodeType":"ModifierDefinition","src":"1589:115:157","nodes":[],"body":{"id":74676,"nodeType":"Block","src":"1615:89:157","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":74671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":74666,"name":"inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74607,"src":"1633:9:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":74669,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1654:1:157","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":74668,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1646:7:157","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":74667,"name":"address","nodeType":"ElementaryTypeName","src":"1646:7:157","typeDescriptions":{}}},"id":74670,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1646:10:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1633:23:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"70726f6772616d206973206e6f74207465726d696e61746564","id":74672,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1658:27:157","typeDescriptions":{"typeIdentifier":"t_stringliteral_645ea9267b04b6ac53df8eea2c448cbffac59a494197543c99a5f296932bd588","typeString":"literal_string \"program is not terminated\""},"value":"program is not terminated"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_645ea9267b04b6ac53df8eea2c448cbffac59a494197543c99a5f296932bd588","typeString":"literal_string \"program is not terminated\""}],"id":74665,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1625:7:157","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":74673,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1625:61:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74674,"nodeType":"ExpressionStatement","src":"1625:61:157"},{"id":74675,"nodeType":"PlaceholderStatement","src":"1696:1:157"}]},"documentation":{"id":74663,"nodeType":"StructuredDocumentation","src":"1488:96:157","text":"@dev Functions marked with this modifier can be called only after the program is terminated."},"name":"whenTerminated","nameLocation":"1598:14:157","parameters":{"id":74664,"nodeType":"ParameterList","parameters":[],"src":"1612:2:157"},"virtual":false,"visibility":"internal"},{"id":74689,"nodeType":"ModifierDefinition","src":"1830:127:157","nodes":[],"body":{"id":74688,"nodeType":"Block","src":"1864:93:157","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":74681,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74614,"src":"1882:5:157","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":74682,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1890:1:157","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1882:9:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e697469616c697a6572206861736e2774206372656174656420696e6974206d65737361676520796574","id":74684,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1893:45:157","typeDescriptions":{"typeIdentifier":"t_stringliteral_65d3f165ecb53a71c4baab7e3c64d50628aa4b4da22aa56421c8898d77a0af21","typeString":"literal_string \"initializer hasn't created init message yet\""},"value":"initializer hasn't created init message yet"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_65d3f165ecb53a71c4baab7e3c64d50628aa4b4da22aa56421c8898d77a0af21","typeString":"literal_string \"initializer hasn't created init message yet\""}],"id":74680,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1874:7:157","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":74685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1874:65:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74686,"nodeType":"ExpressionStatement","src":"1874:65:157"},{"id":74687,"nodeType":"PlaceholderStatement","src":"1949:1:157"}]},"documentation":{"id":74678,"nodeType":"StructuredDocumentation","src":"1710:115:157","text":"@dev Functions marked with this modifier can be called only after the initializer has created the init message."},"name":"whenInitMessageCreated","nameLocation":"1839:22:157","parameters":{"id":74679,"nodeType":"ParameterList","parameters":[],"src":"1861:2:157"},"virtual":false,"visibility":"internal"},{"id":74706,"nodeType":"ModifierDefinition","src":"2122:237:157","nodes":[],"body":{"id":74705,"nodeType":"Block","src":"2173:186:157","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":74700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":74693,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74614,"src":"2204:5:157","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":74694,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2212:1:157","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2204:9:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":74699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":74696,"name":"_source","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75301,"src":"2217:7:157","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":74697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2217:9:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":74698,"name":"initializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74610,"src":"2230:11:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2217:24:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2204:37:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e697469616c697a6572206861736e2774206372656174656420696e6974206d657373616765207965743b20616e6420736f75726365206973206e6f7420696e697469616c697a6572","id":74701,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2255:76:157","typeDescriptions":{"typeIdentifier":"t_stringliteral_30f0ecacdc4f043fe4536cec8ec5dce9f84d0c03c073a67b932c97032eee9e08","typeString":"literal_string \"initializer hasn't created init message yet; and source is not initializer\""},"value":"initializer hasn't created init message yet; and source is not initializer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_30f0ecacdc4f043fe4536cec8ec5dce9f84d0c03c073a67b932c97032eee9e08","typeString":"literal_string \"initializer hasn't created init message yet; and source is not initializer\""}],"id":74692,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2183:7:157","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":74702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2183:158:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74703,"nodeType":"ExpressionStatement","src":"2183:158:157"},{"id":74704,"nodeType":"PlaceholderStatement","src":"2351:1:157"}]},"documentation":{"id":74690,"nodeType":"StructuredDocumentation","src":"1963:154:157","text":"@dev Functions marked with this modifier can be called only after the initializer has created the init message or from the initializer (first access)."},"name":"whenInitMessageCreatedOrFromInitializer","nameLocation":"2131:39:157","parameters":{"id":74691,"nodeType":"ParameterList","parameters":[],"src":"2170:2:157"},"virtual":false,"visibility":"internal"},{"id":74721,"nodeType":"ModifierDefinition","src":"2459:108:157","nodes":[],"body":{"id":74720,"nodeType":"Block","src":"2482:85:157","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":74715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":74710,"name":"inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74607,"src":"2500:9:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":74713,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2521:1:157","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":74712,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2513:7:157","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":74711,"name":"address","nodeType":"ElementaryTypeName","src":"2513:7:157","typeDescriptions":{}}},"id":74714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2513:10:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2500:23:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"70726f6772616d206973207465726d696e61746564","id":74716,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2525:23:157","typeDescriptions":{"typeIdentifier":"t_stringliteral_b99e931e301d9bf46f7569c6df99f13b4ced53db9be4aedb00fc4bbd41b4ec22","typeString":"literal_string \"program is terminated\""},"value":"program is terminated"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b99e931e301d9bf46f7569c6df99f13b4ced53db9be4aedb00fc4bbd41b4ec22","typeString":"literal_string \"program is terminated\""}],"id":74709,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2492:7:157","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":74717,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2492:57:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74718,"nodeType":"ExpressionStatement","src":"2492:57:157"},{"id":74719,"nodeType":"PlaceholderStatement","src":"2559:1:157"}]},"documentation":{"id":74707,"nodeType":"StructuredDocumentation","src":"2365:89:157","text":"@dev Functions marked with this modifier can be called only if the program is active."},"name":"whileActive","nameLocation":"2468:11:157","parameters":{"id":74708,"nodeType":"ParameterList","parameters":[],"src":"2479:2:157"},"virtual":false,"visibility":"internal"},{"id":74736,"nodeType":"FunctionDefinition","src":"2606:108:157","nodes":[],"body":{"id":74735,"nodeType":"Block","src":"2654:60:157","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[{"id":74729,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2692:4:157","typeDescriptions":{"typeIdentifier":"t_contract$_Mirror_$75331","typeString":"contract Mirror"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Mirror_$75331","typeString":"contract Mirror"}],"id":74728,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2684:7:157","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":74727,"name":"address","nodeType":"ElementaryTypeName","src":"2684:7:157","typeDescriptions":{}}},"id":74730,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2684:13:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":74726,"name":"IMirrorProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73602,"src":"2671:12:157","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirrorProxy_$73602_$","typeString":"type(contract IMirrorProxy)"}},"id":74731,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2671:27:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirrorProxy_$73602","typeString":"contract IMirrorProxy"}},"id":74732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2699:6:157","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":73601,"src":"2671:34:157","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":74733,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2671:36:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":74725,"id":74734,"nodeType":"Return","src":"2664:43:157"}]},"baseFunctions":[73507],"functionSelector":"f887ea40","implemented":true,"kind":"function","modifiers":[],"name":"router","nameLocation":"2615:6:157","parameters":{"id":74722,"nodeType":"ParameterList","parameters":[],"src":"2621:2:157"},"returnParameters":{"id":74725,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74724,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":74736,"src":"2645:7:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":74723,"name":"address","nodeType":"ElementaryTypeName","src":"2645:7:157","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2644:9:157"},"scope":75331,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":74777,"nodeType":"FunctionDefinition","src":"2750:383:157","nodes":[],"body":{"id":74776,"nodeType":"Block","src":"2959:174:157","nodes":[],"statements":[{"assignments":[74753],"declarations":[{"constant":false,"id":74753,"mutability":"mutable","name":"id","nameLocation":"2977:2:157","nodeType":"VariableDeclaration","scope":74776,"src":"2969:10:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":74752,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2969:7:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":74765,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"id":74759,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3017:4:157","typeDescriptions":{"typeIdentifier":"t_contract$_Mirror_$75331","typeString":"contract Mirror"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Mirror_$75331","typeString":"contract Mirror"}],"id":74758,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3009:7:157","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":74757,"name":"address","nodeType":"ElementaryTypeName","src":"3009:7:157","typeDescriptions":{}}},"id":74760,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3009:13:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":74762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3024:7:157","subExpression":{"id":74761,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74614,"src":"3024:5:157","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":74755,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2992:3:157","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":74756,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2996:12:157","memberName":"encodePacked","nodeType":"MemberAccess","src":"2992:16:157","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":74763,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2992:40:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":74754,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2982:9:157","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":74764,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2982:51:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2969:64:157"},{"eventCall":{"arguments":[{"id":74767,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74753,"src":"3074:2:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":74768,"name":"_source","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75301,"src":"3078:7:157","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":74769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3078:9:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":74770,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74738,"src":"3089:8:157","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":74771,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74740,"src":"3099:6:157","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":74766,"name":"MessageQueueingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73435,"src":"3049:24:157","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":74772,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3049:57:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74773,"nodeType":"EmitStatement","src":"3044:62:157"},{"expression":{"id":74774,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74753,"src":"3124:2:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":74751,"id":74775,"nodeType":"Return","src":"3117:9:157"}]},"baseFunctions":[73521],"functionSelector":"d5624222","implemented":true,"kind":"function","modifiers":[{"id":74743,"kind":"modifierInvocation","modifierName":{"id":74742,"name":"whileActive","nameLocations":["2837:11:157"],"nodeType":"IdentifierPath","referencedDeclaration":74721,"src":"2837:11:157"},"nodeType":"ModifierInvocation","src":"2837:11:157"},{"id":74745,"kind":"modifierInvocation","modifierName":{"id":74744,"name":"whenInitMessageCreatedOrFromInitializer","nameLocations":["2857:39:157"],"nodeType":"IdentifierPath","referencedDeclaration":74706,"src":"2857:39:157"},"nodeType":"ModifierInvocation","src":"2857:39:157"},{"arguments":[{"id":74747,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74740,"src":"2921:6:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":74748,"kind":"modifierInvocation","modifierName":{"id":74746,"name":"retrievingValue","nameLocations":["2905:15:157"],"nodeType":"IdentifierPath","referencedDeclaration":74662,"src":"2905:15:157"},"nodeType":"ModifierInvocation","src":"2905:23:157"}],"name":"sendMessage","nameLocation":"2759:11:157","parameters":{"id":74741,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74738,"mutability":"mutable","name":"_payload","nameLocation":"2786:8:157","nodeType":"VariableDeclaration","scope":74777,"src":"2771:23:157","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":74737,"name":"bytes","nodeType":"ElementaryTypeName","src":"2771:5:157","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":74740,"mutability":"mutable","name":"_value","nameLocation":"2804:6:157","nodeType":"VariableDeclaration","scope":74777,"src":"2796:14:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":74739,"name":"uint128","nodeType":"ElementaryTypeName","src":"2796:7:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"2770:41:157"},"returnParameters":{"id":74751,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74750,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":74777,"src":"2946:7:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":74749,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2946:7:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2945:9:157"},"scope":75331,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":74802,"nodeType":"FunctionDefinition","src":"3139:269:157","nodes":[],"body":{"id":74801,"nodeType":"Block","src":"3323:85:157","nodes":[],"statements":[{"eventCall":{"arguments":[{"id":74794,"name":"_repliedTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74779,"src":"3361:10:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":74795,"name":"_source","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75301,"src":"3373:7:157","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":74796,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3373:9:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":74797,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74781,"src":"3384:8:157","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":74798,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74783,"src":"3394:6:157","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":74793,"name":"ReplyQueueingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73446,"src":"3338:22:157","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":74799,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3338:63:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74800,"nodeType":"EmitStatement","src":"3333:68:157"}]},"baseFunctions":[73530],"functionSelector":"29336f39","implemented":true,"kind":"function","modifiers":[{"id":74786,"kind":"modifierInvocation","modifierName":{"id":74785,"name":"whileActive","nameLocations":["3244:11:157"],"nodeType":"IdentifierPath","referencedDeclaration":74721,"src":"3244:11:157"},"nodeType":"ModifierInvocation","src":"3244:11:157"},{"id":74788,"kind":"modifierInvocation","modifierName":{"id":74787,"name":"whenInitMessageCreated","nameLocations":["3264:22:157"],"nodeType":"IdentifierPath","referencedDeclaration":74689,"src":"3264:22:157"},"nodeType":"ModifierInvocation","src":"3264:22:157"},{"arguments":[{"id":74790,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74783,"src":"3311:6:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":74791,"kind":"modifierInvocation","modifierName":{"id":74789,"name":"retrievingValue","nameLocations":["3295:15:157"],"nodeType":"IdentifierPath","referencedDeclaration":74662,"src":"3295:15:157"},"nodeType":"ModifierInvocation","src":"3295:23:157"}],"name":"sendReply","nameLocation":"3148:9:157","parameters":{"id":74784,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74779,"mutability":"mutable","name":"_repliedTo","nameLocation":"3166:10:157","nodeType":"VariableDeclaration","scope":74802,"src":"3158:18:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":74778,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3158:7:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":74781,"mutability":"mutable","name":"_payload","nameLocation":"3193:8:157","nodeType":"VariableDeclaration","scope":74802,"src":"3178:23:157","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":74780,"name":"bytes","nodeType":"ElementaryTypeName","src":"3178:5:157","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":74783,"mutability":"mutable","name":"_value","nameLocation":"3211:6:157","nodeType":"VariableDeclaration","scope":74802,"src":"3203:14:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":74782,"name":"uint128","nodeType":"ElementaryTypeName","src":"3203:7:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"3157:61:157"},"returnParameters":{"id":74792,"nodeType":"ParameterList","parameters":[],"src":"3323:0:157"},"scope":75331,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":74816,"nodeType":"FunctionDefinition","src":"3414:139:157","nodes":[],"body":{"id":74815,"nodeType":"Block","src":"3486:67:157","nodes":[],"statements":[{"eventCall":{"arguments":[{"id":74810,"name":"_claimedId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74804,"src":"3524:10:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":74811,"name":"_source","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75301,"src":"3536:7:157","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":74812,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3536:9:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":74809,"name":"ValueClaimingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73453,"src":"3501:22:157","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":74813,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3501:45:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74814,"nodeType":"EmitStatement","src":"3496:50:157"}]},"baseFunctions":[73535],"functionSelector":"91d5a64c","implemented":true,"kind":"function","modifiers":[{"id":74807,"kind":"modifierInvocation","modifierName":{"id":74806,"name":"whenInitMessageCreated","nameLocations":["3463:22:157"],"nodeType":"IdentifierPath","referencedDeclaration":74689,"src":"3463:22:157"},"nodeType":"ModifierInvocation","src":"3463:22:157"}],"name":"claimValue","nameLocation":"3423:10:157","parameters":{"id":74805,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74804,"mutability":"mutable","name":"_claimedId","nameLocation":"3442:10:157","nodeType":"VariableDeclaration","scope":74816,"src":"3434:18:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":74803,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3434:7:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3433:20:157"},"returnParameters":{"id":74808,"nodeType":"ParameterList","parameters":[],"src":"3486:0:157"},"scope":75331,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":74831,"nodeType":"FunctionDefinition","src":"3559:154:157","nodes":[],"body":{"id":74830,"nodeType":"Block","src":"3652:61:157","nodes":[],"statements":[{"eventCall":{"arguments":[{"id":74827,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74818,"src":"3699:6:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":74826,"name":"ExecutableBalanceTopUpRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73458,"src":"3667:31:157","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":74828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3667:39:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74829,"nodeType":"EmitStatement","src":"3662:44:157"}]},"baseFunctions":[73540],"functionSelector":"704ed542","implemented":true,"kind":"function","modifiers":[{"id":74821,"kind":"modifierInvocation","modifierName":{"id":74820,"name":"whileActive","nameLocations":["3616:11:157"],"nodeType":"IdentifierPath","referencedDeclaration":74721,"src":"3616:11:157"},"nodeType":"ModifierInvocation","src":"3616:11:157"},{"arguments":[{"id":74823,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74818,"src":"3644:6:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":74824,"kind":"modifierInvocation","modifierName":{"id":74822,"name":"retrievingValue","nameLocations":["3628:15:157"],"nodeType":"IdentifierPath","referencedDeclaration":74662,"src":"3628:15:157"},"nodeType":"ModifierInvocation","src":"3628:23:157"}],"name":"executableBalanceTopUp","nameLocation":"3568:22:157","parameters":{"id":74819,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74818,"mutability":"mutable","name":"_value","nameLocation":"3599:6:157","nodeType":"VariableDeclaration","scope":74831,"src":"3591:14:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":74817,"name":"uint128","nodeType":"ElementaryTypeName","src":"3591:7:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"3590:16:157"},"returnParameters":{"id":74825,"nodeType":"ParameterList","parameters":[],"src":"3652:0:157"},"scope":75331,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":74858,"nodeType":"FunctionDefinition","src":"3719:193:157","nodes":[],"body":{"id":74857,"nodeType":"Block","src":"3783:129:157","nodes":[],"statements":[{"assignments":[74837],"declarations":[{"constant":false,"id":74837,"mutability":"mutable","name":"balance","nameLocation":"3801:7:157","nodeType":"VariableDeclaration","scope":74857,"src":"3793:15:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74836,"name":"uint256","nodeType":"ElementaryTypeName","src":"3793:7:157","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":74848,"initialValue":{"arguments":[{"arguments":[{"id":74845,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3846:4:157","typeDescriptions":{"typeIdentifier":"t_contract$_Mirror_$75331","typeString":"contract Mirror"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Mirror_$75331","typeString":"contract Mirror"}],"id":74844,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3838:7:157","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":74843,"name":"address","nodeType":"ElementaryTypeName","src":"3838:7:157","typeDescriptions":{}}},"id":74846,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3838:13:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":74839,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74736,"src":"3818:6:157","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":74840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3818:8:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":74838,"name":"_wvara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75282,"src":"3811:6:157","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_contract$_IWrappedVara_$73855_$","typeString":"function (address) view returns (contract IWrappedVara)"}},"id":74841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3811:16:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$73855","typeString":"contract IWrappedVara"}},"id":74842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3828:9:157","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":43097,"src":"3811:26:157","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":74847,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3811:41:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3793:59:157"},{"expression":{"arguments":[{"id":74850,"name":"inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74607,"src":"3877:9:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":74853,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74837,"src":"3896:7:157","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":74852,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3888:7:157","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":74851,"name":"uint128","nodeType":"ElementaryTypeName","src":"3888:7:157","typeDescriptions":{}}},"id":74854,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3888:16:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":74849,"name":"_transferValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75330,"src":"3862:14:157","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$__$","typeString":"function (address,uint128)"}},"id":74855,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3862:43:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74856,"nodeType":"ExpressionStatement","src":"3862:43:157"}]},"baseFunctions":[73543],"functionSelector":"e43f3433","implemented":true,"kind":"function","modifiers":[{"id":74834,"kind":"modifierInvocation","modifierName":{"id":74833,"name":"whenTerminated","nameLocations":["3768:14:157"],"nodeType":"IdentifierPath","referencedDeclaration":74677,"src":"3768:14:157"},"nodeType":"ModifierInvocation","src":"3768:14:157"}],"name":"transferLockedValueToInheritor","nameLocation":"3728:30:157","parameters":{"id":74832,"nodeType":"ParameterList","parameters":[],"src":"3758:2:157"},"returnParameters":{"id":74835,"nodeType":"ParameterList","parameters":[],"src":"3783:0:157"},"scope":75331,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":74896,"nodeType":"FunctionDefinition","src":"3970:310:157","nodes":[],"body":{"id":74895,"nodeType":"Block","src":"4048:232:157","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":74873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":74868,"name":"initializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74610,"src":"4066:11:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":74871,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4089:1:157","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":74870,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4081:7:157","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":74869,"name":"address","nodeType":"ElementaryTypeName","src":"4081:7:157","typeDescriptions":{}}},"id":74872,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4081:10:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4066:25:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e697469616c697a657220636f756c64206f6e6c7920626520736574206f6e6365","id":74874,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4093:36:157","typeDescriptions":{"typeIdentifier":"t_stringliteral_a22a998b3a781946b89501fcd4ccd018d3a95bd8711aff0547431faa4986b249","typeString":"literal_string \"initializer could only be set once\""},"value":"initializer could only be set once"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a22a998b3a781946b89501fcd4ccd018d3a95bd8711aff0547431faa4986b249","typeString":"literal_string \"initializer could only be set once\""}],"id":74867,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"4058:7:157","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":74875,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4058:72:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74876,"nodeType":"ExpressionStatement","src":"4058:72:157"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":74883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":74878,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74605,"src":"4148:7:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":74881,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4167:1:157","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":74880,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4159:7:157","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":74879,"name":"address","nodeType":"ElementaryTypeName","src":"4159:7:157","typeDescriptions":{}}},"id":74882,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4159:10:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4148:21:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e697469616c697a657220636f756c64206f6e6c7920626520736574206f6e6365","id":74884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4171:36:157","typeDescriptions":{"typeIdentifier":"t_stringliteral_a22a998b3a781946b89501fcd4ccd018d3a95bd8711aff0547431faa4986b249","typeString":"literal_string \"initializer could only be set once\""},"value":"initializer could only be set once"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a22a998b3a781946b89501fcd4ccd018d3a95bd8711aff0547431faa4986b249","typeString":"literal_string \"initializer could only be set once\""}],"id":74877,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"4140:7:157","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":74885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4140:68:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74886,"nodeType":"ExpressionStatement","src":"4140:68:157"},{"expression":{"id":74889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":74887,"name":"initializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74610,"src":"4219:11:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":74888,"name":"_initializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74860,"src":"4233:12:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4219:26:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":74890,"nodeType":"ExpressionStatement","src":"4219:26:157"},{"expression":{"id":74893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":74891,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74605,"src":"4255:7:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":74892,"name":"_decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74862,"src":"4265:8:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4255:18:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":74894,"nodeType":"ExpressionStatement","src":"4255:18:157"}]},"baseFunctions":[73550],"functionSelector":"485cc955","implemented":true,"kind":"function","modifiers":[{"id":74865,"kind":"modifierInvocation","modifierName":{"id":74864,"name":"onlyRouter","nameLocations":["4037:10:157"],"nodeType":"IdentifierPath","referencedDeclaration":74628,"src":"4037:10:157"},"nodeType":"ModifierInvocation","src":"4037:10:157"}],"name":"initialize","nameLocation":"3979:10:157","parameters":{"id":74863,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74860,"mutability":"mutable","name":"_initializer","nameLocation":"3998:12:157","nodeType":"VariableDeclaration","scope":74896,"src":"3990:20:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":74859,"name":"address","nodeType":"ElementaryTypeName","src":"3990:7:157","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":74862,"mutability":"mutable","name":"_decoder","nameLocation":"4020:8:157","nodeType":"VariableDeclaration","scope":74896,"src":"4012:16:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":74861,"name":"address","nodeType":"ElementaryTypeName","src":"4012:7:157","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3989:40:157"},"returnParameters":{"id":74866,"nodeType":"ParameterList","parameters":[],"src":"4048:0:157"},"scope":75331,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":74973,"nodeType":"FunctionDefinition","src":"4363:1163:157","nodes":[],"body":{"id":74972,"nodeType":"Block","src":"4476:1050:157","nodes":[],"statements":[{"documentation":"@dev Verify that the transition belongs to this contract.","expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":74913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":74907,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74899,"src":"4564:11:157","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$76948_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":74908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4576:7:157","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":76933,"src":"4564:19:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":74911,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4595:4:157","typeDescriptions":{"typeIdentifier":"t_contract$_Mirror_$75331","typeString":"contract Mirror"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Mirror_$75331","typeString":"contract Mirror"}],"id":74910,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4587:7:157","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":74909,"name":"address","nodeType":"ElementaryTypeName","src":"4587:7:157","typeDescriptions":{}}},"id":74912,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4587:13:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4564:36:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6163746f724964206d757374206265207468697320636f6e7472616374","id":74914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4602:31:157","typeDescriptions":{"typeIdentifier":"t_stringliteral_ba7be785920a68bd302e7ea09bd7071e8b885ef81058f7ff907b22051b8150cd","typeString":"literal_string \"actorId must be this contract\""},"value":"actorId must be this contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ba7be785920a68bd302e7ea09bd7071e8b885ef81058f7ff907b22051b8150cd","typeString":"literal_string \"actorId must be this contract\""}],"id":74906,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"4556:7:157","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":74915,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4556:78:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74916,"nodeType":"ExpressionStatement","src":"4556:78:157"},{"assignments":[74919],"declarations":[{"constant":false,"id":74919,"mutability":"mutable","name":"messagesHashesHash","nameLocation":"4698:18:157","nodeType":"VariableDeclaration","scope":74972,"src":"4690:26:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":74918,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4690:7:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"documentation":"@dev Send all outgoing messages.","id":74924,"initialValue":{"arguments":[{"expression":{"id":74921,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74899,"src":"4733:11:157","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$76948_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":74922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4745:8:157","memberName":"messages","nodeType":"MemberAccess","referencedDeclaration":76947,"src":"4733:20:157","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$76912_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.Message calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Message_$76912_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.Message calldata[] calldata"}],"id":74920,"name":"_sendMessages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75040,"src":"4719:13:157","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_Message_$76912_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.Message calldata[] calldata) returns (bytes32)"}},"id":74923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4719:35:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"4690:64:157"},{"assignments":[74927],"declarations":[{"constant":false,"id":74927,"mutability":"mutable","name":"valueClaimsHash","nameLocation":"4817:15:157","nodeType":"VariableDeclaration","scope":74972,"src":"4809:23:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":74926,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4809:7:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"documentation":"@dev Send value for each claim.","id":74932,"initialValue":{"arguments":[{"expression":{"id":74929,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74899,"src":"4848:11:157","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$76948_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":74930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4860:11:157","memberName":"valueClaims","nodeType":"MemberAccess","referencedDeclaration":76943,"src":"4848:23:157","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$76965_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValueClaim calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$76965_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValueClaim calldata[] calldata"}],"id":74928,"name":"_claimValues","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75232,"src":"4835:12:157","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_ValueClaim_$76965_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.ValueClaim calldata[] calldata) returns (bytes32)"}},"id":74931,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4835:37:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"4809:63:157"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":74939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":74933,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74899,"src":"4932:11:157","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$76948_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":74934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4944:9:157","memberName":"inheritor","nodeType":"MemberAccess","referencedDeclaration":76937,"src":"4932:21:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":74937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4965:1:157","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":74936,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4957:7:157","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":74935,"name":"address","nodeType":"ElementaryTypeName","src":"4957:7:157","typeDescriptions":{}}},"id":74938,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4957:10:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4932:35:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"documentation":"@dev Set inheritor if specified.","id":74946,"nodeType":"IfStatement","src":"4928:102:157","trueBody":{"id":74945,"nodeType":"Block","src":"4969:61:157","statements":[{"expression":{"arguments":[{"expression":{"id":74941,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74899,"src":"4997:11:157","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$76948_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":74942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5009:9:157","memberName":"inheritor","nodeType":"MemberAccess","referencedDeclaration":76937,"src":"4997:21:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":74940,"name":"_setInheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75247,"src":"4983:13:157","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":74943,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4983:36:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74944,"nodeType":"ExpressionStatement","src":"4983:36:157"}]}},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":74950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":74947,"name":"stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74612,"src":"5095:9:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":74948,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74899,"src":"5108:11:157","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$76948_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":74949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5120:12:157","memberName":"newStateHash","nodeType":"MemberAccess","referencedDeclaration":76935,"src":"5108:24:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"5095:37:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"documentation":"@dev Update the state hash if changed.","id":74957,"nodeType":"IfStatement","src":"5091:110:157","trueBody":{"id":74956,"nodeType":"Block","src":"5134:67:157","statements":[{"expression":{"arguments":[{"expression":{"id":74952,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74899,"src":"5165:11:157","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$76948_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":74953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5177:12:157","memberName":"newStateHash","nodeType":"MemberAccess","referencedDeclaration":76935,"src":"5165:24:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":74951,"name":"_updateStateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75261,"src":"5148:16:157","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":74954,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5148:42:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74955,"nodeType":"ExpressionStatement","src":"5148:42:157"}]}},{"documentation":"@dev Return hash of performed state transition.","expression":{"arguments":[{"expression":{"id":74960,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74899,"src":"5316:11:157","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$76948_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":74961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5328:7:157","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":76933,"src":"5316:19:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":74962,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74899,"src":"5349:11:157","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$76948_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":74963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5361:12:157","memberName":"newStateHash","nodeType":"MemberAccess","referencedDeclaration":76935,"src":"5349:24:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":74964,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74899,"src":"5387:11:157","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$76948_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":74965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5399:9:157","memberName":"inheritor","nodeType":"MemberAccess","referencedDeclaration":76937,"src":"5387:21:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":74966,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74899,"src":"5422:11:157","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$76948_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":74967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5434:14:157","memberName":"valueToReceive","nodeType":"MemberAccess","referencedDeclaration":76939,"src":"5422:26:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":74968,"name":"valueClaimsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74927,"src":"5462:15:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":74969,"name":"messagesHashesHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74919,"src":"5491:18:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":74958,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77275,"src":"5278:4:157","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77275_$","typeString":"type(library Gear)"}},"id":74959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5283:19:157","memberName":"stateTransitionHash","nodeType":"MemberAccess","referencedDeclaration":77150,"src":"5278:24:157","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_bytes32_$_t_address_$_t_uint128_$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (address,bytes32,address,uint128,bytes32,bytes32) pure returns (bytes32)"}},"id":74970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5278:241:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":74905,"id":74971,"nodeType":"Return","src":"5271:248:157"}]},"baseFunctions":[73558],"functionSelector":"9ed32350","implemented":true,"kind":"function","modifiers":[{"id":74902,"kind":"modifierInvocation","modifierName":{"id":74901,"name":"onlyRouter","nameLocations":["4447:10:157"],"nodeType":"IdentifierPath","referencedDeclaration":74628,"src":"4447:10:157"},"nodeType":"ModifierInvocation","src":"4447:10:157"}],"name":"performStateTransition","nameLocation":"4372:22:157","parameters":{"id":74900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74899,"mutability":"mutable","name":"_transition","nameLocation":"4425:11:157","nodeType":"VariableDeclaration","scope":74973,"src":"4395:41:157","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$76948_calldata_ptr","typeString":"struct Gear.StateTransition"},"typeName":{"id":74898,"nodeType":"UserDefinedTypeName","pathNode":{"id":74897,"name":"Gear.StateTransition","nameLocations":["4395:4:157","4400:15:157"],"nodeType":"IdentifierPath","referencedDeclaration":76948,"src":"4395:20:157"},"referencedDeclaration":76948,"src":"4395:20:157","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$76948_storage_ptr","typeString":"struct Gear.StateTransition"}},"visibility":"internal"}],"src":"4394:43:157"},"returnParameters":{"id":74905,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74904,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":74973,"src":"4467:7:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":74903,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4467:7:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4466:9:157"},"scope":75331,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":75040,"nodeType":"FunctionDefinition","src":"5734:627:157","nodes":[],"body":{"id":75039,"nodeType":"Block","src":"5818:543:157","nodes":[],"statements":[{"assignments":[74983],"declarations":[{"constant":false,"id":74983,"mutability":"mutable","name":"messagesHashes","nameLocation":"5841:14:157","nodeType":"VariableDeclaration","scope":75039,"src":"5828:27:157","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":74982,"name":"bytes","nodeType":"ElementaryTypeName","src":"5828:5:157","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":74984,"nodeType":"VariableDeclarationStatement","src":"5828:27:157"},{"body":{"id":75033,"nodeType":"Block","src":"5913:399:157","statements":[{"assignments":[75000],"declarations":[{"constant":false,"id":75000,"mutability":"mutable","name":"message","nameLocation":"5949:7:157","nodeType":"VariableDeclaration","scope":75033,"src":"5927:29:157","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message"},"typeName":{"id":74999,"nodeType":"UserDefinedTypeName","pathNode":{"id":74998,"name":"Gear.Message","nameLocations":["5927:4:157","5932:7:157"],"nodeType":"IdentifierPath","referencedDeclaration":76912,"src":"5927:12:157"},"referencedDeclaration":76912,"src":"5927:12:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_storage_ptr","typeString":"struct Gear.Message"}},"visibility":"internal"}],"id":75004,"initialValue":{"baseExpression":{"id":75001,"name":"_messages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74977,"src":"5959:9:157","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$76912_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.Message calldata[] calldata"}},"id":75003,"indexExpression":{"id":75002,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74986,"src":"5969:1:157","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5959:12:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}},"nodeType":"VariableDeclarationStatement","src":"5927:44:157"},{"expression":{"id":75015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":75005,"name":"messagesHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74983,"src":"5986:14:157","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":75009,"name":"messagesHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74983,"src":"6016:14:157","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":75012,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75000,"src":"6049:7:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}],"expression":{"id":75010,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77275,"src":"6032:4:157","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77275_$","typeString":"type(library Gear)"}},"id":75011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6037:11:157","memberName":"messageHash","nodeType":"MemberAccess","referencedDeclaration":77096,"src":"6032:16:157","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Message_$76912_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.Message memory) pure returns (bytes32)"}},"id":75013,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6032:25:157","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":75007,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6003:5:157","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":75006,"name":"bytes","nodeType":"ElementaryTypeName","src":"6003:5:157","typeDescriptions":{}}},"id":75008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6009:6:157","memberName":"concat","nodeType":"MemberAccess","src":"6003:12:157","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":75014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6003:55:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"5986:72:157","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":75016,"nodeType":"ExpressionStatement","src":"5986:72:157"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":75021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":75017,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75000,"src":"6144:7:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":75018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6152:12:157","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":76911,"src":"6144:20:157","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$76931_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":75019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6165:2:157","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":76928,"src":"6144:23:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":75020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6171:1:157","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6144:28:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":75031,"nodeType":"Block","src":"6243:59:157","statements":[{"expression":{"arguments":[{"id":75028,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75000,"src":"6279:7:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}],"id":75027,"name":"_sendReplyMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75167,"src":"6261:17:157","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Message_$76912_calldata_ptr_$returns$__$","typeString":"function (struct Gear.Message calldata)"}},"id":75029,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6261:26:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75030,"nodeType":"ExpressionStatement","src":"6261:26:157"}]},"id":75032,"nodeType":"IfStatement","src":"6140:162:157","trueBody":{"id":75026,"nodeType":"Block","src":"6174:63:157","statements":[{"expression":{"arguments":[{"id":75023,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75000,"src":"6214:7:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}],"id":75022,"name":"_sendMailboxedMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75097,"src":"6192:21:157","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Message_$76912_calldata_ptr_$returns$__$","typeString":"function (struct Gear.Message calldata)"}},"id":75024,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6192:30:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75025,"nodeType":"ExpressionStatement","src":"6192:30:157"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":74989,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74986,"src":"5886:1:157","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":74990,"name":"_messages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74977,"src":"5890:9:157","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$76912_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.Message calldata[] calldata"}},"id":74991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5900:6:157","memberName":"length","nodeType":"MemberAccess","src":"5890:16:157","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5886:20:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75034,"initializationExpression":{"assignments":[74986],"declarations":[{"constant":false,"id":74986,"mutability":"mutable","name":"i","nameLocation":"5879:1:157","nodeType":"VariableDeclaration","scope":75034,"src":"5871:9:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74985,"name":"uint256","nodeType":"ElementaryTypeName","src":"5871:7:157","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":74988,"initialValue":{"hexValue":"30","id":74987,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5883:1:157","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5871:13:157"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":74994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5908:3:157","subExpression":{"id":74993,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74986,"src":"5908:1:157","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":74995,"nodeType":"ExpressionStatement","src":"5908:3:157"},"nodeType":"ForStatement","src":"5866:446:157"},{"expression":{"arguments":[{"id":75036,"name":"messagesHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74983,"src":"6339:14:157","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":75035,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"6329:9:157","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":75037,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6329:25:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":74981,"id":75038,"nodeType":"Return","src":"6322:32:157"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_sendMessages","nameLocation":"5743:13:157","parameters":{"id":74978,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74977,"mutability":"mutable","name":"_messages","nameLocation":"5781:9:157","nodeType":"VariableDeclaration","scope":75040,"src":"5757:33:157","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$76912_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.Message[]"},"typeName":{"baseType":{"id":74975,"nodeType":"UserDefinedTypeName","pathNode":{"id":74974,"name":"Gear.Message","nameLocations":["5757:4:157","5762:7:157"],"nodeType":"IdentifierPath","referencedDeclaration":76912,"src":"5757:12:157"},"referencedDeclaration":76912,"src":"5757:12:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_storage_ptr","typeString":"struct Gear.Message"}},"id":74976,"nodeType":"ArrayTypeName","src":"5757:14:157","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$76912_storage_$dyn_storage_ptr","typeString":"struct Gear.Message[]"}},"visibility":"internal"}],"src":"5756:35:157"},"returnParameters":{"id":74981,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74980,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75040,"src":"5809:7:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":74979,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5809:7:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5808:9:157"},"scope":75331,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":75097,"nodeType":"FunctionDefinition","src":"6420:653:157","nodes":[],"body":{"id":75096,"nodeType":"Block","src":"6491:582:157","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":75052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75047,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74605,"src":"6505:7:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":75050,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6524:1:157","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":75049,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6516:7:157","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":75048,"name":"address","nodeType":"ElementaryTypeName","src":"6516:7:157","typeDescriptions":{}}},"id":75051,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6516:10:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6505:21:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75084,"nodeType":"IfStatement","src":"6501:474:157","trueBody":{"id":75083,"nodeType":"Block","src":"6528:447:157","statements":[{"assignments":[75054],"declarations":[{"constant":false,"id":75054,"mutability":"mutable","name":"callData","nameLocation":"6555:8:157","nodeType":"VariableDeclaration","scope":75083,"src":"6542:21:157","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":75053,"name":"bytes","nodeType":"ElementaryTypeName","src":"6542:5:157","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":75069,"initialValue":{"arguments":[{"expression":{"expression":{"id":75057,"name":"IMirrorDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73594,"src":"6606:14:157","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirrorDecoder_$73594_$","typeString":"type(contract IMirrorDecoder)"}},"id":75058,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6621:13:157","memberName":"onMessageSent","nodeType":"MemberAccess","referencedDeclaration":73580,"src":"6606:28:157","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_bytes32_$_t_address_$_t_bytes_calldata_ptr_$_t_uint128_$returns$__$","typeString":"function IMirrorDecoder.onMessageSent(bytes32,address,bytes calldata,uint128)"}},"id":75059,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6635:8:157","memberName":"selector","nodeType":"MemberAccess","src":"6606:37:157","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"expression":{"id":75060,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75044,"src":"6661:8:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":75061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6670:2:157","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":76902,"src":"6661:11:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":75062,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75044,"src":"6690:8:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":75063,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6699:11:157","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":76904,"src":"6690:20:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":75064,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75044,"src":"6728:8:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":75065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6737:7:157","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":76906,"src":"6728:16:157","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":75066,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75044,"src":"6762:8:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":75067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6771:5:157","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":76908,"src":"6762:14:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"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":75055,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6566:3:157","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":75056,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6570:18:157","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"6566:22:157","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":75068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6566:224:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"6542:248:157"},{"assignments":[75071,null],"declarations":[{"constant":false,"id":75071,"mutability":"mutable","name":"success","nameLocation":"6850:7:157","nodeType":"VariableDeclaration","scope":75083,"src":"6845:12:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":75070,"name":"bool","nodeType":"ElementaryTypeName","src":"6845:4:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":75078,"initialValue":{"arguments":[{"id":75076,"name":"callData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75054,"src":"6889:8:157","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":75072,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74605,"src":"6862:7:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":75073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6870:4:157","memberName":"call","nodeType":"MemberAccess","src":"6862:12:157","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":75075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["gas"],"nodeType":"FunctionCallOptions","options":[{"hexValue":"3530305f303030","id":75074,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6880:7:157","typeDescriptions":{"typeIdentifier":"t_rational_500000_by_1","typeString":"int_const 500000"},"value":"500_000"}],"src":"6862:26:157","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$gas","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":75077,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6862:36:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6844:54:157"},{"condition":{"id":75079,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75071,"src":"6917:7:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75082,"nodeType":"IfStatement","src":"6913:52:157","trueBody":{"id":75081,"nodeType":"Block","src":"6926:39:157","statements":[{"functionReturnParameters":75046,"id":75080,"nodeType":"Return","src":"6944:7:157"}]}}]}},{"eventCall":{"arguments":[{"expression":{"id":75086,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75044,"src":"6998:8:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":75087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7007:2:157","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":76902,"src":"6998:11:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":75088,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75044,"src":"7011:8:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":75089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7020:11:157","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":76904,"src":"7011:20:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":75090,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75044,"src":"7033:8:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":75091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7042:7:157","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":76906,"src":"7033:16:157","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":75092,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75044,"src":"7051:8:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":75093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7060:5:157","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":76908,"src":"7051:14:157","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":75085,"name":"Message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73469,"src":"6990:7:157","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":75094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6990:76:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75095,"nodeType":"EmitStatement","src":"6985:81:157"}]},"documentation":{"id":75041,"nodeType":"StructuredDocumentation","src":"6367:48:157","text":"@dev Value never sent since goes to mailbox."},"implemented":true,"kind":"function","modifiers":[],"name":"_sendMailboxedMessage","nameLocation":"6429:21:157","parameters":{"id":75045,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75044,"mutability":"mutable","name":"_message","nameLocation":"6473:8:157","nodeType":"VariableDeclaration","scope":75097,"src":"6451:30:157","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message"},"typeName":{"id":75043,"nodeType":"UserDefinedTypeName","pathNode":{"id":75042,"name":"Gear.Message","nameLocations":["6451:4:157","6456:7:157"],"nodeType":"IdentifierPath","referencedDeclaration":76912,"src":"6451:12:157"},"referencedDeclaration":76912,"src":"6451:12:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_storage_ptr","typeString":"struct Gear.Message"}},"visibility":"internal"}],"src":"6450:32:157"},"returnParameters":{"id":75046,"nodeType":"ParameterList","parameters":[],"src":"6491:0:157"},"scope":75331,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":75167,"nodeType":"FunctionDefinition","src":"7148:784:157","nodes":[],"body":{"id":75166,"nodeType":"Block","src":"7215:717:157","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":75105,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75101,"src":"7240:8:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":75106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7249:11:157","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":76904,"src":"7240:20:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":75107,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75101,"src":"7262:8:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":75108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7271:5:157","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":76908,"src":"7262:14:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":75104,"name":"_transferValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75330,"src":"7225:14:157","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$__$","typeString":"function (address,uint128)"}},"id":75109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7225:52:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75110,"nodeType":"ExpressionStatement","src":"7225:52:157"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":75116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75111,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74605,"src":"7292:7:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":75114,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7311:1:157","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":75113,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7303:7:157","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":75112,"name":"address","nodeType":"ElementaryTypeName","src":"7303:7:157","typeDescriptions":{}}},"id":75115,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7303:10:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7292:21:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75152,"nodeType":"IfStatement","src":"7288:529:157","trueBody":{"id":75151,"nodeType":"Block","src":"7315:502:157","statements":[{"assignments":[75118],"declarations":[{"constant":false,"id":75118,"mutability":"mutable","name":"callData","nameLocation":"7342:8:157","nodeType":"VariableDeclaration","scope":75151,"src":"7329:21:157","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":75117,"name":"bytes","nodeType":"ElementaryTypeName","src":"7329:5:157","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":75137,"initialValue":{"arguments":[{"expression":{"expression":{"id":75121,"name":"IMirrorDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73594,"src":"7393:14:157","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirrorDecoder_$73594_$","typeString":"type(contract IMirrorDecoder)"}},"id":75122,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7408:11:157","memberName":"onReplySent","nodeType":"MemberAccess","referencedDeclaration":73593,"src":"7393:26:157","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_bytes_calldata_ptr_$_t_uint128_$_t_bytes32_$_t_bytes4_$returns$__$","typeString":"function IMirrorDecoder.onReplySent(address,bytes calldata,uint128,bytes32,bytes4)"}},"id":75123,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7420:8:157","memberName":"selector","nodeType":"MemberAccess","src":"7393:35:157","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"expression":{"id":75124,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75101,"src":"7446:8:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":75125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7455:11:157","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":76904,"src":"7446:20:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":75126,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75101,"src":"7484:8:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":75127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7493:7:157","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":76906,"src":"7484:16:157","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":75128,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75101,"src":"7518:8:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":75129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7527:5:157","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":76908,"src":"7518:14:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"expression":{"id":75130,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75101,"src":"7550:8:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":75131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7559:12:157","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":76911,"src":"7550:21:157","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$76931_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":75132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7572:2:157","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":76928,"src":"7550:24:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"expression":{"id":75133,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75101,"src":"7592:8:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":75134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7601:12:157","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":76911,"src":"7592:21:157","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$76931_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":75135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7614:4:157","memberName":"code","nodeType":"MemberAccess","referencedDeclaration":76930,"src":"7592:26:157","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"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":75119,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7353:3:157","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":75120,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7357:18:157","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"7353:22:157","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":75136,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7353:279:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"7329:303:157"},{"assignments":[75139,null],"declarations":[{"constant":false,"id":75139,"mutability":"mutable","name":"success","nameLocation":"7692:7:157","nodeType":"VariableDeclaration","scope":75151,"src":"7687:12:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":75138,"name":"bool","nodeType":"ElementaryTypeName","src":"7687:4:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":75146,"initialValue":{"arguments":[{"id":75144,"name":"callData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75118,"src":"7731:8:157","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":75140,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74605,"src":"7704:7:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":75141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7712:4:157","memberName":"call","nodeType":"MemberAccess","src":"7704:12:157","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":75143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["gas"],"nodeType":"FunctionCallOptions","options":[{"hexValue":"3530305f303030","id":75142,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7722:7:157","typeDescriptions":{"typeIdentifier":"t_rational_500000_by_1","typeString":"int_const 500000"},"value":"500_000"}],"src":"7704:26:157","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$gas","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":75145,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7704:36:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"7686:54:157"},{"condition":{"id":75147,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75139,"src":"7759:7:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75150,"nodeType":"IfStatement","src":"7755:52:157","trueBody":{"id":75149,"nodeType":"Block","src":"7768:39:157","statements":[{"functionReturnParameters":75103,"id":75148,"nodeType":"Return","src":"7786:7:157"}]}}]}},{"eventCall":{"arguments":[{"expression":{"id":75154,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75101,"src":"7838:8:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":75155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7847:7:157","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":76906,"src":"7838:16:157","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":75156,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75101,"src":"7856:8:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":75157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7865:5:157","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":76908,"src":"7856:14:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"expression":{"id":75158,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75101,"src":"7872:8:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":75159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7881:12:157","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":76911,"src":"7872:21:157","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$76931_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":75160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7894:2:157","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":76928,"src":"7872:24:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"expression":{"id":75161,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75101,"src":"7898:8:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":75162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7907:12:157","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":76911,"src":"7898:21:157","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$76931_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":75163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7920:4:157","memberName":"code","nodeType":"MemberAccess","referencedDeclaration":76930,"src":"7898:26:157","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":75153,"name":"Reply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73480,"src":"7832:5:157","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":75164,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7832:93:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75165,"nodeType":"EmitStatement","src":"7827:98:157"}]},"documentation":{"id":75098,"nodeType":"StructuredDocumentation","src":"7079:64:157","text":"@dev Non-zero value always sent since never goes to mailbox."},"implemented":true,"kind":"function","modifiers":[],"name":"_sendReplyMessage","nameLocation":"7157:17:157","parameters":{"id":75102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75101,"mutability":"mutable","name":"_message","nameLocation":"7197:8:157","nodeType":"VariableDeclaration","scope":75167,"src":"7175:30:157","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_calldata_ptr","typeString":"struct Gear.Message"},"typeName":{"id":75100,"nodeType":"UserDefinedTypeName","pathNode":{"id":75099,"name":"Gear.Message","nameLocations":["7175:4:157","7180:7:157"],"nodeType":"IdentifierPath","referencedDeclaration":76912,"src":"7175:12:157"},"referencedDeclaration":76912,"src":"7175:12:157","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$76912_storage_ptr","typeString":"struct Gear.Message"}},"visibility":"internal"}],"src":"7174:32:157"},"returnParameters":{"id":75103,"nodeType":"ParameterList","parameters":[],"src":"7215:0:157"},"scope":75331,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":75232,"nodeType":"FunctionDefinition","src":"7938:514:157","nodes":[],"body":{"id":75231,"nodeType":"Block","src":"8022:430:157","nodes":[],"statements":[{"assignments":[75177],"declarations":[{"constant":false,"id":75177,"mutability":"mutable","name":"valueClaimsBytes","nameLocation":"8045:16:157","nodeType":"VariableDeclaration","scope":75231,"src":"8032:29:157","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":75176,"name":"bytes","nodeType":"ElementaryTypeName","src":"8032:5:157","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":75178,"nodeType":"VariableDeclarationStatement","src":"8032:29:157"},{"body":{"id":75225,"nodeType":"Block","src":"8117:284:157","statements":[{"assignments":[75194],"declarations":[{"constant":false,"id":75194,"mutability":"mutable","name":"claim","nameLocation":"8156:5:157","nodeType":"VariableDeclaration","scope":75225,"src":"8131:30:157","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$76965_calldata_ptr","typeString":"struct Gear.ValueClaim"},"typeName":{"id":75193,"nodeType":"UserDefinedTypeName","pathNode":{"id":75192,"name":"Gear.ValueClaim","nameLocations":["8131:4:157","8136:10:157"],"nodeType":"IdentifierPath","referencedDeclaration":76965,"src":"8131:15:157"},"referencedDeclaration":76965,"src":"8131:15:157","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$76965_storage_ptr","typeString":"struct Gear.ValueClaim"}},"visibility":"internal"}],"id":75198,"initialValue":{"baseExpression":{"id":75195,"name":"_claims","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75171,"src":"8164:7:157","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$76965_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValueClaim calldata[] calldata"}},"id":75197,"indexExpression":{"id":75196,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75180,"src":"8172:1:157","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8164:10:157","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$76965_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"nodeType":"VariableDeclarationStatement","src":"8131:43:157"},{"expression":{"id":75209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":75199,"name":"valueClaimsBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75177,"src":"8189:16:157","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":75203,"name":"valueClaimsBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75177,"src":"8221:16:157","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":75206,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75194,"src":"8260:5:157","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$76965_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_ValueClaim_$76965_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}],"expression":{"id":75204,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77275,"src":"8239:4:157","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77275_$","typeString":"type(library Gear)"}},"id":75205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8244:15:157","memberName":"valueClaimBytes","nodeType":"MemberAccess","referencedDeclaration":77274,"src":"8239:20:157","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_ValueClaim_$76965_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (struct Gear.ValueClaim memory) pure returns (bytes memory)"}},"id":75207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8239:27:157","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":75201,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8208:5:157","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":75200,"name":"bytes","nodeType":"ElementaryTypeName","src":"8208:5:157","typeDescriptions":{}}},"id":75202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8214:6:157","memberName":"concat","nodeType":"MemberAccess","src":"8208:12:157","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":75208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8208:59:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"8189:78:157","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":75210,"nodeType":"ExpressionStatement","src":"8189:78:157"},{"expression":{"arguments":[{"expression":{"id":75212,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75194,"src":"8297:5:157","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$76965_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":75213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8303:11:157","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":76962,"src":"8297:17:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":75214,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75194,"src":"8316:5:157","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$76965_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":75215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8322:5:157","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":76964,"src":"8316:11:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":75211,"name":"_transferValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75330,"src":"8282:14:157","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$__$","typeString":"function (address,uint128)"}},"id":75216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8282:46:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75217,"nodeType":"ExpressionStatement","src":"8282:46:157"},{"eventCall":{"arguments":[{"expression":{"id":75219,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75194,"src":"8361:5:157","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$76965_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":75220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8367:9:157","memberName":"messageId","nodeType":"MemberAccess","referencedDeclaration":76960,"src":"8361:15:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":75221,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75194,"src":"8378:5:157","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$76965_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":75222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8384:5:157","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":76964,"src":"8378:11:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":75218,"name":"ValueClaimed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73487,"src":"8348:12:157","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint128_$returns$__$","typeString":"function (bytes32,uint128)"}},"id":75223,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8348:42:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75224,"nodeType":"EmitStatement","src":"8343:47:157"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75183,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75180,"src":"8092:1:157","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":75184,"name":"_claims","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75171,"src":"8096:7:157","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$76965_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValueClaim calldata[] calldata"}},"id":75185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8104:6:157","memberName":"length","nodeType":"MemberAccess","src":"8096:14:157","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8092:18:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75226,"initializationExpression":{"assignments":[75180],"declarations":[{"constant":false,"id":75180,"mutability":"mutable","name":"i","nameLocation":"8085:1:157","nodeType":"VariableDeclaration","scope":75226,"src":"8077:9:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75179,"name":"uint256","nodeType":"ElementaryTypeName","src":"8077:7:157","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":75182,"initialValue":{"hexValue":"30","id":75181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8089:1:157","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8077:13:157"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":75188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"8112:3:157","subExpression":{"id":75187,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75180,"src":"8112:1:157","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":75189,"nodeType":"ExpressionStatement","src":"8112:3:157"},"nodeType":"ForStatement","src":"8072:329:157"},{"expression":{"arguments":[{"id":75228,"name":"valueClaimsBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75177,"src":"8428:16:157","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":75227,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"8418:9:157","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":75229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8418:27:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":75175,"id":75230,"nodeType":"Return","src":"8411:34:157"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_claimValues","nameLocation":"7947:12:157","parameters":{"id":75172,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75171,"mutability":"mutable","name":"_claims","nameLocation":"7987:7:157","nodeType":"VariableDeclaration","scope":75232,"src":"7960:34:157","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$76965_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValueClaim[]"},"typeName":{"baseType":{"id":75169,"nodeType":"UserDefinedTypeName","pathNode":{"id":75168,"name":"Gear.ValueClaim","nameLocations":["7960:4:157","7965:10:157"],"nodeType":"IdentifierPath","referencedDeclaration":76965,"src":"7960:15:157"},"referencedDeclaration":76965,"src":"7960:15:157","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$76965_storage_ptr","typeString":"struct Gear.ValueClaim"}},"id":75170,"nodeType":"ArrayTypeName","src":"7960:17:157","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$76965_storage_$dyn_storage_ptr","typeString":"struct Gear.ValueClaim[]"}},"visibility":"internal"}],"src":"7959:36:157"},"returnParameters":{"id":75175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75174,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75232,"src":"8013:7:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75173,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8013:7:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8012:9:157"},"scope":75331,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":75247,"nodeType":"FunctionDefinition","src":"8524:243:157","nodes":[],"body":{"id":75246,"nodeType":"Block","src":"8587:180:157","nodes":[],"statements":[{"documentation":"@dev Set inheritor.","expression":{"id":75241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":75239,"name":"inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74607,"src":"8629:9:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":75240,"name":"_inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75234,"src":"8641:10:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8629:22:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":75242,"nodeType":"ExpressionStatement","src":"8629:22:157"},{"documentation":"@dev Transfer all available balance to the inheritor.","expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75243,"name":"transferLockedValueToInheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74858,"src":"8728:30:157","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":75244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8728:32:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75245,"nodeType":"ExpressionStatement","src":"8728:32:157"}]},"implemented":true,"kind":"function","modifiers":[{"id":75237,"kind":"modifierInvocation","modifierName":{"id":75236,"name":"whileActive","nameLocations":["8575:11:157"],"nodeType":"IdentifierPath","referencedDeclaration":74721,"src":"8575:11:157"},"nodeType":"ModifierInvocation","src":"8575:11:157"}],"name":"_setInheritor","nameLocation":"8533:13:157","parameters":{"id":75235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75234,"mutability":"mutable","name":"_inheritor","nameLocation":"8555:10:157","nodeType":"VariableDeclaration","scope":75247,"src":"8547:18:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75233,"name":"address","nodeType":"ElementaryTypeName","src":"8547:7:157","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8546:20:157"},"returnParameters":{"id":75238,"nodeType":"ParameterList","parameters":[],"src":"8587:0:157"},"scope":75331,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":75261,"nodeType":"FunctionDefinition","src":"8773:235:157","nodes":[],"body":{"id":75260,"nodeType":"Block","src":"8827:181:157","nodes":[],"statements":[{"documentation":"@dev Set state hash.","expression":{"id":75254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":75252,"name":"stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74612,"src":"8870:9:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":75253,"name":"_stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75249,"src":"8882:10:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"8870:22:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":75255,"nodeType":"ExpressionStatement","src":"8870:22:157"},{"documentation":"@dev Emits an event signaling that the state has changed.","eventCall":{"arguments":[{"id":75257,"name":"stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74612,"src":"8991:9:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":75256,"name":"StateChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73424,"src":"8978:12:157","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":75258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8978:23:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75259,"nodeType":"EmitStatement","src":"8973:28:157"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_updateStateHash","nameLocation":"8782:16:157","parameters":{"id":75250,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75249,"mutability":"mutable","name":"_stateHash","nameLocation":"8807:10:157","nodeType":"VariableDeclaration","scope":75261,"src":"8799:18:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75248,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8799:7:157","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8798:20:157"},"returnParameters":{"id":75251,"nodeType":"ParameterList","parameters":[],"src":"8827:0:157"},"scope":75331,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":75282,"nodeType":"FunctionDefinition","src":"9048:182:157","nodes":[],"body":{"id":75281,"nodeType":"Block","src":"9120:110:157","nodes":[],"statements":[{"assignments":[75270],"declarations":[{"constant":false,"id":75270,"mutability":"mutable","name":"wvaraAddr","nameLocation":"9138:9:157","nodeType":"VariableDeclaration","scope":75281,"src":"9130:17:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75269,"name":"address","nodeType":"ElementaryTypeName","src":"9130:7:157","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":75276,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":75272,"name":"routerAddr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75263,"src":"9158:10:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":75271,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73844,"src":"9150:7:157","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRouter_$73844_$","typeString":"type(contract IRouter)"}},"id":75273,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9150:19:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$73844","typeString":"contract IRouter"}},"id":75274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9170:11:157","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":73697,"src":"9150:31:157","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":75275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9150:33:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"9130:53:157"},{"expression":{"arguments":[{"id":75278,"name":"wvaraAddr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75270,"src":"9213:9:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":75277,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73855,"src":"9200:12:157","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$73855_$","typeString":"type(contract IWrappedVara)"}},"id":75279,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9200:23:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$73855","typeString":"contract IWrappedVara"}},"functionReturnParameters":75268,"id":75280,"nodeType":"Return","src":"9193:30:157"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_wvara","nameLocation":"9057:6:157","parameters":{"id":75264,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75263,"mutability":"mutable","name":"routerAddr","nameLocation":"9072:10:157","nodeType":"VariableDeclaration","scope":75282,"src":"9064:18:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75262,"name":"address","nodeType":"ElementaryTypeName","src":"9064:7:157","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9063:20:157"},"returnParameters":{"id":75268,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75267,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75282,"src":"9106:12:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$73855","typeString":"contract IWrappedVara"},"typeName":{"id":75266,"nodeType":"UserDefinedTypeName","pathNode":{"id":75265,"name":"IWrappedVara","nameLocations":["9106:12:157"],"nodeType":"IdentifierPath","referencedDeclaration":73855,"src":"9106:12:157"},"referencedDeclaration":73855,"src":"9106:12:157","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$73855","typeString":"contract IWrappedVara"}},"visibility":"internal"}],"src":"9105:14:157"},"scope":75331,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":75301,"nodeType":"FunctionDefinition","src":"9236:182:157","nodes":[],"body":{"id":75300,"nodeType":"Block","src":"9286:132:157","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":75290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":75287,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9300:3:157","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":75288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9304:6:157","memberName":"sender","nodeType":"MemberAccess","src":"9300:10:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":75289,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74605,"src":"9314:7:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9300:21:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":75298,"nodeType":"Block","src":"9370:42:157","statements":[{"expression":{"expression":{"id":75295,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9391:3:157","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":75296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9395:6:157","memberName":"sender","nodeType":"MemberAccess","src":"9391:10:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":75286,"id":75297,"nodeType":"Return","src":"9384:17:157"}]},"id":75299,"nodeType":"IfStatement","src":"9296:116:157","trueBody":{"id":75294,"nodeType":"Block","src":"9323:41:157","statements":[{"expression":{"expression":{"id":75291,"name":"tx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-26,"src":"9344:2:157","typeDescriptions":{"typeIdentifier":"t_magic_transaction","typeString":"tx"}},"id":75292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9347:6:157","memberName":"origin","nodeType":"MemberAccess","src":"9344:9:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":75286,"id":75293,"nodeType":"Return","src":"9337:16:157"}]}}]},"implemented":true,"kind":"function","modifiers":[],"name":"_source","nameLocation":"9245:7:157","parameters":{"id":75283,"nodeType":"ParameterList","parameters":[],"src":"9252:2:157"},"returnParameters":{"id":75286,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75285,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75301,"src":"9277:7:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75284,"name":"address","nodeType":"ElementaryTypeName","src":"9277:7:157","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9276:9:157"},"scope":75331,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":75330,"nodeType":"FunctionDefinition","src":"9424:243:157","nodes":[],"body":{"id":75329,"nodeType":"Block","src":"9492:175:157","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":75310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75308,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75305,"src":"9506:5:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":75309,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9515:1:157","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9506:10:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75328,"nodeType":"IfStatement","src":"9502:159:157","trueBody":{"id":75327,"nodeType":"Block","src":"9518:143:157","statements":[{"assignments":[75312],"declarations":[{"constant":false,"id":75312,"mutability":"mutable","name":"success","nameLocation":"9537:7:157","nodeType":"VariableDeclaration","scope":75327,"src":"9532:12:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":75311,"name":"bool","nodeType":"ElementaryTypeName","src":"9532:4:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":75321,"initialValue":{"arguments":[{"id":75318,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75303,"src":"9573:11:157","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":75319,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75305,"src":"9586:5:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":75314,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74736,"src":"9554:6:157","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":75315,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9554:8:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":75313,"name":"_wvara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75282,"src":"9547:6:157","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_contract$_IWrappedVara_$73855_$","typeString":"function (address) view returns (contract IWrappedVara)"}},"id":75316,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9547:16:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$73855","typeString":"contract IWrappedVara"}},"id":75317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9564:8:157","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":43107,"src":"9547:25:157","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":75320,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9547:45:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"9532:60:157"},{"expression":{"arguments":[{"id":75323,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75312,"src":"9614:7:157","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6661696c656420746f207472616e73666572205756617261","id":75324,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9623:26:157","typeDescriptions":{"typeIdentifier":"t_stringliteral_67b810931d6bc27bebc6c54d267fd2daa6fef9e1939bb1712f8d92f0ff26a989","typeString":"literal_string \"failed to transfer WVara\""},"value":"failed to transfer WVara"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_67b810931d6bc27bebc6c54d267fd2daa6fef9e1939bb1712f8d92f0ff26a989","typeString":"literal_string \"failed to transfer WVara\""}],"id":75322,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"9606:7:157","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":75325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9606:44:157","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75326,"nodeType":"ExpressionStatement","src":"9606:44:157"}]}}]},"implemented":true,"kind":"function","modifiers":[],"name":"_transferValue","nameLocation":"9433:14:157","parameters":{"id":75306,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75303,"mutability":"mutable","name":"destination","nameLocation":"9456:11:157","nodeType":"VariableDeclaration","scope":75330,"src":"9448:19:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75302,"name":"address","nodeType":"ElementaryTypeName","src":"9448:7:157","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":75305,"mutability":"mutable","name":"value","nameLocation":"9477:5:157","nodeType":"VariableDeclaration","scope":75330,"src":"9469:13:157","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":75304,"name":"uint128","nodeType":"ElementaryTypeName","src":"9469:7:157","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"9447:36:157"},"returnParameters":{"id":75307,"nodeType":"ParameterList","parameters":[],"src":"9492:0:157"},"scope":75331,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":74602,"name":"IMirror","nameLocations":["422:7:157"],"nodeType":"IdentifierPath","referencedDeclaration":73559,"src":"422:7:157"},"id":74603,"nodeType":"InheritanceSpecifier","src":"422:7:157"}],"canonicalName":"Mirror","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[75331,73559],"name":"Mirror","nameLocation":"412:6:157","scope":75332,"usedErrors":[],"usedEvents":[73424,73435,73446,73453,73458,73469,73480,73487]}],"license":"UNLICENSED"},"id":157} \ No newline at end of file diff --git a/ethexe/ethereum/MirrorProxy.json b/ethexe/ethereum/MirrorProxy.json index 46191444c09..9bdb4f9ace1 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":"0x60a034606b57601f61021038819003918201601f19168301916001600160401b03831184841017606f57808492602094604052833981010312606b57516001600160a01b0381168103606b5760805260405161018c908161008482396080518181816023015260e10152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe608060405260043610156100c0575b63e6fabc0960e01b60809081526020906004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156100b5575f9015610139575060203d6020116100ae575b601f19601f820116608001906080821067ffffffffffffffff83111761009a5761009591604052608001610117565b610139565b634e487b7160e01b5f52604160045260245ffd5b503d610066565b6040513d5f823e3d90fd5b5f3560e01c63f887ea400361000e5734610113575f366003190112610113577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166080908152602090f35b5f80fd5b602090607f190112610113576080516001600160a01b03811681036101135790565b5f8091368280378136915af43d5f803e15610152573d5ff35b3d5ffdfea2646970667358221220b525deb98568ec7ddc9aaafeee2a055d9536f5e9e10a52c4dfb61118c58e90b964736f6c634300081a0033","sourceMap":"259:286:158:-:0;;;;;;;;;;;;;-1:-1:-1;;259:286:158;;;;-1:-1:-1;;;;;259:286:158;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;259:286:158;;;;;;386:16;;259:286;;;;;;;;386:16;259:286;;;;;;;;;;;;-1:-1:-1;259:286:158;;;;;;-1:-1:-1;259:286:158;;;;;-1:-1:-1;259:286:158","linkReferences":{}},"deployedBytecode":{"object":"0x608060405260043610156100c0575b63e6fabc0960e01b60809081526020906004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156100b5575f9015610139575060203d6020116100ae575b601f19601f820116608001906080821067ffffffffffffffff83111761009a5761009591604052608001610117565b610139565b634e487b7160e01b5f52604160045260245ffd5b503d610066565b6040513d5f823e3d90fd5b5f3560e01c63f887ea400361000e5734610113575f366003190112610113577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166080908152602090f35b5f80fd5b602090607f190112610113576080516001600160a01b03811681036101135790565b5f8091368280378136915af43d5f803e15610152573d5ff35b3d5ffdfea2646970667358221220b525deb98568ec7ddc9aaafeee2a055d9536f5e9e10a52c4dfb61118c58e90b964736f6c634300081a0033","sourceMap":"259:286:158:-:0;;;;;;;;;-1:-1:-1;;;;259:286:158;508:28;;;;;259:286;;516:6;-1:-1:-1;;;;;259:286:158;508:28;;;;;;-1:-1:-1;508:28:158;;2381:17:47;508:28:158;;;;;;;;;259:286;;;;;;;;;;;;;;;;;;508:28;259:286;;;;508:28;;:::i;:::-;2381:17:47;:::i;259:286:158:-;;;;-1:-1:-1;259:286:158;;;;;-1:-1:-1;259:286:158;508:28;;;;;;259:286;;;-1:-1:-1;259:286:158;;;;;;;;;;;;;;;;;;;-1:-1:-1;;259:286:158;;;;309:31;-1:-1:-1;;;;;259:286:158;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;259:286:158;;;;;;;:::o;949:895:47:-;1019:819;949:895;;1019:819;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{},"immutableReferences":{"75235":[{"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-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/\",\":symbiotic-core/=lib/symbiotic-core/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"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/IMirrorProxy.sol\":{\"keccak256\":\"0x56448b8905cc408f5656d47c893f3cda6623992ef1ba6a2e0a1be06b04c0b570\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://7d148123c4f51abce8b8e92c45830dd7de3829e228f37fd2e9093616dd7b2469\",\"dweb:/ipfs/QmTkohe2uFVsJiCKdu7QBFYff6L3tzvE7rTjnRhnjdgEmG\"]},\"src/IRouter.sol\":{\"keccak256\":\"0xdbae96165e93f374f6b0ab185c3ce61e5eed76cce317349eda4aab002f3998c7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://275140952f5612b545caf34e66af939a42a6156ddf9ae312192e9dd3010c8be2\",\"dweb:/ipfs/QmZYtSdHt5GkL5GT4gqNsuoryZ1whB1AQfmSmoNCHhicQc\"]},\"src/MirrorProxy.sol\":{\"keccak256\":\"0x5aa79edf0ac44b938c81e38e5a63e5ed53078a67870e910cecf1019766f40326\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://dc722a0b42b2ad97f63486a200bfaed40f33dad6d0ea1697fd0c2d6cc6280316\",\"dweb:/ipfs/Qmb66iPmELyjyzaBDMaNr3XVL5QHCcf9s9cvhQuTceDHsP\"]},\"src/libraries/Gear.sol\":{\"keccak256\":\"0xa543913342b4408d07fe4d884280b5c1d2430e8386713e9b6e1a5924e3e2bfbc\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://9e466d986795dab2d942984fcbf03e8e8995cd17e4221f1dfca715af091d03ec\",\"dweb:/ipfs/QmWo16RoqKERSYornA8qPqL32rYveeEHxiHmDHongS6uzy\"]}},\"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/","symbiotic-core/=lib/symbiotic-core/"],"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"},"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/IMirrorProxy.sol":{"keccak256":"0x56448b8905cc408f5656d47c893f3cda6623992ef1ba6a2e0a1be06b04c0b570","urls":["bzz-raw://7d148123c4f51abce8b8e92c45830dd7de3829e228f37fd2e9093616dd7b2469","dweb:/ipfs/QmTkohe2uFVsJiCKdu7QBFYff6L3tzvE7rTjnRhnjdgEmG"],"license":"UNLICENSED"},"src/IRouter.sol":{"keccak256":"0xdbae96165e93f374f6b0ab185c3ce61e5eed76cce317349eda4aab002f3998c7","urls":["bzz-raw://275140952f5612b545caf34e66af939a42a6156ddf9ae312192e9dd3010c8be2","dweb:/ipfs/QmZYtSdHt5GkL5GT4gqNsuoryZ1whB1AQfmSmoNCHhicQc"],"license":"UNLICENSED"},"src/MirrorProxy.sol":{"keccak256":"0x5aa79edf0ac44b938c81e38e5a63e5ed53078a67870e910cecf1019766f40326","urls":["bzz-raw://dc722a0b42b2ad97f63486a200bfaed40f33dad6d0ea1697fd0c2d6cc6280316","dweb:/ipfs/Qmb66iPmELyjyzaBDMaNr3XVL5QHCcf9s9cvhQuTceDHsP"],"license":"UNLICENSED"},"src/libraries/Gear.sol":{"keccak256":"0xa543913342b4408d07fe4d884280b5c1d2430e8386713e9b6e1a5924e3e2bfbc","urls":["bzz-raw://9e466d986795dab2d942984fcbf03e8e8995cd17e4221f1dfca715af091d03ec","dweb:/ipfs/QmWo16RoqKERSYornA8qPqL32rYveeEHxiHmDHongS6uzy"],"license":"UNLICENSED"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"src/MirrorProxy.sol","id":75260,"exportedSymbols":{"IMirrorProxy":[73646],"IRouter":[73896],"MirrorProxy":[75259],"Proxy":[42208]},"nodeType":"SourceUnit","src":"39:507:158","nodes":[{"id":75223,"nodeType":"PragmaDirective","src":"39:24:158","nodes":[],"literals":["solidity","^","0.8",".26"]},{"id":75225,"nodeType":"ImportDirective","src":"65:62:158","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol","file":"@openzeppelin/contracts/proxy/Proxy.sol","nameLocation":"-1:-1:-1","scope":75260,"sourceUnit":42209,"symbolAliases":[{"foreign":{"id":75224,"name":"Proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42208,"src":"73:5:158","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75227,"nodeType":"ImportDirective","src":"128:48:158","nodes":[],"absolutePath":"src/IMirrorProxy.sol","file":"./IMirrorProxy.sol","nameLocation":"-1:-1:-1","scope":75260,"sourceUnit":73647,"symbolAliases":[{"foreign":{"id":75226,"name":"IMirrorProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73646,"src":"136:12:158","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75229,"nodeType":"ImportDirective","src":"177:38:158","nodes":[],"absolutePath":"src/IRouter.sol","file":"./IRouter.sol","nameLocation":"-1:-1:-1","scope":75260,"sourceUnit":73897,"symbolAliases":[{"foreign":{"id":75228,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73896,"src":"185:7:158","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75259,"nodeType":"ContractDefinition","src":"259:286:158","nodes":[{"id":75235,"nodeType":"VariableDeclaration","src":"309:31:158","nodes":[],"baseFunctions":[73645],"constant":false,"functionSelector":"f887ea40","mutability":"immutable","name":"router","nameLocation":"334:6:158","scope":75259,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75234,"name":"address","nodeType":"ElementaryTypeName","src":"309:7:158","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":75245,"nodeType":"FunctionDefinition","src":"347:62:158","nodes":[],"body":{"id":75244,"nodeType":"Block","src":"376:33:158","nodes":[],"statements":[{"expression":{"id":75242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":75240,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75235,"src":"386:6:158","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":75241,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75237,"src":"395:7:158","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"386:16:158","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":75243,"nodeType":"ExpressionStatement","src":"386:16:158"}]},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":75238,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75237,"mutability":"mutable","name":"_router","nameLocation":"367:7:158","nodeType":"VariableDeclaration","scope":75245,"src":"359:15:158","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75236,"name":"address","nodeType":"ElementaryTypeName","src":"359:7:158","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"358:17:158"},"returnParameters":{"id":75239,"nodeType":"ParameterList","parameters":[],"src":"376:0:158"},"scope":75259,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":75258,"nodeType":"FunctionDefinition","src":"415:128:158","nodes":[],"body":{"id":75257,"nodeType":"Block","src":"491:52:158","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":75252,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75235,"src":"516:6:158","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":75251,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73896,"src":"508:7:158","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRouter_$73896_$","typeString":"type(contract IRouter)"}},"id":75253,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"508:15:158","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$73896","typeString":"contract IRouter"}},"id":75254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"524:10:158","memberName":"mirrorImpl","nodeType":"MemberAccess","referencedDeclaration":73731,"src":"508:26:158","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":75255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"508:28:158","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":75250,"id":75256,"nodeType":"Return","src":"501:35:158"}]},"baseFunctions":[42189],"implemented":true,"kind":"function","modifiers":[],"name":"_implementation","nameLocation":"424:15:158","overrides":{"id":75247,"nodeType":"OverrideSpecifier","overrides":[],"src":"464:8:158"},"parameters":{"id":75246,"nodeType":"ParameterList","parameters":[],"src":"439:2:158"},"returnParameters":{"id":75250,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75249,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75258,"src":"482:7:158","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75248,"name":"address","nodeType":"ElementaryTypeName","src":"482:7:158","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"481:9:158"},"scope":75259,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":false,"baseContracts":[{"baseName":{"id":75230,"name":"IMirrorProxy","nameLocations":["283:12:158"],"nodeType":"IdentifierPath","referencedDeclaration":73646,"src":"283:12:158"},"id":75231,"nodeType":"InheritanceSpecifier","src":"283:12:158"},{"baseName":{"id":75232,"name":"Proxy","nameLocations":["297:5:158"],"nodeType":"IdentifierPath","referencedDeclaration":42208,"src":"297:5:158"},"id":75233,"nodeType":"InheritanceSpecifier","src":"297:5:158"}],"canonicalName":"MirrorProxy","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[75259,42208,73646],"name":"MirrorProxy","nameLocation":"268:11:158","scope":75260,"usedErrors":[],"usedEvents":[]}],"license":"UNLICENSED"},"id":158} \ 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":"0x60a034606b57601f61021038819003918201601f19168301916001600160401b03831184841017606f57808492602094604052833981010312606b57516001600160a01b0381168103606b5760805260405161018c908161008482396080518181816023015260e10152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe608060405260043610156100c0575b63e6fabc0960e01b60809081526020906004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156100b5575f9015610139575060203d6020116100ae575b601f19601f820116608001906080821067ffffffffffffffff83111761009a5761009591604052608001610117565b610139565b634e487b7160e01b5f52604160045260245ffd5b503d610066565b6040513d5f823e3d90fd5b5f3560e01c63f887ea400361000e5734610113575f366003190112610113577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166080908152602090f35b5f80fd5b602090607f190112610113576080516001600160a01b03811681036101135790565b5f8091368280378136915af43d5f803e15610152573d5ff35b3d5ffdfea2646970667358221220ea5c82a68bb8d4a477a330cde29a5f8425f8a1655cb0255ebb98bfd0fb1a823564736f6c634300081c0033","sourceMap":"259:286:158:-:0;;;;;;;;;;;;;-1:-1:-1;;259:286:158;;;;-1:-1:-1;;;;;259:286:158;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;259:286:158;;;;;;386:16;;259:286;;;;;;;;386:16;259:286;;;;;;;;;;;;-1:-1:-1;259:286:158;;;;;;-1:-1:-1;259:286:158;;;;;-1:-1:-1;259:286:158","linkReferences":{}},"deployedBytecode":{"object":"0x608060405260043610156100c0575b63e6fabc0960e01b60809081526020906004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156100b5575f9015610139575060203d6020116100ae575b601f19601f820116608001906080821067ffffffffffffffff83111761009a5761009591604052608001610117565b610139565b634e487b7160e01b5f52604160045260245ffd5b503d610066565b6040513d5f823e3d90fd5b5f3560e01c63f887ea400361000e5734610113575f366003190112610113577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166080908152602090f35b5f80fd5b602090607f190112610113576080516001600160a01b03811681036101135790565b5f8091368280378136915af43d5f803e15610152573d5ff35b3d5ffdfea2646970667358221220ea5c82a68bb8d4a477a330cde29a5f8425f8a1655cb0255ebb98bfd0fb1a823564736f6c634300081c0033","sourceMap":"259:286:158:-:0;;;;;;;;;-1:-1:-1;;;;259:286:158;508:28;;;;;259:286;;516:6;-1:-1:-1;;;;;259:286:158;508:28;;;;;;-1:-1:-1;508:28:158;;2381:17:47;508:28:158;;;;;;;;;259:286;;;;;;;;;;;;;;;;;;508:28;259:286;;;;508:28;;:::i;:::-;2381:17:47;:::i;259:286:158:-;;;;-1:-1:-1;259:286:158;;;;;-1:-1:-1;259:286:158;508:28;;;;;;259:286;;;-1:-1:-1;259:286:158;;;;;;;;;;;;;;;;;;;-1:-1:-1;;259:286:158;;;;309:31;-1:-1:-1;;;;;259:286:158;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;259:286:158;;;;;;;:::o;949:895:47:-;1019:819;949:895;;1019:819;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{},"immutableReferences":{"75345":[{"start":35,"length":32},{"start":225,"length":32}]}},"methodIdentifiers":{"router()":"f887ea40"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"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/\",\":symbiotic-core/=lib/symbiotic-core/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"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/IMirrorProxy.sol\":{\"keccak256\":\"0x56448b8905cc408f5656d47c893f3cda6623992ef1ba6a2e0a1be06b04c0b570\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://7d148123c4f51abce8b8e92c45830dd7de3829e228f37fd2e9093616dd7b2469\",\"dweb:/ipfs/QmTkohe2uFVsJiCKdu7QBFYff6L3tzvE7rTjnRhnjdgEmG\"]},\"src/IRouter.sol\":{\"keccak256\":\"0x924f9a3927e943beba5f83107a8b206ab64c6a8f31deed543b923007bb49b9b8\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8775b64fab00cc3b3a87c6e980d8dfc32a851ea668c7d719d7074bd8a56d0f17\",\"dweb:/ipfs/QmRofDymj9HH3ePviV6yUiweCb8dfKKwbBF6ChwZabYGFi\"]},\"src/MirrorProxy.sol\":{\"keccak256\":\"0x5aa79edf0ac44b938c81e38e5a63e5ed53078a67870e910cecf1019766f40326\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://dc722a0b42b2ad97f63486a200bfaed40f33dad6d0ea1697fd0c2d6cc6280316\",\"dweb:/ipfs/Qmb66iPmELyjyzaBDMaNr3XVL5QHCcf9s9cvhQuTceDHsP\"]},\"src/libraries/Gear.sol\":{\"keccak256\":\"0xa543913342b4408d07fe4d884280b5c1d2430e8386713e9b6e1a5924e3e2bfbc\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://9e466d986795dab2d942984fcbf03e8e8995cd17e4221f1dfca715af091d03ec\",\"dweb:/ipfs/QmWo16RoqKERSYornA8qPqL32rYveeEHxiHmDHongS6uzy\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"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/","symbiotic-core/=lib/symbiotic-core/"],"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"},"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/IMirrorProxy.sol":{"keccak256":"0x56448b8905cc408f5656d47c893f3cda6623992ef1ba6a2e0a1be06b04c0b570","urls":["bzz-raw://7d148123c4f51abce8b8e92c45830dd7de3829e228f37fd2e9093616dd7b2469","dweb:/ipfs/QmTkohe2uFVsJiCKdu7QBFYff6L3tzvE7rTjnRhnjdgEmG"],"license":"UNLICENSED"},"src/IRouter.sol":{"keccak256":"0x924f9a3927e943beba5f83107a8b206ab64c6a8f31deed543b923007bb49b9b8","urls":["bzz-raw://8775b64fab00cc3b3a87c6e980d8dfc32a851ea668c7d719d7074bd8a56d0f17","dweb:/ipfs/QmRofDymj9HH3ePviV6yUiweCb8dfKKwbBF6ChwZabYGFi"],"license":"UNLICENSED"},"src/MirrorProxy.sol":{"keccak256":"0x5aa79edf0ac44b938c81e38e5a63e5ed53078a67870e910cecf1019766f40326","urls":["bzz-raw://dc722a0b42b2ad97f63486a200bfaed40f33dad6d0ea1697fd0c2d6cc6280316","dweb:/ipfs/Qmb66iPmELyjyzaBDMaNr3XVL5QHCcf9s9cvhQuTceDHsP"],"license":"UNLICENSED"},"src/libraries/Gear.sol":{"keccak256":"0xa543913342b4408d07fe4d884280b5c1d2430e8386713e9b6e1a5924e3e2bfbc","urls":["bzz-raw://9e466d986795dab2d942984fcbf03e8e8995cd17e4221f1dfca715af091d03ec","dweb:/ipfs/QmWo16RoqKERSYornA8qPqL32rYveeEHxiHmDHongS6uzy"],"license":"UNLICENSED"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"src/MirrorProxy.sol","id":75370,"exportedSymbols":{"IMirrorProxy":[73602],"IRouter":[73844],"MirrorProxy":[75369],"Proxy":[42208]},"nodeType":"SourceUnit","src":"39:507:158","nodes":[{"id":75333,"nodeType":"PragmaDirective","src":"39:24:158","nodes":[],"literals":["solidity","^","0.8",".26"]},{"id":75335,"nodeType":"ImportDirective","src":"65:62:158","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol","file":"@openzeppelin/contracts/proxy/Proxy.sol","nameLocation":"-1:-1:-1","scope":75370,"sourceUnit":42209,"symbolAliases":[{"foreign":{"id":75334,"name":"Proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42208,"src":"73:5:158","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75337,"nodeType":"ImportDirective","src":"128:48:158","nodes":[],"absolutePath":"src/IMirrorProxy.sol","file":"./IMirrorProxy.sol","nameLocation":"-1:-1:-1","scope":75370,"sourceUnit":73603,"symbolAliases":[{"foreign":{"id":75336,"name":"IMirrorProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73602,"src":"136:12:158","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75339,"nodeType":"ImportDirective","src":"177:38:158","nodes":[],"absolutePath":"src/IRouter.sol","file":"./IRouter.sol","nameLocation":"-1:-1:-1","scope":75370,"sourceUnit":73845,"symbolAliases":[{"foreign":{"id":75338,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73844,"src":"185:7:158","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75369,"nodeType":"ContractDefinition","src":"259:286:158","nodes":[{"id":75345,"nodeType":"VariableDeclaration","src":"309:31:158","nodes":[],"baseFunctions":[73601],"constant":false,"functionSelector":"f887ea40","mutability":"immutable","name":"router","nameLocation":"334:6:158","scope":75369,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75344,"name":"address","nodeType":"ElementaryTypeName","src":"309:7:158","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":75355,"nodeType":"FunctionDefinition","src":"347:62:158","nodes":[],"body":{"id":75354,"nodeType":"Block","src":"376:33:158","nodes":[],"statements":[{"expression":{"id":75352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":75350,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75345,"src":"386:6:158","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":75351,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75347,"src":"395:7:158","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"386:16:158","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":75353,"nodeType":"ExpressionStatement","src":"386:16:158"}]},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":75348,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75347,"mutability":"mutable","name":"_router","nameLocation":"367:7:158","nodeType":"VariableDeclaration","scope":75355,"src":"359:15:158","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75346,"name":"address","nodeType":"ElementaryTypeName","src":"359:7:158","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"358:17:158"},"returnParameters":{"id":75349,"nodeType":"ParameterList","parameters":[],"src":"376:0:158"},"scope":75369,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":75368,"nodeType":"FunctionDefinition","src":"415:128:158","nodes":[],"body":{"id":75367,"nodeType":"Block","src":"491:52:158","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":75362,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75345,"src":"516:6:158","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":75361,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73844,"src":"508:7:158","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRouter_$73844_$","typeString":"type(contract IRouter)"}},"id":75363,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"508:15:158","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$73844","typeString":"contract IRouter"}},"id":75364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"524:10:158","memberName":"mirrorImpl","nodeType":"MemberAccess","referencedDeclaration":73687,"src":"508:26:158","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":75365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"508:28:158","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":75360,"id":75366,"nodeType":"Return","src":"501:35:158"}]},"baseFunctions":[42189],"implemented":true,"kind":"function","modifiers":[],"name":"_implementation","nameLocation":"424:15:158","overrides":{"id":75357,"nodeType":"OverrideSpecifier","overrides":[],"src":"464:8:158"},"parameters":{"id":75356,"nodeType":"ParameterList","parameters":[],"src":"439:2:158"},"returnParameters":{"id":75360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75359,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75368,"src":"482:7:158","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75358,"name":"address","nodeType":"ElementaryTypeName","src":"482:7:158","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"481:9:158"},"scope":75369,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":false,"baseContracts":[{"baseName":{"id":75340,"name":"IMirrorProxy","nameLocations":["283:12:158"],"nodeType":"IdentifierPath","referencedDeclaration":73602,"src":"283:12:158"},"id":75341,"nodeType":"InheritanceSpecifier","src":"283:12:158"},{"baseName":{"id":75342,"name":"Proxy","nameLocations":["297:5:158"],"nodeType":"IdentifierPath","referencedDeclaration":42208,"src":"297:5:158"},"id":75343,"nodeType":"InheritanceSpecifier","src":"297:5:158"}],"canonicalName":"MirrorProxy","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[75369,42208,73602],"name":"MirrorProxy","nameLocation":"268:11:158","scope":75370,"usedErrors":[],"usedEvents":[]}],"license":"UNLICENSED"},"id":158} \ No newline at end of file diff --git a/ethexe/ethereum/Router.json b/ethexe/ethereum/Router.json index 37e608b251f..46174f15d89 100644 --- a/ethexe/ethereum/Router.json +++ b/ethexe/ethereum/Router.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"areValidators","inputs":[{"name":"_validators","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"codeState","inputs":[{"name":"_codeId","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint8","internalType":"enum Gear.CodeState"}],"stateMutability":"view"},{"type":"function","name":"codesStates","inputs":[{"name":"_codesIds","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"","type":"uint8[]","internalType":"enum Gear.CodeState[]"}],"stateMutability":"view"},{"type":"function","name":"commitBlocks","inputs":[{"name":"_blockCommitments","type":"tuple[]","internalType":"struct Gear.BlockCommitment[]","components":[{"name":"hash","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"previousCommittedBlock","type":"bytes32","internalType":"bytes32"},{"name":"predecessorBlock","type":"bytes32","internalType":"bytes32"},{"name":"transitions","type":"tuple[]","internalType":"struct Gear.StateTransition[]","components":[{"name":"actorId","type":"address","internalType":"address"},{"name":"newStateHash","type":"bytes32","internalType":"bytes32"},{"name":"inheritor","type":"address","internalType":"address"},{"name":"valueToReceive","type":"uint128","internalType":"uint128"},{"name":"valueClaims","type":"tuple[]","internalType":"struct Gear.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 Gear.Message[]","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 Gear.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":"_codeCommitments","type":"tuple[]","internalType":"struct Gear.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":"computeSettings","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct Gear.ComputationSettings","components":[{"name":"threshold","type":"uint64","internalType":"uint64"},{"name":"wvaraPerSecond","type":"uint128","internalType":"uint128"}]}],"stateMutability":"view"},{"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":"nonpayable"},{"type":"function","name":"createProgramWithDecoder","inputs":[{"name":"_decoderImpl","type":"address","internalType":"address"},{"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":"nonpayable"},{"type":"function","name":"genesisBlockHash","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_owner","type":"address","internalType":"address"},{"name":"_mirror","type":"address","internalType":"address"},{"name":"_mirrorProxy","type":"address","internalType":"address"},{"name":"_wrappedVara","type":"address","internalType":"address"},{"name":"_validators","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isValidator","inputs":[{"name":"_validator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"latestCommittedBlockHash","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"lookupGenesisHash","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mirrorImpl","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"mirrorProxyImpl","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":"_programId","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"programsCodeIds","inputs":[{"name":"_programsIds","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":"setMirror","inputs":[{"name":"newMirror","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"signingThresholdPercentage","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"validatedCodesCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"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":"wrappedVara","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"BlockCommitted","inputs":[{"name":"hash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"CodeGotValidated","inputs":[{"name":"codeId","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":"ComputationSettingsChanged","inputs":[{"name":"threshold","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"wvaraPerSecond","type":"uint128","indexed":false,"internalType":"uint128"}],"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":"ValidatorsChanged","inputs":[],"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":"0x6080806040523460d0577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460ff8160401c1660c1576002600160401b03196001600160401b03821601605c575b604051612b7590816100d58239f35b6001600160401b0319166001600160401b039081177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80604d565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c9081627a32e714611ec85750806301b1d156146114475780631c149d8a146112fa57806328e24b3d146112d05780633d43b4181461127e57806365ecfea214611246578063666d124c146111455780636c2eb35014610ebf578063715018a614610e585780638074b45514610d9457806382bdeaad14610c8f57806384d22a4f14610c2757806388f50cf014610bef5780638b1edf1e14610b2a5780638da5cb5b14610af65780638f381dbe14610ab15780639067088e14610a6957806396a2ddfa14610a3c578063baaf020114610941578063c13911e8146108fd578063c9f16a11146108d0578063ca1e781914610859578063e6fabc0914610821578063e97d3eb3146105fd578063ed612f8c146105d0578063edc872251461059c578063efd81abc1461056b578063f2fde38b14610545578063f8453e7c146101b65763facd743b14610165575f80fd5b346101b25760203660031901126101b25761017e611f22565b60095f80516020612b0083398151915254019060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b5f80fd5b346101b25760a03660031901126101b2576101cf611f22565b6024356001600160a01b03811691908290036101b2576044356001600160a01b03811692908390036101b2576064356001600160a01b038116908190036101b2576084356001600160401b0381116101b25761022f903690600401611ef2565b915f80516020612b208339815191525460ff8160401c1615956001600160401b0382168015908161053d575b6001149081610533575b15908161052a575b5061051b5767ffffffffffffffff1982166001175f80516020612b20833981519152556102b091876104ef575b506102a3612998565b6102ab612998565b612270565b60409586516102bf8882612042565b6017815260208101907f726f757465722e73746f726167652e526f75746572563100000000000000000082526102f36124ba565b5190205f1981019081116104db5787519060208201908152602082526103198983612042565b60ff19915190201694855f80516020612b008339815191525561033a612758565b80518755600187019063ffffffff60208201511669ffffffffffff000000008b845493015160201b169169ffffffffffffffffffff1916171790558288805161038281612027565b8381526020810185905201526004860180546001600160a01b03199081166001600160a01b0393841617909155600587018054821693831693909317909255600686018054909216921691909117905560078301805461ffff1916611a0a1790556103ec8261218c565b916103f986519384612042565b808352602083019060051b8201913683116101b257905b8282106104c35750505090610427600a928261279d565b61042f6121c7565b506509184e72a000602085516104448161200c565b639502f900815201520180546001600160c01b0319166d09184e72a000000000009502f90017905561047257005b60207fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29160ff60401b195f80516020612b2083398151915254165f80516020612b20833981519152555160018152a1005b602080916104d084611f38565b815201910190610410565b634e487b7160e01b5f52601160045260245ffd5b68ffffffffffffffffff191668010000000000000001175f80516020612b20833981519152558861029a565b63f92ee8a960e01b5f5260045ffd5b9050158961026d565b303b159150610265565b88915061025b565b346101b25760203660031901126101b257610569610561611f22565b6102ab6124ba565b005b346101b2575f3660031901126101b257602061ffff60075f80516020612b0083398151915254015416604051908152f35b346101b2575f3660031901126101b25760206105c860075f80516020612b0083398151915254016128c4565b604051908152f35b346101b2575f3660031901126101b257602060085f80516020612b00833981519152540154604051908152f35b346101b25760403660031901126101b2576004356001600160401b0381116101b257366023820112156101b25780600401356001600160401b0381116101b2573660248260061b840101116101b2576024356001600160401b0381116101b25761066b903690600401611ef2565b905f80516020612b00833981519152549361068885541515611f9a565b600b8501925f9260605b86851015610805578460061b8401602481013591825f528760205260ff60405f20541660038110156107f15760010361078e57600192610741604461076e94016106db81612255565b1561077657825f528a60205260405f20600260ff19825416179055600e8d016107048154612262565b90555b61071081612255565b15157f460119a8f69a33ed127de517d5ea464e958ce23ef19e4420a8b92bf780bbc2c96020604051868152a2612255565b6040519060208201928352151560f81b604082015260218152610765604182612042565b51902090612063565b940193610692565b825f528a60205260405f2060ff198154169055610707565b60405162461bcd60e51b815260206004820152603560248201527f636f6465206d7573742062652072657175657374656420666f722076616c6964604482015274185d1a5bdb881d1bc818994818dbdb5b5a5d1d1959605a1b6064820152608490fd5b634e487b7160e01b5f52602160045260245ffd5b9161081c91886105699460208151910120906123c2565b612092565b346101b2575f3660031901126101b2575f80516020612b0083398151915254600401546040516001600160a01b039091168152602090f35b346101b2575f3660031901126101b25761088360085f80516020612b00833981519152540161213b565b6040518091602082016020835281518091526020604084019201905f5b8181106108ae575050500390f35b82516001600160a01b03168452859450602093840193909201916001016108a0565b346101b2575f3660031901126101b257602060025f80516020612b00833981519152540154604051908152f35b346101b25760203660031901126101b257600b5f80516020612b0083398151915254016004355f52602052602060ff60405f20541661093f6040518092611f8d565bf35b346101b25760203660031901126101b2576004356001600160401b0381116101b257610971903690600401611ef2565b5f80516020612b00833981519152549161098a8261218c565b926109986040519485612042565b8284526109a48361218c565b602085019390601f1901368537600c5f9201915b818110610a03578486604051918291602083019060208452518091526040830191905f5b8181106109ea575050500390f35b82518452859450602093840193909201916001016109dc565b80610a19610a1460019385886121a3565b6121df565b828060a01b03165f528360205260405f2054610a3582896121b3565b52016109b8565b346101b2575f3660031901126101b2576020600d5f80516020612b00833981519152540154604051908152f35b346101b25760203660031901126101b257610a82611f22565b600c5f80516020612b0083398151915254019060018060a01b03165f52602052602060405f2054604051908152f35b346101b25760203660031901126101b2576004356001600160401b0381116101b257610aec610ae66020923690600401611ef2565b906121f3565b6040519015158152f35b346101b2575f3660031901126101b2575f80516020612ae0833981519152546040516001600160a01b039091168152602090f35b346101b2575f3660031901126101b2575f80516020612b00833981519152548054610baa5763ffffffff60018201541640908115610b655755005b60405162461bcd60e51b815260206004820152601d60248201527f756e61626c6520746f206c6f6f6b75702067656e6573697320686173680000006044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527f67656e65736973206861736820616c72656164792073657400000000000000006044820152606490fd5b346101b2575f3660031901126101b2575f80516020612b0083398151915254600601546040516001600160a01b039091168152602090f35b346101b2575f3660031901126101b257610c3f6121c7565b506040600a5f80516020612b0083398151915254016001600160801b03825191610c688361200c565b548160206001600160401b038316948581520191851c168152835192835251166020820152f35b346101b25760203660031901126101b2576004356001600160401b0381116101b257610cbf903690600401611ef2565b5f80516020612b008339815191525491610cd88261218c565b92610ce66040519485612042565b828452610cf28361218c565b602085019390601f1901368537600b5f9201915b818110610d5b578486604051918291602083019060208452518091526040830191905f5b818110610d38575050500390f35b9193509160208082610d4d6001948851611f8d565b019401910191849392610d2a565b610d668183866121a3565b355f528260205260ff60405f20541690610d8081886121b3565b9160038110156107f1576001925201610d06565b346101b25760803660031901126101b2576044356001600160401b0381116101b257610dc4903690600401611f4c565b90606435916001600160801b03831683036101b257610de8836024356004356124ed565b6001600160a01b0390911692909190833b156101b257610e1f5f9360405196879485946306f0ee9760e51b865233600487016120fe565b038183855af1918215610e4d57602092610e3d575b50604051908152f35b5f610e4791612042565b82610e34565b6040513d5f823e3d90fd5b346101b2575f3660031901126101b257610e706124ba565b5f80516020612ae083398151915280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346101b2575f3660031901126101b257610ed76124ba565b5f80516020612b208339815191525460ff8160401c168015611131575b61051b5768ffffffffffffffffff191668010000000000000002175f80516020612b20833981519152555f80516020612b008339815191525460408051610f3b8282612042565b6017815260208101907f726f757465722e73746f726167652e526f7574657256320000000000000000008252610f6f6124ba565b5190205f198101919082116104db577fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d292600a80602094845190868201908152868252610fbc8683612042565b60ff19915190201692835f80516020612b0083398151915255610fdd612758565b80518555600185019063ffffffff888201511669ffffffffffff000000008884549301518a1b169169ffffffffffffffffffff1916171790556004810160048501908082036110e3575b505061ffff600782015416600785019061ffff198254161790556110566110506008830161213b565b8561279d565b01910190808203611091575b505060ff60401b195f80516020612b2083398151915254165f80516020612b20833981519152555160028152a1005b806001600160401b03806001600160801b03935416166001600160401b031984541617835554831c16600160401b600160c01b03825491841b1690600160401b600160c01b0319161790558380611062565b5481546001600160a01b03199081166001600160a01b039283161790925560058381015490870180548416918316919091179055600680840154908701805490931691161790558780611027565b5060026001600160401b0382161015610ef4565b346101b25760a03660031901126101b25761115e611f22565b6044356024356064356001600160401b0381116101b257611183903690600401611f4c565b90608435946001600160801b03861686036101b2576111a38686866124ed565b949060018060a01b03169560405190602082019283526040820152604081526111cd606082612042565b519020853b156101b257604051635b1b84f760e01b81526001600160a01b03909216600483015260248201525f8160448183895af18015610e4d57611236575b50833b156101b257610e1f5f9360405196879485946306f0ee9760e51b865233600487016120fe565b5f61124091612042565b8561120d565b346101b2575f3660031901126101b2575f80516020612b0083398151915254600501546040516001600160a01b039091168152602090f35b346101b25760203660031901126101b257611297611f22565b61129f6124ba565b5f80516020612b008339815191525460040180546001600160a01b0319166001600160a01b03909216919091179055005b346101b2575f3660031901126101b25760205f80516020612b008339815191525454604051908152f35b346101b25760403660031901126101b257602435600435811580159061143d575b1561140257600b5f80516020612b008339815191525461133d81541515611f9a565b0190805f528160205260ff60405f20541660038110156107f1576113a1577f65672eaf4ff8b823ea29ae013fef437d1fa9ed431125263a7a1f0ac49eada39692604092825f52602052825f20600160ff1982541617905582519182526020820152a1005b60405162461bcd60e51b815260206004820152603360248201527f676976656e20636f646520696420697320616c7265616479206f6e2076616c6960448201527219185d1a5bdb881bdc881d985b1a59185d1959606a1b6064820152608490fd5b60405162461bcd60e51b8152602060048201526013602482015272189b1bd88818d85b89dd08189948199bdd5b99606a1b6044820152606490fd5b505f49151561131b565b346101b25760403660031901126101b2576004356001600160401b0381116101b257611477903690600401611ef2565b906024356001600160401b0381116101b257611497903690600401611ef2565b9190927f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c611eb95792919060017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d5f80516020612b00833981519152549161150383541515611f9a565b5f9160605b86841015611e7d578360051b82013594609e19833603018612156101b25760028101546040878501013503611e2a57611546606087850101356128f4565b15611dd65791929385840135602061156181898801016122e1565b65ffffffffffff604051916115758361200c565b84835216918291015281600286015565ffffffffffff196003860154161760038501556060945f985b6115ae828a0160808101906122f4565b90508a1015611d2e576115d18a6115cb848c0160808101906122f4565b90612329565b975f80516020612b00833981519152546115ea8a6121df565b6001600160a01b03165f908152600c8201602052604090205415611cd157600601546001600160801b03906020906001600160a01b031660448c5f61163a6060611633846121df565b9301612937565b60405163a9059cbb60e01b81526001600160a01b0390931660048401529590951660248201529384928391905af18015610e4d57611ca5575b506001600160a01b036116858a6121df565b169b5f9260605b61169960808d018d612963565b9050851015611820576116af60808d018d612963565b86929192101561180c578f91606087020180359160208201936116d1856121df565b9260408101936116e085612937565b833b156101b2576040516314503e5160e01b8152600481018890526001600160a01b0390921660248301526001600160801b03166044820152915f908390606490829084905af1918215610e4d576060926117fc575b503603126101b257602080936117f493604060019761177061176583519261175d84612027565b868452611f38565b938487840152611f79565b91018190526040805185810194855260609390931b6bffffffffffffffffffffffff19169083015260801b6fffffffffffffffffffffffffffffffff19166054820152604481526117c2606482612042565b6040519584879551918291018587015e840190838201905f8252519283915e01015f815203601f198101835282612042565b94019361168c565b5f61180691612042565b5f611736565b634e487b7160e01b5f52603260045260245ffd5b98909192979b94959693509b989b6060925f935b61184160a08e018e6122f4565b9050851015611b36578f9061185f868f8060a06115cb9201906122f4565b9060808201359283155f14611a725761187a602084016121df565b611887604085018561234b565b909261189560608701612937565b92813b156101b2575f8781956001600160801b036118e4604051998a988997889663c2df600960e01b885235600488015260018060a01b031660248701526080604487015260848601916120de565b9116606483015203925af18015610e4d57611a62575b505b8136039260c084126101b2576040519360a085018581106001600160401b03821117611a4e576040528335855261193560208501611f38565b916020860192835260408501356001600160401b0381116101b257850136601f820112156101b25761196e90369060208135910161237d565b9460408701958652604061198460608301611f79565b6060890190815293607f1901126101b25760a090604051926119a58461200c565b835201356001600160e01b0319811681036101b2576054611a46968360349360019a602061076597019182528260808201525197519251965191519063ffffffff60e01b9051169060206040519889958287019b8c526001600160601b03199060601b1660408701528051918291018787015e8401926001600160801b03199060801b16858401526064830152608482015203016014810184520182612042565b940193611834565b634e487b7160e01b5f52604160045260245ffd5b5f611a6c91612042565b5f6118fa565b611a7e602084016121df565b90611a8c604085018561234b565b91611a9960608701612937565b9260a087013563ffffffff60e01b81168091036101b257823b156101b25760405163c78bde7760e01b81526001600160a01b03909616600487015260a060248701525f9486948593879385939290916001600160801b0391611aff9160a48701916120de565b921660448401528b6064840152608483015203925af18015610e4d57611b26575b506118fc565b5f611b3091612042565b5f611b20565b90969993509d939a90969d9c919c9b97949b604082019160018060a01b03611b5d846121df565b16611c4e575b602081013591863b156101b2575f80976024604051809a8193638ea59e1d60e01b83528860048401525af1958615610e4d57600197611c2e97611c3e575b50611bc06060611bb9611bb3866121df565b976121df565b9401612937565b90602081519101209160208151910120926040519460208601966001600160601b03199060601b16875260348601526001600160601b03199060601b1660548501526001600160801b03199060801b166068840152607883015260988201526098815261076560b882612042565b960198999199969294909661159e565b5f611c4891612042565b5f611ba1565b611c57836121df565b863b156101b257604051630959112b60e11b81526001600160a01b0390911660048201525f81602481838b5af18015610e4d57611c95575b50611b63565b5f611c9f91612042565b5f611c8f565b611cc59060203d8111611cca575b611cbd8183612042565b81019061294b565b611673565b503d611cb3565b60405162461bcd60e51b815260206004820152602f60248201527f636f756c646e277420706572666f726d207472616e736974696f6e20666f722060448201526e756e6b6e6f776e2070726f6772616d60881b6064820152608490fd5b9498509690611dc992999695600194927fd756eca21e02cb0dbde1e44a4d9c6921b5c8aa4668cfa0752784b3dc855bce1e6020604051858152a16060611d786020838d01016122e1565b926020815191012091604051936020850195865265ffffffffffff60d01b9060d01b1660408501526040818d01013560468501528b010135606683015260868201526086815261076560a682612042565b9601929594939094611508565b60405162461bcd60e51b815260206004820152602660248201527f616c6c6f776564207072656465636573736f7220626c6f636b207761736e277460448201526508199bdd5b9960d21b6064820152608490fd5b60405162461bcd60e51b815260206004820152602560248201527f696e76616c69642070726576696f757320636f6d6d697474656420626c6f636b604482015264040d0c2e6d60db1b6064820152608490fd5b61081c838787611e949460208151910120906123c2565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d005b633ee5aeb560e01b5f5260045ffd5b346101b2575f3660031901126101b257602090600e5f80516020612b008339815191525401548152f35b9181601f840112156101b2578235916001600160401b0383116101b2576020808501948460051b0101116101b257565b600435906001600160a01b03821682036101b257565b35906001600160a01b03821682036101b257565b9181601f840112156101b2578235916001600160401b0383116101b257602083818601950101116101b257565b35906001600160801b03821682036101b257565b9060038210156107f15752565b15611fa157565b60405162461bcd60e51b815260206004820152603860248201527f726f757465722067656e65736973206973207a65726f3b2063616c6c20606c6f60448201527f6f6b757047656e657369734861736828296020666972737400000000000000006064820152608490fd5b604081019081106001600160401b03821117611a4e57604052565b606081019081106001600160401b03821117611a4e57604052565b90601f801991011681019081106001600160401b03821117611a4e57604052565b602080612090928195946040519682889351918291018585015e8201908382015203018085520183612042565b565b1561209957565b60405162461bcd60e51b815260206004820152601e60248201527f7369676e61747572657320766572696669636174696f6e206661696c656400006044820152606490fd5b908060209392818452848401375f828201840152601f01601f1916010190565b9395949061212e6001600160801b0393606095859360018060a01b031688526080602089015260808801916120de565b9616604085015216910152565b90604051918281549182825260208201905f5260205f20925f5b81811061216a57505061209092500383612042565b84546001600160a01b0316835260019485019487945060209093019201612155565b6001600160401b038111611a4e5760051b60200190565b919081101561180c5760051b0190565b805182101561180c5760209160051b010190565b604051906121d48261200c565b5f6020838281520152565b356001600160a01b03811681036101b25790565b5f80516020612b0083398151915254600901905f5b8381106122185750505050600190565b612226610a148286856121a3565b6001600160a01b03165f9081526020849052604090205460ff161561224d57600101612208565b505050505f90565b3580151581036101b25790565b5f1981146104db5760010190565b6001600160a01b031680156122ce575f80516020612ae083398151915280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b3565ffffffffffff811681036101b25790565b903590601e19813603018212156101b257018035906001600160401b0382116101b257602001918160051b360383136101b257565b919081101561180c5760051b8101359060be19813603018212156101b2570190565b903590601e19813603018212156101b257018035906001600160401b0382116101b2576020019181360383136101b257565b9291926001600160401b038211611a4e57604051916123a6601f8201601f191660200184612042565b8294818452818301116101b2578281602093845f960137010152565b9190916123d1600782016128c4565b926040519060208201908152602082526123ec604083612042565b612428603660405180936020820195601960f81b87523060601b60228401525180918484015e81015f838201520301601f198101835282612042565b5190205f9260095f9301925b868110156124af5761246a61246161245b6124548460051b86018661234b565b369161237d565b856129c3565b909291926129fd565b6001600160a01b03165f9081526020859052604090205460ff16612491575b600101612434565b9361249b90612262565b938585036124895750505050505050600190565b505050505050505f90565b5f80516020612ae0833981519152546001600160a01b031633036124da57565b63118cdaa760e01b5f523360045260245ffd5b905f80516020612b00833981519152549261250a84541515611f9a565b825f52600b840160205260ff60405f20541660038110156107f1576002036126fc576001600160801b03166509184e72a000016001600160801b0381116104db5760068401546040516323b872dd60e01b81523360048201523060248201526001600160801b03929092166044830152602090829060649082905f906001600160a01b03165af1908115610e4d575f916126dd575b5015612698576e5af43d82803e903d91602b57fd5bf360058401549160405160208101918583526040820152604081526125da606082612042565b51902091763d602d80600a3d3981f3363d3d373d3d3d363d7300000062ffffff8260881c16175f526effffffffffffffffffffffffffffff199060781b1617602052603760095ff5916001600160a01b038316908115612689577f8008ec1d8798725ebfa0f2d128d52e8e717dcba6e0f786557eeee70614b02bf191600d602092825f52600c810184528560405f2055016126758154612262565b9055604051908152a2906509184e72a00090565b63b06ebf3d60e01b5f5260045ffd5b60405162461bcd60e51b815260206004820152601860248201527f6661696c656420746f20726574726965766520575661726100000000000000006044820152606490fd5b6126f6915060203d602011611cca57611cbd8183612042565b5f61259f565b60405162461bcd60e51b815260206004820152602e60248201527f636f6465206d7573742062652076616c696461746564206265666f726520707260448201526d37b3b930b69031b932b0ba34b7b760911b6064820152608490fd5b5f6040805161276681612027565b828152826020820152015260405161277d81612027565b5f815263ffffffff4316602082015265ffffffffffff4216604082015290565b9060088201908154612880579091600901905f5b81518110156127f2576001906001600160a01b036127cf82856121b3565b5116828060a01b03165f528360205260405f208260ff19825416179055016127b1565b5080519291506001600160401b038311611a4e57680100000000000000008311611a4e57815483835580841061285a575b50602001905f5260205f205f5b83811061283d5750505050565b82516001600160a01b031681830155602090920191600101612830565b825f528360205f2091820191015b8181106128755750612823565b5f8155600101612868565b606460405162461bcd60e51b815260206004820152602060248201527f72656d6f76652070726576696f75732076616c696461746f72732066697273746044820152fd5b61ffff6001820154915416908181029181830414901517156104db5761270f81018091116104db57612710900490565b905f1943014381116104db57805b61290d575b505f9150565b804083810361291e57506001925050565b156129325780156104db575f190180612902565b612907565b356001600160801b03811681036101b25790565b908160209103126101b2575180151581036101b25790565b903590601e19813603018212156101b257018035906001600160401b0382116101b2576020019160608202360383136101b257565b60ff5f80516020612b208339815191525460401c16156129b457565b631afcd79f60e31b5f5260045ffd5b81519190604183036129f3576129ec9250602082015190606060408401519301515f1a90612a5d565b9192909190565b50505f9160029190565b60048110156107f15780612a0f575050565b60018103612a265763f645eedf60e01b5f5260045ffd5b60028103612a41575063fce698f760e01b5f5260045260245ffd5b600314612a4b5750565b6335e2f38360e21b5f5260045260245ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411612ad4579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15610e4d575f516001600160a01b03811615612aca57905f905f90565b505f906001905f90565b5050505f916003919056fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005c09ca1b9b8127a4fd9f3c384aac59b661441e820e17733753ff5f2e86e1e000f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220bcddd1e327a9db67c9f2d99da008e3ca613651edd923d75a84279688b2dc90f264736f6c634300081a0033","sourceMap":"748:15445:159:-:0;;;;;;;8837:64:26;748:15445:159;;;;;;7896:76:26;;-1:-1:-1;;;;;;;;;;;748:15445:159;;7985:34:26;7981:146;;-1:-1:-1;748:15445:159;;;;;;;;;7981:146:26;-1:-1:-1;;;;;;748:15445:159;-1:-1:-1;;;;;748:15445:159;;;8837:64:26;748:15445:159;;;8087:29:26;;748:15445:159;;8087:29:26;7981:146;;;;7896:76;7938:23;;;-1:-1:-1;7938:23:26;;-1:-1:-1;7938:23:26;748:15445:159;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080806040526004361015610012575f80fd5b5f3560e01c9081627a32e714611ec85750806301b1d156146114475780631c149d8a146112fa57806328e24b3d146112d05780633d43b4181461127e57806365ecfea214611246578063666d124c146111455780636c2eb35014610ebf578063715018a614610e585780638074b45514610d9457806382bdeaad14610c8f57806384d22a4f14610c2757806388f50cf014610bef5780638b1edf1e14610b2a5780638da5cb5b14610af65780638f381dbe14610ab15780639067088e14610a6957806396a2ddfa14610a3c578063baaf020114610941578063c13911e8146108fd578063c9f16a11146108d0578063ca1e781914610859578063e6fabc0914610821578063e97d3eb3146105fd578063ed612f8c146105d0578063edc872251461059c578063efd81abc1461056b578063f2fde38b14610545578063f8453e7c146101b65763facd743b14610165575f80fd5b346101b25760203660031901126101b25761017e611f22565b60095f80516020612b0083398151915254019060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b5f80fd5b346101b25760a03660031901126101b2576101cf611f22565b6024356001600160a01b03811691908290036101b2576044356001600160a01b03811692908390036101b2576064356001600160a01b038116908190036101b2576084356001600160401b0381116101b25761022f903690600401611ef2565b915f80516020612b208339815191525460ff8160401c1615956001600160401b0382168015908161053d575b6001149081610533575b15908161052a575b5061051b5767ffffffffffffffff1982166001175f80516020612b20833981519152556102b091876104ef575b506102a3612998565b6102ab612998565b612270565b60409586516102bf8882612042565b6017815260208101907f726f757465722e73746f726167652e526f75746572563100000000000000000082526102f36124ba565b5190205f1981019081116104db5787519060208201908152602082526103198983612042565b60ff19915190201694855f80516020612b008339815191525561033a612758565b80518755600187019063ffffffff60208201511669ffffffffffff000000008b845493015160201b169169ffffffffffffffffffff1916171790558288805161038281612027565b8381526020810185905201526004860180546001600160a01b03199081166001600160a01b0393841617909155600587018054821693831693909317909255600686018054909216921691909117905560078301805461ffff1916611a0a1790556103ec8261218c565b916103f986519384612042565b808352602083019060051b8201913683116101b257905b8282106104c35750505090610427600a928261279d565b61042f6121c7565b506509184e72a000602085516104448161200c565b639502f900815201520180546001600160c01b0319166d09184e72a000000000009502f90017905561047257005b60207fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29160ff60401b195f80516020612b2083398151915254165f80516020612b20833981519152555160018152a1005b602080916104d084611f38565b815201910190610410565b634e487b7160e01b5f52601160045260245ffd5b68ffffffffffffffffff191668010000000000000001175f80516020612b20833981519152558861029a565b63f92ee8a960e01b5f5260045ffd5b9050158961026d565b303b159150610265565b88915061025b565b346101b25760203660031901126101b257610569610561611f22565b6102ab6124ba565b005b346101b2575f3660031901126101b257602061ffff60075f80516020612b0083398151915254015416604051908152f35b346101b2575f3660031901126101b25760206105c860075f80516020612b0083398151915254016128c4565b604051908152f35b346101b2575f3660031901126101b257602060085f80516020612b00833981519152540154604051908152f35b346101b25760403660031901126101b2576004356001600160401b0381116101b257366023820112156101b25780600401356001600160401b0381116101b2573660248260061b840101116101b2576024356001600160401b0381116101b25761066b903690600401611ef2565b905f80516020612b00833981519152549361068885541515611f9a565b600b8501925f9260605b86851015610805578460061b8401602481013591825f528760205260ff60405f20541660038110156107f15760010361078e57600192610741604461076e94016106db81612255565b1561077657825f528a60205260405f20600260ff19825416179055600e8d016107048154612262565b90555b61071081612255565b15157f460119a8f69a33ed127de517d5ea464e958ce23ef19e4420a8b92bf780bbc2c96020604051868152a2612255565b6040519060208201928352151560f81b604082015260218152610765604182612042565b51902090612063565b940193610692565b825f528a60205260405f2060ff198154169055610707565b60405162461bcd60e51b815260206004820152603560248201527f636f6465206d7573742062652072657175657374656420666f722076616c6964604482015274185d1a5bdb881d1bc818994818dbdb5b5a5d1d1959605a1b6064820152608490fd5b634e487b7160e01b5f52602160045260245ffd5b9161081c91886105699460208151910120906123c2565b612092565b346101b2575f3660031901126101b2575f80516020612b0083398151915254600401546040516001600160a01b039091168152602090f35b346101b2575f3660031901126101b25761088360085f80516020612b00833981519152540161213b565b6040518091602082016020835281518091526020604084019201905f5b8181106108ae575050500390f35b82516001600160a01b03168452859450602093840193909201916001016108a0565b346101b2575f3660031901126101b257602060025f80516020612b00833981519152540154604051908152f35b346101b25760203660031901126101b257600b5f80516020612b0083398151915254016004355f52602052602060ff60405f20541661093f6040518092611f8d565bf35b346101b25760203660031901126101b2576004356001600160401b0381116101b257610971903690600401611ef2565b5f80516020612b00833981519152549161098a8261218c565b926109986040519485612042565b8284526109a48361218c565b602085019390601f1901368537600c5f9201915b818110610a03578486604051918291602083019060208452518091526040830191905f5b8181106109ea575050500390f35b82518452859450602093840193909201916001016109dc565b80610a19610a1460019385886121a3565b6121df565b828060a01b03165f528360205260405f2054610a3582896121b3565b52016109b8565b346101b2575f3660031901126101b2576020600d5f80516020612b00833981519152540154604051908152f35b346101b25760203660031901126101b257610a82611f22565b600c5f80516020612b0083398151915254019060018060a01b03165f52602052602060405f2054604051908152f35b346101b25760203660031901126101b2576004356001600160401b0381116101b257610aec610ae66020923690600401611ef2565b906121f3565b6040519015158152f35b346101b2575f3660031901126101b2575f80516020612ae0833981519152546040516001600160a01b039091168152602090f35b346101b2575f3660031901126101b2575f80516020612b00833981519152548054610baa5763ffffffff60018201541640908115610b655755005b60405162461bcd60e51b815260206004820152601d60248201527f756e61626c6520746f206c6f6f6b75702067656e6573697320686173680000006044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527f67656e65736973206861736820616c72656164792073657400000000000000006044820152606490fd5b346101b2575f3660031901126101b2575f80516020612b0083398151915254600601546040516001600160a01b039091168152602090f35b346101b2575f3660031901126101b257610c3f6121c7565b506040600a5f80516020612b0083398151915254016001600160801b03825191610c688361200c565b548160206001600160401b038316948581520191851c168152835192835251166020820152f35b346101b25760203660031901126101b2576004356001600160401b0381116101b257610cbf903690600401611ef2565b5f80516020612b008339815191525491610cd88261218c565b92610ce66040519485612042565b828452610cf28361218c565b602085019390601f1901368537600b5f9201915b818110610d5b578486604051918291602083019060208452518091526040830191905f5b818110610d38575050500390f35b9193509160208082610d4d6001948851611f8d565b019401910191849392610d2a565b610d668183866121a3565b355f528260205260ff60405f20541690610d8081886121b3565b9160038110156107f1576001925201610d06565b346101b25760803660031901126101b2576044356001600160401b0381116101b257610dc4903690600401611f4c565b90606435916001600160801b03831683036101b257610de8836024356004356124ed565b6001600160a01b0390911692909190833b156101b257610e1f5f9360405196879485946306f0ee9760e51b865233600487016120fe565b038183855af1918215610e4d57602092610e3d575b50604051908152f35b5f610e4791612042565b82610e34565b6040513d5f823e3d90fd5b346101b2575f3660031901126101b257610e706124ba565b5f80516020612ae083398151915280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346101b2575f3660031901126101b257610ed76124ba565b5f80516020612b208339815191525460ff8160401c168015611131575b61051b5768ffffffffffffffffff191668010000000000000002175f80516020612b20833981519152555f80516020612b008339815191525460408051610f3b8282612042565b6017815260208101907f726f757465722e73746f726167652e526f7574657256320000000000000000008252610f6f6124ba565b5190205f198101919082116104db577fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d292600a80602094845190868201908152868252610fbc8683612042565b60ff19915190201692835f80516020612b0083398151915255610fdd612758565b80518555600185019063ffffffff888201511669ffffffffffff000000008884549301518a1b169169ffffffffffffffffffff1916171790556004810160048501908082036110e3575b505061ffff600782015416600785019061ffff198254161790556110566110506008830161213b565b8561279d565b01910190808203611091575b505060ff60401b195f80516020612b2083398151915254165f80516020612b20833981519152555160028152a1005b806001600160401b03806001600160801b03935416166001600160401b031984541617835554831c16600160401b600160c01b03825491841b1690600160401b600160c01b0319161790558380611062565b5481546001600160a01b03199081166001600160a01b039283161790925560058381015490870180548416918316919091179055600680840154908701805490931691161790558780611027565b5060026001600160401b0382161015610ef4565b346101b25760a03660031901126101b25761115e611f22565b6044356024356064356001600160401b0381116101b257611183903690600401611f4c565b90608435946001600160801b03861686036101b2576111a38686866124ed565b949060018060a01b03169560405190602082019283526040820152604081526111cd606082612042565b519020853b156101b257604051635b1b84f760e01b81526001600160a01b03909216600483015260248201525f8160448183895af18015610e4d57611236575b50833b156101b257610e1f5f9360405196879485946306f0ee9760e51b865233600487016120fe565b5f61124091612042565b8561120d565b346101b2575f3660031901126101b2575f80516020612b0083398151915254600501546040516001600160a01b039091168152602090f35b346101b25760203660031901126101b257611297611f22565b61129f6124ba565b5f80516020612b008339815191525460040180546001600160a01b0319166001600160a01b03909216919091179055005b346101b2575f3660031901126101b25760205f80516020612b008339815191525454604051908152f35b346101b25760403660031901126101b257602435600435811580159061143d575b1561140257600b5f80516020612b008339815191525461133d81541515611f9a565b0190805f528160205260ff60405f20541660038110156107f1576113a1577f65672eaf4ff8b823ea29ae013fef437d1fa9ed431125263a7a1f0ac49eada39692604092825f52602052825f20600160ff1982541617905582519182526020820152a1005b60405162461bcd60e51b815260206004820152603360248201527f676976656e20636f646520696420697320616c7265616479206f6e2076616c6960448201527219185d1a5bdb881bdc881d985b1a59185d1959606a1b6064820152608490fd5b60405162461bcd60e51b8152602060048201526013602482015272189b1bd88818d85b89dd08189948199bdd5b99606a1b6044820152606490fd5b505f49151561131b565b346101b25760403660031901126101b2576004356001600160401b0381116101b257611477903690600401611ef2565b906024356001600160401b0381116101b257611497903690600401611ef2565b9190927f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c611eb95792919060017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d5f80516020612b00833981519152549161150383541515611f9a565b5f9160605b86841015611e7d578360051b82013594609e19833603018612156101b25760028101546040878501013503611e2a57611546606087850101356128f4565b15611dd65791929385840135602061156181898801016122e1565b65ffffffffffff604051916115758361200c565b84835216918291015281600286015565ffffffffffff196003860154161760038501556060945f985b6115ae828a0160808101906122f4565b90508a1015611d2e576115d18a6115cb848c0160808101906122f4565b90612329565b975f80516020612b00833981519152546115ea8a6121df565b6001600160a01b03165f908152600c8201602052604090205415611cd157600601546001600160801b03906020906001600160a01b031660448c5f61163a6060611633846121df565b9301612937565b60405163a9059cbb60e01b81526001600160a01b0390931660048401529590951660248201529384928391905af18015610e4d57611ca5575b506001600160a01b036116858a6121df565b169b5f9260605b61169960808d018d612963565b9050851015611820576116af60808d018d612963565b86929192101561180c578f91606087020180359160208201936116d1856121df565b9260408101936116e085612937565b833b156101b2576040516314503e5160e01b8152600481018890526001600160a01b0390921660248301526001600160801b03166044820152915f908390606490829084905af1918215610e4d576060926117fc575b503603126101b257602080936117f493604060019761177061176583519261175d84612027565b868452611f38565b938487840152611f79565b91018190526040805185810194855260609390931b6bffffffffffffffffffffffff19169083015260801b6fffffffffffffffffffffffffffffffff19166054820152604481526117c2606482612042565b6040519584879551918291018587015e840190838201905f8252519283915e01015f815203601f198101835282612042565b94019361168c565b5f61180691612042565b5f611736565b634e487b7160e01b5f52603260045260245ffd5b98909192979b94959693509b989b6060925f935b61184160a08e018e6122f4565b9050851015611b36578f9061185f868f8060a06115cb9201906122f4565b9060808201359283155f14611a725761187a602084016121df565b611887604085018561234b565b909261189560608701612937565b92813b156101b2575f8781956001600160801b036118e4604051998a988997889663c2df600960e01b885235600488015260018060a01b031660248701526080604487015260848601916120de565b9116606483015203925af18015610e4d57611a62575b505b8136039260c084126101b2576040519360a085018581106001600160401b03821117611a4e576040528335855261193560208501611f38565b916020860192835260408501356001600160401b0381116101b257850136601f820112156101b25761196e90369060208135910161237d565b9460408701958652604061198460608301611f79565b6060890190815293607f1901126101b25760a090604051926119a58461200c565b835201356001600160e01b0319811681036101b2576054611a46968360349360019a602061076597019182528260808201525197519251965191519063ffffffff60e01b9051169060206040519889958287019b8c526001600160601b03199060601b1660408701528051918291018787015e8401926001600160801b03199060801b16858401526064830152608482015203016014810184520182612042565b940193611834565b634e487b7160e01b5f52604160045260245ffd5b5f611a6c91612042565b5f6118fa565b611a7e602084016121df565b90611a8c604085018561234b565b91611a9960608701612937565b9260a087013563ffffffff60e01b81168091036101b257823b156101b25760405163c78bde7760e01b81526001600160a01b03909616600487015260a060248701525f9486948593879385939290916001600160801b0391611aff9160a48701916120de565b921660448401528b6064840152608483015203925af18015610e4d57611b26575b506118fc565b5f611b3091612042565b5f611b20565b90969993509d939a90969d9c919c9b97949b604082019160018060a01b03611b5d846121df565b16611c4e575b602081013591863b156101b2575f80976024604051809a8193638ea59e1d60e01b83528860048401525af1958615610e4d57600197611c2e97611c3e575b50611bc06060611bb9611bb3866121df565b976121df565b9401612937565b90602081519101209160208151910120926040519460208601966001600160601b03199060601b16875260348601526001600160601b03199060601b1660548501526001600160801b03199060801b166068840152607883015260988201526098815261076560b882612042565b960198999199969294909661159e565b5f611c4891612042565b5f611ba1565b611c57836121df565b863b156101b257604051630959112b60e11b81526001600160a01b0390911660048201525f81602481838b5af18015610e4d57611c95575b50611b63565b5f611c9f91612042565b5f611c8f565b611cc59060203d8111611cca575b611cbd8183612042565b81019061294b565b611673565b503d611cb3565b60405162461bcd60e51b815260206004820152602f60248201527f636f756c646e277420706572666f726d207472616e736974696f6e20666f722060448201526e756e6b6e6f776e2070726f6772616d60881b6064820152608490fd5b9498509690611dc992999695600194927fd756eca21e02cb0dbde1e44a4d9c6921b5c8aa4668cfa0752784b3dc855bce1e6020604051858152a16060611d786020838d01016122e1565b926020815191012091604051936020850195865265ffffffffffff60d01b9060d01b1660408501526040818d01013560468501528b010135606683015260868201526086815261076560a682612042565b9601929594939094611508565b60405162461bcd60e51b815260206004820152602660248201527f616c6c6f776564207072656465636573736f7220626c6f636b207761736e277460448201526508199bdd5b9960d21b6064820152608490fd5b60405162461bcd60e51b815260206004820152602560248201527f696e76616c69642070726576696f757320636f6d6d697474656420626c6f636b604482015264040d0c2e6d60db1b6064820152608490fd5b61081c838787611e949460208151910120906123c2565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d005b633ee5aeb560e01b5f5260045ffd5b346101b2575f3660031901126101b257602090600e5f80516020612b008339815191525401548152f35b9181601f840112156101b2578235916001600160401b0383116101b2576020808501948460051b0101116101b257565b600435906001600160a01b03821682036101b257565b35906001600160a01b03821682036101b257565b9181601f840112156101b2578235916001600160401b0383116101b257602083818601950101116101b257565b35906001600160801b03821682036101b257565b9060038210156107f15752565b15611fa157565b60405162461bcd60e51b815260206004820152603860248201527f726f757465722067656e65736973206973207a65726f3b2063616c6c20606c6f60448201527f6f6b757047656e657369734861736828296020666972737400000000000000006064820152608490fd5b604081019081106001600160401b03821117611a4e57604052565b606081019081106001600160401b03821117611a4e57604052565b90601f801991011681019081106001600160401b03821117611a4e57604052565b602080612090928195946040519682889351918291018585015e8201908382015203018085520183612042565b565b1561209957565b60405162461bcd60e51b815260206004820152601e60248201527f7369676e61747572657320766572696669636174696f6e206661696c656400006044820152606490fd5b908060209392818452848401375f828201840152601f01601f1916010190565b9395949061212e6001600160801b0393606095859360018060a01b031688526080602089015260808801916120de565b9616604085015216910152565b90604051918281549182825260208201905f5260205f20925f5b81811061216a57505061209092500383612042565b84546001600160a01b0316835260019485019487945060209093019201612155565b6001600160401b038111611a4e5760051b60200190565b919081101561180c5760051b0190565b805182101561180c5760209160051b010190565b604051906121d48261200c565b5f6020838281520152565b356001600160a01b03811681036101b25790565b5f80516020612b0083398151915254600901905f5b8381106122185750505050600190565b612226610a148286856121a3565b6001600160a01b03165f9081526020849052604090205460ff161561224d57600101612208565b505050505f90565b3580151581036101b25790565b5f1981146104db5760010190565b6001600160a01b031680156122ce575f80516020612ae083398151915280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b3565ffffffffffff811681036101b25790565b903590601e19813603018212156101b257018035906001600160401b0382116101b257602001918160051b360383136101b257565b919081101561180c5760051b8101359060be19813603018212156101b2570190565b903590601e19813603018212156101b257018035906001600160401b0382116101b2576020019181360383136101b257565b9291926001600160401b038211611a4e57604051916123a6601f8201601f191660200184612042565b8294818452818301116101b2578281602093845f960137010152565b9190916123d1600782016128c4565b926040519060208201908152602082526123ec604083612042565b612428603660405180936020820195601960f81b87523060601b60228401525180918484015e81015f838201520301601f198101835282612042565b5190205f9260095f9301925b868110156124af5761246a61246161245b6124548460051b86018661234b565b369161237d565b856129c3565b909291926129fd565b6001600160a01b03165f9081526020859052604090205460ff16612491575b600101612434565b9361249b90612262565b938585036124895750505050505050600190565b505050505050505f90565b5f80516020612ae0833981519152546001600160a01b031633036124da57565b63118cdaa760e01b5f523360045260245ffd5b905f80516020612b00833981519152549261250a84541515611f9a565b825f52600b840160205260ff60405f20541660038110156107f1576002036126fc576001600160801b03166509184e72a000016001600160801b0381116104db5760068401546040516323b872dd60e01b81523360048201523060248201526001600160801b03929092166044830152602090829060649082905f906001600160a01b03165af1908115610e4d575f916126dd575b5015612698576e5af43d82803e903d91602b57fd5bf360058401549160405160208101918583526040820152604081526125da606082612042565b51902091763d602d80600a3d3981f3363d3d373d3d3d363d7300000062ffffff8260881c16175f526effffffffffffffffffffffffffffff199060781b1617602052603760095ff5916001600160a01b038316908115612689577f8008ec1d8798725ebfa0f2d128d52e8e717dcba6e0f786557eeee70614b02bf191600d602092825f52600c810184528560405f2055016126758154612262565b9055604051908152a2906509184e72a00090565b63b06ebf3d60e01b5f5260045ffd5b60405162461bcd60e51b815260206004820152601860248201527f6661696c656420746f20726574726965766520575661726100000000000000006044820152606490fd5b6126f6915060203d602011611cca57611cbd8183612042565b5f61259f565b60405162461bcd60e51b815260206004820152602e60248201527f636f6465206d7573742062652076616c696461746564206265666f726520707260448201526d37b3b930b69031b932b0ba34b7b760911b6064820152608490fd5b5f6040805161276681612027565b828152826020820152015260405161277d81612027565b5f815263ffffffff4316602082015265ffffffffffff4216604082015290565b9060088201908154612880579091600901905f5b81518110156127f2576001906001600160a01b036127cf82856121b3565b5116828060a01b03165f528360205260405f208260ff19825416179055016127b1565b5080519291506001600160401b038311611a4e57680100000000000000008311611a4e57815483835580841061285a575b50602001905f5260205f205f5b83811061283d5750505050565b82516001600160a01b031681830155602090920191600101612830565b825f528360205f2091820191015b8181106128755750612823565b5f8155600101612868565b606460405162461bcd60e51b815260206004820152602060248201527f72656d6f76652070726576696f75732076616c696461746f72732066697273746044820152fd5b61ffff6001820154915416908181029181830414901517156104db5761270f81018091116104db57612710900490565b905f1943014381116104db57805b61290d575b505f9150565b804083810361291e57506001925050565b156129325780156104db575f190180612902565b612907565b356001600160801b03811681036101b25790565b908160209103126101b2575180151581036101b25790565b903590601e19813603018212156101b257018035906001600160401b0382116101b2576020019160608202360383136101b257565b60ff5f80516020612b208339815191525460401c16156129b457565b631afcd79f60e31b5f5260045ffd5b81519190604183036129f3576129ec9250602082015190606060408401519301515f1a90612a5d565b9192909190565b50505f9160029190565b60048110156107f15780612a0f575050565b60018103612a265763f645eedf60e01b5f5260045ffd5b60028103612a41575063fce698f760e01b5f5260045260245ffd5b600314612a4b5750565b6335e2f38360e21b5f5260045260245ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411612ad4579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15610e4d575f516001600160a01b03811615612aca57905f905f90565b505f906001905f90565b5050505f916003919056fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005c09ca1b9b8127a4fd9f3c384aac59b661441e820e17733753ff5f2e86e1e000f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220bcddd1e327a9db67c9f2d99da008e3ca613651edd923d75a84279688b2dc90f264736f6c634300081a0033","sourceMap":"748:15445:159:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;748:15445:159;;;;;;:::i;:::-;3496:45;-1:-1:-1;;;;;;;;;;;748:15445:159;3496:45;:57;748:15445;;;;;;-1:-1:-1;748:15445:159;;;;;;-1:-1:-1;748:15445:159;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;748:15445:159;;;;;;:::i;:::-;;;-1:-1:-1;;;;;748:15445:159;;;;;;;;;;;-1:-1:-1;;;;;748:15445:159;;;;;;;;;;;-1:-1:-1;;;;;748:15445:159;;;;;;;;;;-1:-1:-1;;;;;748:15445:159;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;748:15445:159;;;;;;4301:16:26;748:15445:159;-1:-1:-1;;;;;748:15445:159;;4726:16:26;;:34;;;;748:15445:159;4805:1:26;4790:16;:50;;;;748:15445:159;4855:13:26;:30;;;;748:15445:159;4851:91:26;;;-1:-1:-1;;748:15445:159;;4805:1:26;748:15445:159;-1:-1:-1;;;;;;;;;;;748:15445:159;6961:1:26;;748:15445:159;4979:67:26;;748:15445:159;6893:76:26;;;:::i;:::-;;;:::i;:::-;6961:1;:::i;:::-;748:15445:159;;;;;;;;:::i;:::-;;;;;;;;;;;2303:62:25;;:::i;:::-;748:15445:159;16061:27;;-1:-1:-1;;748:15445:159;;;;;;;;;16042:52;748:15445;16042:52;;748:15445;;;;16042:52;;;;;;:::i;:::-;748:15445;;;;16032:63;;:89;748:15445;;-1:-1:-1;;;;;;;;;;;748:15445:159;1510:17;;:::i;:::-;748:15445;;;;4805:1:26;748:15445:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;1560:53;;748:15445;;;1560:53;748:15445;;1537:20;;748:15445;;-1:-1:-1;;;;;;748:15445:159;;;-1:-1:-1;;;;;748:15445:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1623:25;;;748:15445;;-1:-1:-1;;748:15445:159;;;;;577:4:161;;;:::i;:::-;748:15445:159;;;;;;;:::i;:::-;577:4:161;;;748:15445:159;577:4:161;;;748:15445:159;577:4:161;;;748:15445:159;;577:4:161;;;;;;;;;;;1721:35:159;;;;;1766:22;1721:35;;;:::i;:::-;748:15445;;:::i;:::-;;674:18:161;748:15445:159;;;;;;:::i;:::-;447:13:161;748:15445:159;;3489:60:161;748:15445:159;1766:22;748:15445;;-1:-1:-1;;;;;;748:15445:159;;;;;5066:101:26;;748:15445:159;5066:101:26;748:15445:159;5142:14:26;748:15445:159;-1:-1:-1;;;748:15445:159;-1:-1:-1;;;;;;;;;;;748:15445:159;;-1:-1:-1;;;;;;;;;;;748:15445:159;;4805:1:26;748:15445:159;;5142:14:26;748:15445:159;577:4:161;748:15445:159;;;;;;:::i;:::-;577:4:161;;;;;;;;748:15445:159;;;;;;;;;;;;4979:67:26;-1:-1:-1;;748:15445:159;;;-1:-1:-1;;;;;;;;;;;748:15445:159;4979:67:26;;;4851:91;6498:23;;;748:15445:159;4908:23:26;748:15445:159;;4908:23:26;4855:30;4872:13;;;4855:30;;;4790:50;4818:4;4810:25;:30;;-1:-1:-1;4790:50:26;;4726:34;;;-1:-1:-1;4726:34:26;;748:15445:159;;;;;;-1:-1:-1;;748:15445:159;;;;2357:1:25;748:15445:159;;:::i;:::-;2303:62:25;;:::i;2357:1::-;748:15445:159;;;;;;;-1:-1:-1;;748:15445:159;;;;;;3650:28;-1:-1:-1;;;;;;;;;;;748:15445:159;3650:28;748:15445;;;;;;;;;;;;;;-1:-1:-1;;748:15445:159;;;;;4059:56;4086:28;-1:-1:-1;;;;;;;;;;;748:15445:159;4086:28;4059:56;:::i;:::-;748:15445;;;;;;;;;;;;-1:-1:-1;;748:15445:159;;;;;3922:39;-1:-1:-1;;;;;;;;;;;748:15445:159;3922:39;748:15445;;;;;;;;;;;;;-1:-1:-1;;748:15445:159;;;;;;-1:-1:-1;;;;;748:15445:159;;;;;;;;;;;;;;;;-1:-1:-1;;;;;748:15445:159;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;748:15445:159;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;748:15445:159;;7928:107;748:15445;;7936:38;;7928:107;:::i;:::-;8264:19;;;;748:15445;;;8140:3;8111:27;;;;;;748:15445;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8264:82;748:15445;;;8452:20;3348::161;8452::159;8842:76;8452:20;;;;;:::i;:::-;;;;748:15445;;;;;;;;;8539:24;748:15445;;;;;;;;8581:39;;;:41;748:15445;;8581:41;:::i;:::-;748:15445;;8448:279;8782:20;;;:::i;:::-;748:15445;;8746:57;748:15445;;;;;;8746:57;3348:20:161;:::i;:::-;748:15445:159;;3312:57:161;748:15445:159;3312:57:161;;748:15445:159;;;;;;;;;;;;3312:57:161;;;;;;:::i;:::-;748:15445:159;3302:68:161;;8842:76:159;;:::i;:::-;8140:3;748:15445;8096:13;;;8448:279;748:15445;;;;;;;;;;;;;;;;8448:279;;748:15445;;;-1:-1:-1;;;748:15445:159;;;;;;;;;;;;;;;;;-1:-1:-1;;;748:15445:159;;;;;;;;;;;;;;;;;;;8111:27;;8960:78;8111:27;;8939:155;8111:27;748:15445;;;;;8992:32;8960:78;;:::i;:::-;8939:155;:::i;748:15445::-;;;;;;-1:-1:-1;;748:15445:159;;;;-1:-1:-1;;;;;;;;;;;748:15445:159;;2774:23;748:15445;;;-1:-1:-1;;;;;748:15445:159;;;;;;;;;;;;;;-1:-1:-1;;748:15445:159;;;;;3796:39;-1:-1:-1;;;;;;;;;;;748:15445:159;3796:39;748:15445;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;748:15445:159;;;;;-1:-1:-1;748:15445:159;;;;;;;;;3796:39;748:15445;;;;;;;;;-1:-1:-1;;748:15445:159;;;;;2657:30;-1:-1:-1;;;;;;;;;;;748:15445:159;2657:30;748:15445;;;;;;;;;;;;;-1:-1:-1;;748:15445:159;;;;4354:22;-1:-1:-1;;;;;;;;;;;748:15445:159;4354:22;748:15445;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;748:15445:159;;;;;;-1:-1:-1;;;;;748:15445:159;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;748:15445:159;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;748:15445:159;;;;5227:28;748:15445;5227:28;;5154:129;5174:23;;;;;;748:15445;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;748:15445:159;;;;;;;;;5227:28;748:15445;;;5199:3;5256:15;;;5227:28;5256:15;;;;:::i;:::-;;:::i;:::-;748:15445;;;;;;-1:-1:-1;748:15445:159;;;;;-1:-1:-1;748:15445:159;;5218:54;;;;:::i;:::-;748:15445;;5159:13;;748:15445;;;;;;-1:-1:-1;;748:15445:159;;;;;5388:36;-1:-1:-1;;;;;;;;;;;748:15445:159;5388:36;748:15445;;;;;;;;;;;;;-1:-1:-1;;748:15445:159;;;;;;:::i;:::-;4878:31;-1:-1:-1;;;;;;;;;;;748:15445:159;4878:31;:43;748:15445;;;;;;-1:-1:-1;748:15445:159;;;;;-1:-1:-1;748:15445:159;;;;;;;;;;;;;;-1:-1:-1;;748:15445:159;;;;;;-1:-1:-1;;;;;748:15445:159;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;748:15445:159;;;;-1:-1:-1;;;;;;;;;;;748:15445:159;;;-1:-1:-1;;;;;748:15445:159;;;;;;;;;;;;;;-1:-1:-1;;748:15445:159;;;;-1:-1:-1;;;;;;;;;;;748:15445:159;;;;;;5939:26;;;748:15445;;5929:37;5985:25;;;748:15445;;;;;;;-1:-1:-1;;;748:15445:159;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;748:15445:159;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;748:15445:159;;;;-1:-1:-1;;;;;;;;;;;748:15445:159;3009:35;;748:15445;;;-1:-1:-1;;;;;748:15445:159;;;;;;;;;;;;;;-1:-1:-1;;748:15445:159;;;;;;:::i;:::-;;;4226:25;-1:-1:-1;;;;;;;;;;;748:15445:159;4226:25;-1:-1:-1;;;;;748:15445:159;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;748:15445:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;748:15445:159;;;;;;-1:-1:-1;;;;;748:15445:159;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;748:15445:159;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;748:15445:159;;;;4705:19;748:15445;4705:19;;4635:120;4655:20;;;;;;748:15445;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;4677:3;4731:12;;;;;:::i;:::-;748:15445;;;;;;;;;;;;4696:48;;;;;:::i;:::-;748:15445;;;;;;;;;;;4640:13;;748:15445;;;;;;-1:-1:-1;;748:15445:159;;;;;;-1:-1:-1;;;;;748:15445:159;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;748:15445:159;;;;;;6975:52;748:15445;;;;;6975:52;:::i;:::-;-1:-1:-1;;;;;748:15445:159;;;;;;;7038:77;;;;;;748:15445;;;;;;;;;;;;7038:77;;7067:10;748:15445;7038:77;;;:::i;:::-;;;;;;;;;;;;748:15445;7038:77;;;748:15445;;;;;;;;7038:77;748:15445;7038:77;;;:::i;:::-;;;;;748:15445;;;;;;;;;;;;;;;-1:-1:-1;;748:15445:159;;;;2303:62:25;;:::i;:::-;-1:-1:-1;;;;;;;;;;;748:15445:159;;-1:-1:-1;;;;;;748:15445:159;;;;;;;-1:-1:-1;;;;;748:15445:159;3975:40:25;748:15445:159;;3975:40:25;748:15445:159;;;;;;;-1:-1:-1;;748:15445:159;;;;2303:62:25;;:::i;:::-;-1:-1:-1;;;;;;;;;;;748:15445:159;;;;;;6431:44:26;;;;748:15445:159;6427:105:26;;-1:-1:-1;;748:15445:159;;;-1:-1:-1;;;;;;;;;;;748:15445:159;-1:-1:-1;;;;;;;;;;;748:15445:159;;;;;;;;:::i;:::-;;;;;;;;;;;2303:62:25;;:::i;:::-;748:15445:159;16061:27;;-1:-1:-1;;748:15445:159;;;;;;;;6656:20:26;748:15445:159;2405:25;748:15445;;;;;16042:52;;;;748:15445;;;16042:52;;;;;;;:::i;:::-;748:15445;;;;16032:63;;:89;748:15445;;-1:-1:-1;;;;;;;;;;;748:15445:159;2078:17;;:::i;:::-;748:15445;;;;6593:4:26;748:15445:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;2131:23;;748:15445;2105:23;;748:15445;;;;;;;2235:28;;748:15445;2235:28;;;748:15445;;2235:28;2165;;748:15445;;;;;;;;;2300:66;748:15445;2326:39;;;748:15445;:::i;:::-;2300:66;;:::i;:::-;2405:25;2377;;748:15445;;;;;;;;;-1:-1:-1;;;748:15445:159;-1:-1:-1;;;;;;;;;;;748:15445:159;;-1:-1:-1;;;;;;;;;;;748:15445:159;;1892:1;748:15445;;6656:20:26;748:15445:159;;;-1:-1:-1;;;;;748:15445:159;-1:-1:-1;;;;;748:15445:159;;;;-1:-1:-1;;;;;748:15445:159;;;;;;;;;;;-1:-1:-1;;;;;;;748:15445:159;;;;;;;-1:-1:-1;;;;;;;748:15445:159;;;;;;;;;;;;;-1:-1:-1;;;;;;748:15445:159;;;-1:-1:-1;;;;;748:15445:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6431:44:26;748:15445:159;1892:1;-1:-1:-1;;;;;748:15445:159;;6450:25:26;;6431:44;;748:15445:159;;;;;;-1:-1:-1;;748:15445:159;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;748:15445:159;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;748:15445:159;;;;;;7412:52;;;;;:::i;:::-;748:15445;;;;;;;;;;;7580:32;748:15445;7580:32;;748:15445;;;;;;;;7580:32;;;748:15445;7580:32;;:::i;:::-;748:15445;7570:43;;7527:87;;;;;748:15445;;-1:-1:-1;;;7527:87:159;;-1:-1:-1;;;;;748:15445:159;;;;7527:87;;748:15445;;;;;-1:-1:-1;748:15445:159;;;-1:-1:-1;7527:87:159;;;;;;;;;748:15445;7625:75;;;;;;;748:15445;;;;;;;;;;;;7625:75;;7652:10;748:15445;7625:75;;;:::i;7527:87::-;748:15445;7527:87;;;:::i;:::-;;;;748:15445;;;;;;-1:-1:-1;;748:15445:159;;;;-1:-1:-1;;;;;;;;;;;748:15445:159;2891:35;;748:15445;;;-1:-1:-1;;;;;748:15445:159;;;;;;;;;;;;;;-1:-1:-1;;748:15445:159;;;;;;:::i;:::-;2303:62:25;;:::i;:::-;-1:-1:-1;;;;;;;;;;;748:15445:159;;5657:23;748:15445;;-1:-1:-1;;;;;;748:15445:159;-1:-1:-1;;;;;748:15445:159;;;;;;;;;;;;;;;;-1:-1:-1;;748:15445:159;;;;;-1:-1:-1;;;;;;;;;;;748:15445:159;;;;;;;;;;;;;;-1:-1:-1;;748:15445:159;;;;;;;;6228:16;;;;;:36;;748:15445;;;;6482:19;-1:-1:-1;;;;;;;;;;;748:15445:159;6343:107;748:15445;;6351:38;;6343:107;:::i;:::-;6482:19;748:15445;;;;;;;;;;;;;;;;;;;;;6717:45;748:15445;;;;;;;;;;;6667:34;748:15445;;;;;;;;;;;;;;;;;6717:45;748:15445;;;;-1:-1:-1;;;748:15445:159;;;;;;;;;;;;;;;;;-1:-1:-1;;;748:15445:159;;;;;;;;;;-1:-1:-1;;;748:15445:159;;;;;;;;;;;;-1:-1:-1;;;748:15445:159;;;;;;;6228:36;6248:11;748:15445;6248:11;:16;;6228:36;;748:15445;;;;;;-1:-1:-1;;748:15445:159;;;;;;-1:-1:-1;;;;;748:15445:159;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;748:15445:159;;;;;;;;;;;:::i;:::-;7368:53:64;;;516:66:62;7368:53:64;1292:93:62;;7628:52:64;;;1503:4:62;516:66;7628:52:64;-1:-1:-1;;;;;;;;;;;748:15445:159;;9306:107;748:15445;;9314:38;;9306:107;:::i;:::-;748:15445;;;9520:3;9490:28;;;;;;748:15445;;;;;;;;;;;;;;;;;;11268:27;;;748:15445;;;;;11304:39;748:15445;11268:75;748:15445;;11425:58;748:15445;;;;11449:33;748:15445;11425:58;:::i;:::-;748:15445;;;;;;;;;;;11743:26;748:15445;;;;11743:26;;:::i;:::-;748:15445;;;;;;;:::i;:::-;;;;;11696:74;;;;748:15445;11268:27;;;;748:15445;;;;;;;;;;;;;;11827:13;748:15445;11822:273;11883:3;11846:28;748:15445;;;11846:28;;;;;:::i;:::-;11842:39;;;;;;;11950:31;748:15445;11950:28;748:15445;;;11846:28;;;;11950;:::i;:::-;:31;;:::i;:::-;748:15445;-1:-1:-1;;;;;;;;;;;748:15445:159;12636:24;;;:::i;:::-;-1:-1:-1;;;;;748:15445:159;;;;;12607:28;;;748:15445;;;;;;12607:59;748:15445;;12795:32;;748:15445;-1:-1:-1;;;;;748:15445:159;;;-1:-1:-1;;;;;748:15445:159;;12864:24;748:15445;12890:31;748:15445;12864:24;;;:::i;:::-;12890:31;;;:::i;:::-;748:15445;;-1:-1:-1;;;12838:84:159;;-1:-1:-1;;;;;748:15445:159;;;;12838:84;;748:15445;;;;;;;;;;;;;;-1:-1:-1;12838:84:159;;;;;;;;11883:3;-1:-1:-1;;;;;;12963:24:159;;;:::i;:::-;748:15445;;;;;13100:3;13063:28;11846;13063;;;;:::i;:::-;13059:39;;;;;;;13152:28;11846;13063;;13152;;:::i;:::-;748:15445;;;;;;;;;;;;;;;;13240:17;748:15445;13240:17;;;;;;:::i;:::-;13259:11;748:15445;13259:11;;;;;;:::i;:::-;13198:73;;;;;748:15445;;-1:-1:-1;;;13198:73:159;;748:15445;13198:73;;748:15445;;;-1:-1:-1;;;;;748:15445:159;;;;;;;-1:-1:-1;;;;;748:15445:159;;;;;;;;;;13198:73;;748:15445;;;;13198:73;;;;;;;748:15445;13198:73;;;13100:3;748:15445;;;;;;;;;;;;1503:4:62;748:15445:159;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;5709:65:161;;;748:15445:159;;;;;;;;-1:-1:-1;;748:15445:159;;;;;11846:28;748:15445;-1:-1:-1;;748:15445:159;;;;;;5709:65:161;;;13198:73:159;748:15445;5709:65:161;:::i;:::-;748:15445:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5709:65:161;;748:15445:159;;;;;;:::i;:::-;13100:3;748:15445;13044:13;;;13198:73;748:15445;13198:73;;;:::i;:::-;;;;748:15445;;;;;;;;;;;;13059:39;;;;;;;;;;;;;;;748:15445;13428:13;748:15445;13423:687;13481:3;13447:25;;;;;;:::i;:::-;13443:36;;;;;;;13447:25;;13532:28;13447:25;;;;13532;13447;;13532;;:::i;:28::-;13579:20;11846:28;13579:20;;748:15445;13579:28;;;13575:438;13579:28;;;13663:19;748:15445;13663:19;;;:::i;:::-;13684:15;748:15445;13684:15;;;;:::i;:::-;13701:13;;;748:15445;13701:13;;;:::i;:::-;13627:88;;;;;;748:15445;;;;-1:-1:-1;;;;;748:15445:159;;;;;;;;;;;;;13627:88;;748:15445;;13627:88;;748:15445;;;;;;;;;;;11846:28;748:15445;;;;;;;;;:::i;:::-;;;13198:73;748:15445;;;13627:88;;;;;;;;;;13575:438;;;748:15445;;;;;;;;;;;;13447:25;748:15445;;;;;-1:-1:-1;;;;;748:15445:159;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;748:15445:159;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;748:15445:159;;;;13447:25;748:15445;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;748:15445:159;;;;;;;14044:55;748:15445;;;;1503:4:62;748:15445:159;;3679:243:161;748:15445:159;;;;;;11846:28;748:15445;;;;;;3778:15:161;;577:4;;748:15445:159;;;;;;;;;;;;;3679:243:161;;;;;;748:15445:159;;;-1:-1:-1;;;;;748:15445:159;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;748:15445:159;;11846:28;748:15445;;;;;;13198:73;748:15445;;;;;;;3679:243:161;;;;;;;;;;:::i;14044:55:159:-;13481:3;748:15445;13428:13;;;748:15445;;;;;;;;;;;;13627:88;748:15445;13627:88;;;:::i;:::-;;;;13575:438;13797:19;748:15445;13797:19;;;:::i;:::-;13838:15;;748:15445;13838:15;;;;:::i;:::-;13875:13;;748:15445;13875:13;;;:::i;:::-;13955:25;13447;13955;;748:15445;;;;;;;;;;;13754:244;;;;;748:15445;;-1:-1:-1;;;13754:244:159;;-1:-1:-1;;;;;748:15445:159;;;;13754:244;;748:15445;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;748:15445:159;;;;;;;;:::i;:::-;;;;;;;;13198:73;748:15445;;;;;;;13754:244;;;;;;;;;;13575:438;;;;13754:244;748:15445;13754:244;;;:::i;:::-;;;;13443:36;;;;;;;;;;;;;;;;;;;748:15445;14124:26;;748:15445;;;;;;14124:26;;;:::i;:::-;748:15445;14120:123;;13423:687;748:15445;14277:29;;748:15445;14253:54;;;;;;748:15445;;;;;;;;;;;;;14253:54;;;748:15445;14253:54;;748:15445;14253:54;;;;;;;1503:4:62;14253:54:159;12016:68;14253:54;;;13423:687;14363:24;14484:31;748:15445;14444:26;14363:24;;;:::i;:::-;14444:26;;:::i;:::-;12890:31;;14484;:::i;:::-;748:15445;;;;;;14529:27;748:15445;;;;;;14570:25;748:15445;;;4408:101:161;748:15445:159;4408:101:161;;748:15445:159;-1:-1:-1;;;;;748:15445:159;;;;;;;;;;;-1:-1:-1;;;;;748:15445:159;;;;;;;;;-1:-1:-1;;;;;748:15445:159;;11846:28;748:15445;;;;;;;;;;;;;;;4408:101:161;;;;;;:::i;12016:68:159:-;11883:3;748:15445;11827:13;;;;;;;;;;;14253:54;748:15445;14253:54;;;:::i;:::-;;;;14120:123;14205:26;;;:::i;:::-;14180:52;;;;;748:15445;;-1:-1:-1;;;14180:52:159;;-1:-1:-1;;;;;748:15445:159;;;;14180:52;;748:15445;-1:-1:-1;748:15445:159;;;-1:-1:-1;14180:52:159;;;;;;;;;14120:123;;;;14180:52;748:15445;14180:52;;;:::i;:::-;;;;12838:84;;;748:15445;12838:84;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;748:15445;;;-1:-1:-1;;;748:15445:159;;;;;;;;;;;;;;;;;-1:-1:-1;;;13198:73:159;748:15445;;;;;;11842:39;;;;;;9646:75;11842:39;;;;1503:4:62;11842:39:159;;12110:37;748:15445;;;;;;12110:37;748:15445;12238:26;748:15445;;;;11743:26;12238;:::i;:::-;748:15445;;;;;;12378:28;748:15445;;;2718:98:161;748:15445:159;2718:98:161;;748:15445:159;;;;;;;;;;;;;;;;;;11304:39;748:15445;;;;;;;11449:33;748:15445;;;;;;;;;;2718:98:161;;;;;;:::i;9646:75:159:-;9520:3;748:15445;9475:13;;;;;;;;748:15445;;;-1:-1:-1;;;748:15445:159;;;;;;;;;;;;;;;;;-1:-1:-1;;;13198:73:159;748:15445;;;;;;;;;-1:-1:-1;;;748:15445:159;;;;;;;;;;;;;;;;;-1:-1:-1;;;13198:73:159;748:15445;;;;;;9490:28;9763:79;9490:28;;;9742:156;9490:28;748:15445;;;;;9795:33;9763:79;;:::i;9742:156::-;748:15445;516:66:62;7628:52:64;748:15445:159;1292:93:62;1344:30;;;748:15445:159;1344:30:62;748:15445:159;;1344:30:62;748:15445:159;;;;;;-1:-1:-1;;748:15445:159;;;;;;5515:42;-1:-1:-1;;;;;;;;;;;748:15445:159;5515:42;748:15445;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;748:15445:159;;;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;748:15445:159;;;;;;:::o;:::-;;;-1:-1:-1;;;;;748:15445:159;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;748:15445:159;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;748:15445:159;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;748:15445:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;748:15445:159;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;748:15445:159;;;;;;;:::o;:::-;;;5709:65:161;;748:15445:159;;;;;;;;-1:-1:-1;;;;;748:15445:159;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;748:15445:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;748:15445:159;;;;;;;;-1:-1:-1;;748:15445:159;;;;:::o;:::-;;;;;;-1:-1:-1;;;;;748:15445:159;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;-1:-1:-1;748:15445:159;;-1:-1:-1;748:15445:159;;-1:-1:-1;748:15445:159;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;748:15445:159;;;;;;;;;;-1:-1:-1;748:15445:159;;;;;;;;;-1:-1:-1;;;;;748:15445:159;;;;;;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;-1:-1:-1;748:15445:159;;;;;;;:::o;:::-;;-1:-1:-1;;;;;748:15445:159;;;;;;;:::o;3057:348::-;-1:-1:-1;;;;;;;;;;;748:15445:159;3262:42;;;748:15445;3214:22;;;;;;3387:11;;;;748:15445;3057:348;:::o;3238:3::-;3305:14;;;;;;:::i;:::-;-1:-1:-1;;;;;748:15445:159;-1:-1:-1;748:15445:159;;;;;;;;;;;;;3261:59;3257:110;;748:15445;;3199:13;;3257:110;3340:12;;;;748:15445;3340:12;:::o;748:15445::-;;;;;;;;;;:::o;:::-;-1:-1:-1;;748:15445:159;;;;;;;:::o;3405:215:25:-;-1:-1:-1;;;;;748:15445:159;3489:22:25;;3485:91;;-1:-1:-1;;;;;;;;;;;748:15445:159;;-1:-1:-1;;;;;;748:15445:159;;;;;;;-1:-1:-1;;;;;748:15445:159;3975:40:25;-1:-1:-1;;3975:40:25;3405:215::o;3485:91::-;3534:31;;;3509:1;3534:31;3509:1;3534:31;748:15445:159;;3509:1:25;3534:31;748:15445:159;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;748:15445:159;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;748:15445:159;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;748:15445:159;;;;;;;;5709:65:161;748:15445:159;;-1:-1:-1;;748:15445:159;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;748:15445:159;;;;;;:::o;4532:793:161:-;;;;4728:48;4750:25;;;4728:48;:::i;:::-;748:15445:159;;;4851:27:161;;;;748:15445:159;;;4851:27:161;;;;748:15445:159;4851:27:161;;:::i;:::-;2858:45:68;748:15445:159;;;2858:45:68;;4851:27:161;2858:45:68;;748:15445:159;;;;;;4813:4:161;748:15445:159;;;;;;;;;;;;;;;;;;;;2858:45:68;;5709:65:161;;2858:45:68;;;;;;:::i;:::-;748:15445:159;2848:56:68;;748:15445:159;4932:13:161;5111:42;748:15445:159;5111:42:161;;4927:369;4971:3;4947:22;;;;;;3915:8:66;3859:27;748:15445:159;;;;;;;;;:::i;:::-;;;;:::i;:::-;3859:27:66;;:::i;:::-;3915:8;;;;;:::i;:::-;-1:-1:-1;;;;;748:15445:159;;;;;;;;;;;;;;;5107:179:161;;4971:3;748:15445:159;;4932:13:161;;5107:179;5188:17;;;;:::i;:::-;:30;;;;5107:179;5184:88;5242:11;;;;;;;748:15445:159;5242:11:161;:::o;4947:22::-;;;;;;;;748:15445:159;4532:793:161;:::o;2658:162:25:-;-1:-1:-1;;;;;;;;;;;748:15445:159;-1:-1:-1;;;;;748:15445:159;966:10:30;2717:23:25;2713:101;;2658:162::o;2713:101::-;2763:40;;;-1:-1:-1;2763:40:25;966:10:30;2763:40:25;748:15445:159;;-1:-1:-1;2763:40:25;9947:1144:159;;-1:-1:-1;;;;;;;;;;;748:15445:159;;10142:107;748:15445;;10150:38;;10142:107;:::i;:::-;748:15445;-1:-1:-1;748:15445:159;10281:19;;;748:15445;;;;-1:-1:-1;748:15445:159;;;;;;;;;10319:24;10281:62;748:15445;;-1:-1:-1;;;;;748:15445:159;10513:18;748:15445;-1:-1:-1;;;;;748:15445:159;;;;14722:32;;;748:15445;;;-1:-1:-1;;;14715:88:159;;14769:10;14722:20;14715:88;;748:15445;14789:4;748:15445;;;;-1:-1:-1;;;;;748:15445:159;;;;;;;;;;;;14715:88;;748:15445;;-1:-1:-1;;;;;;;748:15445:159;14715:88;;;;;;;-1:-1:-1;14715:88:159;;;9947:1144;748:15445;;;;3743:569:44;10809:32:159;;;748:15445;;;;;10853:32;;748:15445;;;;;;;;;10853:32;;;748:15445;10853:32;;:::i;:::-;748:15445;10843:43;;3743:569:44;;;;;;;;-1:-1:-1;3743:569:44;;;;;;;;748:15445:159;3743:569:44;;;-1:-1:-1;3743:569:44;748:15445:159;-1:-1:-1;;;;;748:15445:159;;;4325:22:44;;4321:85;;11006:32:159;10898:37;10955:33;748:15445;10898:37;748:15445;-1:-1:-1;748:15445:159;10898:28;;;748:15445;;;;-1:-1:-1;748:15445:159;;10955:33;:35;748:15445;;10955:35;:::i;:::-;748:15445;;;;;;;11006:32;11049:35;10513:18;9947:1144;:::o;4321:85:44:-;4370:25;;;-1:-1:-1;4370:25:44;14722:20:159;-1:-1:-1;4370:25:44;748:15445:159;;;-1:-1:-1;;;748:15445:159;;;14722:20;748:15445;;;;;;;;;;;;;14715:88;;748:15445;14715:88;;;;748:15445;14715:88;748:15445;14715:88;;;;;;;:::i;:::-;;;;748:15445;;;-1:-1:-1;;;748:15445:159;;;;;;;;;;;;;;;;;-1:-1:-1;;;748:15445:159;;;;;;;3945:169:161;-1:-1:-1;748:15445:159;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;748:15445:159;;;4068:12:161;748:15445:159;;4032:75:161;;748:15445:159;;4090:15:161;748:15445:159;;4032:75:161;;748:15445:159;3945:169:161;:::o;14871:406:159:-;;14975:36;;;748:15445;;;;;15076:13;;15134:42;;;15022:1;15115:3;748:15445;;15091:22;;;;;14975:36;;-1:-1:-1;;;;;15177:14:159;748:15445;15177:14;;:::i;:::-;748:15445;;;;;;;;-1:-1:-1;748:15445:159;;;;;-1:-1:-1;748:15445:159;;;;;;;;;;;15076:13;;15091:22;-1:-1:-1;748:15445:159;;;15091:22;-1:-1:-1;;;;;;748:15445:159;;;;;;;;;;;;;;;;;;;15071:139;748:15445;;;;15022:1;748:15445;;15022:1;748:15445;15022:1;748:15445;;;;;;14871:406;;;;:::o;748:15445::-;;;-1:-1:-1;;;;;748:15445:159;;;;;;;;;;14975:36;748:15445;;;;;15022:1;748:15445;;;15022:1;748:15445;;;;;;;;;;;;;;;;15022:1;748:15445;;14975:36;748:15445;;;;;;;;;;;;;;;;;;;;;;;;;;;;5331:268:161;748:15445:159;5503:19:161;;;748:15445:159;;;;;;;;;;;;;;;;;;;5579:4:161;748:15445:159;;;;;;;5587:5:161;748:15445:159;;5331:268:161;:::o;2839:340::-;;748:15445:159;;2937:12:161;748:15445:159;2937:12:161;748:15445:159;;;;2920:230:161;2955:5;;;2920:230;-1:-1:-1;748:15445:159;;-1:-1:-1;2839:340:161:o;2962:3::-;2995:12;;3025:11;;;;;-1:-1:-1;2952:1:161;;-1:-1:-1;;3056:11:161:o;3021:119::-;3092:8;3088:52;;748:15445:159;;;;-1:-1:-1;;748:15445:159;;2925:28:161;;3088:52;3120:5;;748:15445:159;;-1:-1:-1;;;;;748:15445:159;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;748:15445:159;;;;;;;;;;;;;;;;:::o;7084:141:26:-;748:15445:159;-1:-1:-1;;;;;;;;;;;748:15445:159;;;;7150:18:26;7146:73;;7084:141::o;7146:73::-;7191:17;;;-1:-1:-1;7191:17:26;;-1:-1:-1;7191:17:26;2129:766:66;748:15445:159;;;2129:766:66;2276:2;2256:22;;2276:2;;2739:25;2539:180;;;;;;;;;;;;;;;-1:-1:-1;2539:180:66;2739:25;;:::i;:::-;2732:32;;;;;:::o;2252:637::-;2795:83;;2811:1;2795:83;2815:35;2795:83;;:::o;7196:532::-;748:15445:159;;;;;;7282:29:66;;;7327:7;;:::o;7278:444::-;748:15445:159;7378:38:66;;748:15445:159;;7439:23:66;;;7291:20;7439:23;748:15445:159;7291:20:66;7439:23;7374:348;7492:35;7483:44;;7492:35;;7550:46;;;;7291:20;7550:46;748:15445:159;;;7291:20:66;7550:46;7479:243;7626:30;7617:39;7613:109;;7479:243;7196:532::o;7613:109::-;7679:32;;;7291:20;7679:32;748:15445:159;;;7291:20:66;7679:32;5140:1530;;;6199:66;6186:79;;6182:164;;748:15445:159;;;;;;-1:-1:-1;748:15445:159;;;;;;;;;;;;;;;;;;;6457:24:66;;;;;;;;;-1:-1:-1;6457:24:66;-1:-1:-1;;;;;748:15445:159;;6495:20:66;6491:113;;6614:49;-1:-1:-1;6614:49:66;-1:-1:-1;5140:1530:66;:::o;6491:113::-;6531:62;-1:-1:-1;6531:62:66;6457:24;6531:62;-1:-1:-1;6531:62:66;:::o;6182:164::-;6281:54;;;6297:1;6281:54;6301:30;6281:54;;:::o","linkReferences":{}},"methodIdentifiers":{"areValidators(address[])":"8f381dbe","codeState(bytes32)":"c13911e8","codesStates(bytes32[])":"82bdeaad","commitBlocks((bytes32,uint48,bytes32,bytes32,(address,bytes32,address,uint128,(bytes32,address,uint128)[],(bytes32,address,bytes,uint128,(bytes32,bytes4))[])[])[],bytes[])":"01b1d156","commitCodes((bytes32,bool)[],bytes[])":"e97d3eb3","computeSettings()":"84d22a4f","createProgram(bytes32,bytes32,bytes,uint128)":"8074b455","createProgramWithDecoder(address,bytes32,bytes32,bytes,uint128)":"666d124c","genesisBlockHash()":"28e24b3d","initialize(address,address,address,address,address[])":"f8453e7c","isValidator(address)":"facd743b","latestCommittedBlockHash()":"c9f16a11","lookupGenesisHash()":"8b1edf1e","mirrorImpl()":"e6fabc09","mirrorProxyImpl()":"65ecfea2","owner()":"8da5cb5b","programCodeId(address)":"9067088e","programsCodeIds(address[])":"baaf0201","programsCount()":"96a2ddfa","reinitialize()":"6c2eb350","renounceOwnership()":"715018a6","requestCodeValidation(bytes32,bytes32)":"1c149d8a","setMirror(address)":"3d43b418","signingThresholdPercentage()":"efd81abc","transferOwnership(address)":"f2fde38b","validatedCodesCount()":"007a32e7","validators()":"ca1e7819","validatorsCount()":"ed612f8c","validatorsThreshold()":"edc87225","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\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"name\":\"BlockCommitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"codeId\",\"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\":\"threshold\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"wvaraPerSecond\",\"type\":\"uint128\"}],\"name\":\"ComputationSettingsChanged\",\"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\":\"ValidatorsChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_validators\",\"type\":\"address[]\"}],\"name\":\"areValidators\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_codeId\",\"type\":\"bytes32\"}],\"name\":\"codeState\",\"outputs\":[{\"internalType\":\"enum Gear.CodeState\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"_codesIds\",\"type\":\"bytes32[]\"}],\"name\":\"codesStates\",\"outputs\":[{\"internalType\":\"enum Gear.CodeState[]\",\"name\":\"\",\"type\":\"uint8[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes32\",\"name\":\"previousCommittedBlock\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"predecessorBlock\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"actorId\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"newStateHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"inheritor\",\"type\":\"address\"},{\"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 Gear.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 Gear.ReplyDetails\",\"name\":\"replyDetails\",\"type\":\"tuple\"}],\"internalType\":\"struct Gear.Message[]\",\"name\":\"messages\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Gear.StateTransition[]\",\"name\":\"transitions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Gear.BlockCommitment[]\",\"name\":\"_blockCommitments\",\"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 Gear.CodeCommitment[]\",\"name\":\"_codeCommitments\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes[]\",\"name\":\"_signatures\",\"type\":\"bytes[]\"}],\"name\":\"commitCodes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"computeSettings\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"threshold\",\"type\":\"uint64\"},{\"internalType\":\"uint128\",\"name\":\"wvaraPerSecond\",\"type\":\"uint128\"}],\"internalType\":\"struct Gear.ComputationSettings\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"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\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_decoderImpl\",\"type\":\"address\"},{\"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\":\"createProgramWithDecoder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"genesisBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_mirror\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_mirrorProxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_wrappedVara\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"_validators\",\"type\":\"address[]\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_validator\",\"type\":\"address\"}],\"name\":\"isValidator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestCommittedBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lookupGenesisHash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mirrorImpl\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mirrorProxyImpl\",\"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\":\"_programId\",\"type\":\"address\"}],\"name\":\"programCodeId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_programsIds\",\"type\":\"address[]\"}],\"name\":\"programsCodeIds\",\"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\":\"address\",\"name\":\"newMirror\",\"type\":\"address\"}],\"name\":\"setMirror\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"signingThresholdPercentage\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatedCodesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"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\":\"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\":{\"BlockCommitted(bytes32)\":{\"details\":\"This is an *informational* event, signaling that the block outcome has been committed.\",\"params\":{\"hash\":\"The block hash that was \\\"finalized\\\" in relation to the necessary transitions.\"}},\"CodeGotValidated(bytes32,bool)\":{\"details\":\"This is an *informational* event, signaling the results of code validation.\",\"params\":{\"codeId\":\"The ID of the code that was validated.\",\"valid\":\"The result of the validation: indicates whether the code ID can be used for program creation.\"}},\"CodeValidationRequested(bytes32,bytes32)\":{\"details\":\"This is a *requesting* event, signaling that validators need to download and validate the code from the transaction blob.\",\"params\":{\"blobTxHash\":\"The transaction hash that contains the WASM blob. Set to zero if applied to the current transaction.\",\"codeId\":\"The expected code ID of the applied WASM blob, represented as a Blake2 hash.\"}},\"ComputationSettingsChanged(uint64,uint128)\":{\"details\":\"This is both an *informational* and *requesting* event, signaling that an authority decided to change the computation settings. Users and program authors may want to adjust their practices, while validators need to apply the changes internally starting from the next block.\",\"params\":{\"threshold\":\"The amount of Gear gas initially allocated for free to allow the program to decide if it wants to process the incoming message.\",\"wvaraPerSecond\":\"The amount of WVara to be charged from the program's execution balance per second of computation.\"}},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"ProgramCreated(address,bytes32)\":{\"details\":\"This is both an *informational* and *requesting* event, signaling the creation of a new program and its Ethereum mirror. Validators need to initialize it with a zeroed hash state internally.\",\"params\":{\"actorId\":\"ID of the actor that was created. It is accessible inside the co-processor and on Ethereum by this identifier.\",\"codeId\":\"The code ID of the WASM implementation of the created program.\"}},\"StorageSlotChanged()\":{\"details\":\"This is both an *informational* and *requesting* event, signaling that an authority decided to wipe the router state, rendering all previously existing codes and programs ineligible. Validators need to wipe their databases immediately.\"},\"ValidatorsChanged()\":{\"details\":\"This is an *informational* event, signaling that only new validators are now able to pass commitment signing verification.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"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\":{\"events\":{\"BlockCommitted(bytes32)\":{\"notice\":\"Emitted when all necessary state transitions have been applied and states have changed.\"},\"CodeGotValidated(bytes32,bool)\":{\"notice\":\"Emitted when a code, previously requested for validation, receives validation results, so its CodeStatus changed.\"},\"CodeValidationRequested(bytes32,bytes32)\":{\"notice\":\"Emitted when a new code validation request is submitted.\"},\"ComputationSettingsChanged(uint64,uint128)\":{\"notice\":\"Emitted when the computation settings have been changed.\"},\"ProgramCreated(address,bytes32)\":{\"notice\":\"Emitted when a new program within the co-processor is created and is now available on-chain.\"},\"StorageSlotChanged()\":{\"notice\":\"Emitted when the router's storage slot has been changed.\"},\"ValidatorsChanged()\":{\"notice\":\"Emitted when the election mechanism forces the validator set to be changed.\"}},\"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/\",\":symbiotic-core/=lib/symbiotic-core/\"],\"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\":\"0x78105f388516b83fcb68f7c006c5d9d685bc8ad7fadcdfa56c0919efa79a6373\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://3a8ab1264895b4f5c8fd3aa18524016c4e88712a50e0a9935f421e13f3e09601\",\"dweb:/ipfs/QmXyVe9k37fDFWmrfjYHisxmqnEynevYo88uVrnRAmYW6L\"]},\"src/IRouter.sol\":{\"keccak256\":\"0xdbae96165e93f374f6b0ab185c3ce61e5eed76cce317349eda4aab002f3998c7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://275140952f5612b545caf34e66af939a42a6156ddf9ae312192e9dd3010c8be2\",\"dweb:/ipfs/QmZYtSdHt5GkL5GT4gqNsuoryZ1whB1AQfmSmoNCHhicQc\"]},\"src/IWrappedVara.sol\":{\"keccak256\":\"0xfc2f9955b1d8f74a98a087b490a03b86933c423eb58b840f1e3eb4cd58eac175\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://5942f66657786636ddb832587404810bf65fc757e12ddaa07393a0b3f885840f\",\"dweb:/ipfs/QmTEP15EF9zrA7bCj8cesNd8QyUPHM3XgtKJecCUjsA5Jf\"]},\"src/Router.sol\":{\"keccak256\":\"0x6d1ecf1d12375db23f5ab62e056db909ac6f9228c51290d6f07f02716bc6a8b1\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://651fa324ba3f3d38ad586d00d1013dc6ea2c665aede89f219aa1fce2c78a0f7c\",\"dweb:/ipfs/QmXChwu9A6exCac6UAgijYrc7PErYcoh9LKbzj7obWe6hf\"]},\"src/libraries/Gear.sol\":{\"keccak256\":\"0xa543913342b4408d07fe4d884280b5c1d2430e8386713e9b6e1a5924e3e2bfbc\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://9e466d986795dab2d942984fcbf03e8e8995cd17e4221f1dfca715af091d03ec\",\"dweb:/ipfs/QmWo16RoqKERSYornA8qPqL32rYveeEHxiHmDHongS6uzy\"]}},\"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":"bytes32","name":"hash","type":"bytes32","indexed":false}],"type":"event","name":"BlockCommitted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"codeId","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":"threshold","type":"uint64","indexed":false},{"internalType":"uint128","name":"wvaraPerSecond","type":"uint128","indexed":false}],"type":"event","name":"ComputationSettingsChanged","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":"ValidatorsChanged","anonymous":false},{"inputs":[{"internalType":"address[]","name":"_validators","type":"address[]"}],"stateMutability":"view","type":"function","name":"areValidators","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"_codeId","type":"bytes32"}],"stateMutability":"view","type":"function","name":"codeState","outputs":[{"internalType":"enum Gear.CodeState","name":"","type":"uint8"}]},{"inputs":[{"internalType":"bytes32[]","name":"_codesIds","type":"bytes32[]"}],"stateMutability":"view","type":"function","name":"codesStates","outputs":[{"internalType":"enum Gear.CodeState[]","name":"","type":"uint8[]"}]},{"inputs":[{"internalType":"struct Gear.BlockCommitment[]","name":"_blockCommitments","type":"tuple[]","components":[{"internalType":"bytes32","name":"hash","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes32","name":"previousCommittedBlock","type":"bytes32"},{"internalType":"bytes32","name":"predecessorBlock","type":"bytes32"},{"internalType":"struct Gear.StateTransition[]","name":"transitions","type":"tuple[]","components":[{"internalType":"address","name":"actorId","type":"address"},{"internalType":"bytes32","name":"newStateHash","type":"bytes32"},{"internalType":"address","name":"inheritor","type":"address"},{"internalType":"uint128","name":"valueToReceive","type":"uint128"},{"internalType":"struct Gear.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 Gear.Message[]","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 Gear.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 Gear.CodeCommitment[]","name":"_codeCommitments","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":[],"stateMutability":"view","type":"function","name":"computeSettings","outputs":[{"internalType":"struct Gear.ComputationSettings","name":"","type":"tuple","components":[{"internalType":"uint64","name":"threshold","type":"uint64"},{"internalType":"uint128","name":"wvaraPerSecond","type":"uint128"}]}]},{"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":"nonpayable","type":"function","name":"createProgram","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_decoderImpl","type":"address"},{"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":"nonpayable","type":"function","name":"createProgramWithDecoder","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"genesisBlockHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_mirror","type":"address"},{"internalType":"address","name":"_mirrorProxy","type":"address"},{"internalType":"address","name":"_wrappedVara","type":"address"},{"internalType":"address[]","name":"_validators","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"address","name":"_validator","type":"address"}],"stateMutability":"view","type":"function","name":"isValidator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"latestCommittedBlockHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"lookupGenesisHash"},{"inputs":[],"stateMutability":"view","type":"function","name":"mirrorImpl","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"mirrorProxyImpl","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_programId","type":"address"}],"stateMutability":"view","type":"function","name":"programCodeId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address[]","name":"_programsIds","type":"address[]"}],"stateMutability":"view","type":"function","name":"programsCodeIds","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":"address","name":"newMirror","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMirror"},{"inputs":[],"stateMutability":"view","type":"function","name":"signingThresholdPercentage","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"validatedCodesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"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":"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."},"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/","symbiotic-core/=lib/symbiotic-core/"],"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":"0x78105f388516b83fcb68f7c006c5d9d685bc8ad7fadcdfa56c0919efa79a6373","urls":["bzz-raw://3a8ab1264895b4f5c8fd3aa18524016c4e88712a50e0a9935f421e13f3e09601","dweb:/ipfs/QmXyVe9k37fDFWmrfjYHisxmqnEynevYo88uVrnRAmYW6L"],"license":"UNLICENSED"},"src/IRouter.sol":{"keccak256":"0xdbae96165e93f374f6b0ab185c3ce61e5eed76cce317349eda4aab002f3998c7","urls":["bzz-raw://275140952f5612b545caf34e66af939a42a6156ddf9ae312192e9dd3010c8be2","dweb:/ipfs/QmZYtSdHt5GkL5GT4gqNsuoryZ1whB1AQfmSmoNCHhicQc"],"license":"UNLICENSED"},"src/IWrappedVara.sol":{"keccak256":"0xfc2f9955b1d8f74a98a087b490a03b86933c423eb58b840f1e3eb4cd58eac175","urls":["bzz-raw://5942f66657786636ddb832587404810bf65fc757e12ddaa07393a0b3f885840f","dweb:/ipfs/QmTEP15EF9zrA7bCj8cesNd8QyUPHM3XgtKJecCUjsA5Jf"],"license":"UNLICENSED"},"src/Router.sol":{"keccak256":"0x6d1ecf1d12375db23f5ab62e056db909ac6f9228c51290d6f07f02716bc6a8b1","urls":["bzz-raw://651fa324ba3f3d38ad586d00d1013dc6ea2c665aede89f219aa1fce2c78a0f7c","dweb:/ipfs/QmXChwu9A6exCac6UAgijYrc7PErYcoh9LKbzj7obWe6hf"],"license":"UNLICENSED"},"src/libraries/Gear.sol":{"keccak256":"0xa543913342b4408d07fe4d884280b5c1d2430e8386713e9b6e1a5924e3e2bfbc","urls":["bzz-raw://9e466d986795dab2d942984fcbf03e8e8995cd17e4221f1dfca715af091d03ec","dweb:/ipfs/QmWo16RoqKERSYornA8qPqL32rYveeEHxiHmDHongS6uzy"],"license":"UNLICENSED"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"src/Router.sol","id":76828,"exportedSymbols":{"Clones":[41840],"Gear":[77378],"IERC20":[43140],"IERC20Metadata":[43166],"IMirror":[73603],"IRouter":[73896],"IWrappedVara":[73907],"OwnableUpgradeable":[39387],"ReentrancyGuardTransient":[44045],"Router":[76827],"StorageSlot":[44581]},"nodeType":"SourceUnit","src":"39:16155:159","nodes":[{"id":75261,"nodeType":"PragmaDirective","src":"39:24:159","nodes":[],"literals":["solidity","^","0.8",".26"]},{"id":75263,"nodeType":"ImportDirective","src":"65:74:159","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol","file":"@openzeppelin/contracts/utils/StorageSlot.sol","nameLocation":"-1:-1:-1","scope":76828,"sourceUnit":44582,"symbolAliases":[{"foreign":{"id":75262,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44581,"src":"73:11:159","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75265,"nodeType":"ImportDirective","src":"140:101:159","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":76828,"sourceUnit":39388,"symbolAliases":[{"foreign":{"id":75264,"name":"OwnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39387,"src":"148:18:159","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75267,"nodeType":"ImportDirective","src":"242:64:159","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/Clones.sol","file":"@openzeppelin/contracts/proxy/Clones.sol","nameLocation":"-1:-1:-1","scope":76828,"sourceUnit":41841,"symbolAliases":[{"foreign":{"id":75266,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41840,"src":"250:6:159","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75269,"nodeType":"ImportDirective","src":"307:100:159","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuardTransient.sol","file":"@openzeppelin/contracts/utils/ReentrancyGuardTransient.sol","nameLocation":"-1:-1:-1","scope":76828,"sourceUnit":44046,"symbolAliases":[{"foreign":{"id":75268,"name":"ReentrancyGuardTransient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44045,"src":"315:24:159","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75271,"nodeType":"ImportDirective","src":"408:38:159","nodes":[],"absolutePath":"src/IRouter.sol","file":"./IRouter.sol","nameLocation":"-1:-1:-1","scope":76828,"sourceUnit":73897,"symbolAliases":[{"foreign":{"id":75270,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73896,"src":"416:7:159","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75273,"nodeType":"ImportDirective","src":"447:38:159","nodes":[],"absolutePath":"src/IMirror.sol","file":"./IMirror.sol","nameLocation":"-1:-1:-1","scope":76828,"sourceUnit":73604,"symbolAliases":[{"foreign":{"id":75272,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73603,"src":"455:7:159","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75275,"nodeType":"ImportDirective","src":"486:48:159","nodes":[],"absolutePath":"src/IWrappedVara.sol","file":"./IWrappedVara.sol","nameLocation":"-1:-1:-1","scope":76828,"sourceUnit":73908,"symbolAliases":[{"foreign":{"id":75274,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73907,"src":"494:12:159","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75277,"nodeType":"ImportDirective","src":"535:70:159","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","nameLocation":"-1:-1:-1","scope":76828,"sourceUnit":43141,"symbolAliases":[{"foreign":{"id":75276,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43140,"src":"543:6:159","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75279,"nodeType":"ImportDirective","src":"606:97:159","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","nameLocation":"-1:-1:-1","scope":76828,"sourceUnit":43167,"symbolAliases":[{"foreign":{"id":75278,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43166,"src":"614:14:159","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75281,"nodeType":"ImportDirective","src":"704:42:159","nodes":[],"absolutePath":"src/libraries/Gear.sol","file":"./libraries/Gear.sol","nameLocation":"-1:-1:-1","scope":76828,"sourceUnit":77379,"symbolAliases":[{"foreign":{"id":75280,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77378,"src":"712:4:159","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":76827,"nodeType":"ContractDefinition","src":"748:15445:159","nodes":[{"id":75290,"nodeType":"VariableDeclaration","src":"929:106:159","nodes":[],"constant":true,"mutability":"constant","name":"SLOT_STORAGE","nameLocation":"954:12:159","scope":76827,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75288,"name":"bytes32","nodeType":"ElementaryTypeName","src":"929:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307835633039636131623962383132376134666439663363333834616163353962363631343431653832306531373733333735336666356632653836653165303030","id":75289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"969:66:159","typeDescriptions":{"typeIdentifier":"t_rational_41630078590300661333111585883568696735413380457407274925697692750148467286016_by_1","typeString":"int_const 4163...(69 digits omitted)...6016"},"value":"0x5c09ca1b9b8127a4fd9f3c384aac59b661441e820e17733753ff5f2e86e1e000"},"visibility":"private"},{"id":75298,"nodeType":"FunctionDefinition","src":"1095:53:159","nodes":[],"body":{"id":75297,"nodeType":"Block","src":"1109:39:159","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75294,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39609,"src":"1119:20:159","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":75295,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1119:22:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75296,"nodeType":"ExpressionStatement","src":"1119:22:159"}]},"documentation":{"id":75291,"nodeType":"StructuredDocumentation","src":"1042:48:159","text":"@custom:oz-upgrades-unsafe-allow constructor"},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":75292,"nodeType":"ParameterList","parameters":[],"src":"1106:2:159"},"returnParameters":{"id":75293,"nodeType":"ParameterList","parameters":[],"src":"1109:0:159"},"scope":76827,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":75370,"nodeType":"FunctionDefinition","src":"1154:677:159","nodes":[],"body":{"id":75369,"nodeType":"Block","src":"1348:483:159","nodes":[],"statements":[{"expression":{"arguments":[{"id":75315,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75300,"src":"1373:6:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":75314,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39247,"src":"1358:14:159","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":75316,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1358:22:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75317,"nodeType":"ExpressionStatement","src":"1358:22:159"},{"expression":{"arguments":[{"hexValue":"726f757465722e73746f726167652e526f757465725631","id":75319,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1407:25:159","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":75318,"name":"_setStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76826,"src":"1391:15:159","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":75320,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1391:42:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75321,"nodeType":"ExpressionStatement","src":"1391:42:159"},{"assignments":[75324],"declarations":[{"constant":false,"id":75324,"mutability":"mutable","name":"router","nameLocation":"1459:6:159","nodeType":"VariableDeclaration","scope":75369,"src":"1443:22:159","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":75323,"nodeType":"UserDefinedTypeName","pathNode":{"id":75322,"name":"Storage","nameLocations":["1443:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73677,"src":"1443:7:159"},"referencedDeclaration":73677,"src":"1443:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":75327,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":75325,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76769,"src":"1468:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73677_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1468:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"1443:34:159"},{"expression":{"id":75334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75328,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75324,"src":"1488:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75330,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1495:12:159","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":73656,"src":"1488:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$77003_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":75331,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77378,"src":"1510:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77378_$","typeString":"type(library Gear)"}},"id":75332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1515:10:159","memberName":"newGenesis","nodeType":"MemberAccess","referencedDeclaration":77223,"src":"1510:15:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_GenesisBlockInfo_$77003_memory_ptr_$","typeString":"function () view returns (struct Gear.GenesisBlockInfo memory)"}},"id":75333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1510:17:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$77003_memory_ptr","typeString":"struct Gear.GenesisBlockInfo memory"}},"src":"1488:39:159","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$77003_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":75335,"nodeType":"ExpressionStatement","src":"1488:39:159"},{"expression":{"id":75345,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75336,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75324,"src":"1537:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75338,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1544:13:159","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":73664,"src":"1537:20:159","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$76964_storage","typeString":"struct Gear.AddressBook storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":75341,"name":"_mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75302,"src":"1577:7:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":75342,"name":"_mirrorProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75304,"src":"1586:12:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":75343,"name":"_wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75306,"src":"1600:12:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":75339,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77378,"src":"1560:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77378_$","typeString":"type(library Gear)"}},"id":75340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1565:11:159","memberName":"AddressBook","nodeType":"MemberAccess","referencedDeclaration":76964,"src":"1560:16:159","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_AddressBook_$76964_storage_ptr_$","typeString":"type(struct Gear.AddressBook storage pointer)"}},"id":75344,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1560:53:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$76964_memory_ptr","typeString":"struct Gear.AddressBook memory"}},"src":"1537:76:159","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$76964_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":75346,"nodeType":"ExpressionStatement","src":"1537:76:159"},{"expression":{"id":75354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":75347,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75324,"src":"1623:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75350,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1630:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73668,"src":"1623:25:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$77061_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":75351,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1649:26:159","memberName":"signingThresholdPercentage","nodeType":"MemberAccess","referencedDeclaration":77053,"src":"1623:52:159","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75352,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77378,"src":"1678:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77378_$","typeString":"type(library Gear)"}},"id":75353,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1683:28:159","memberName":"SIGNING_THRESHOLD_PERCENTAGE","nodeType":"MemberAccess","referencedDeclaration":76954,"src":"1678:33:159","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"1623:88:159","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":75355,"nodeType":"ExpressionStatement","src":"1623:88:159"},{"expression":{"arguments":[{"id":75357,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75324,"src":"1736:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"id":75358,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75309,"src":"1744:11:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"id":75356,"name":"_setValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76718,"src":"1721:14:159","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Storage_$73677_storage_ptr_$_t_array$_t_address_$dyn_memory_ptr_$returns$__$","typeString":"function (struct IRouter.Storage storage pointer,address[] memory)"}},"id":75359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1721:35:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75360,"nodeType":"ExpressionStatement","src":"1721:35:159"},{"expression":{"id":75367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75361,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75324,"src":"1766:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75363,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1773:15:159","memberName":"computeSettings","nodeType":"MemberAccess","referencedDeclaration":73672,"src":"1766:22:159","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$76996_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":75364,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77378,"src":"1791:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77378_$","typeString":"type(library Gear)"}},"id":75365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1796:26:159","memberName":"defaultComputationSettings","nodeType":"MemberAccess","referencedDeclaration":77170,"src":"1791:31:159","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ComputationSettings_$76996_memory_ptr_$","typeString":"function () pure returns (struct Gear.ComputationSettings memory)"}},"id":75366,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1791:33:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$76996_memory_ptr","typeString":"struct Gear.ComputationSettings memory"}},"src":"1766:58:159","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$76996_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"id":75368,"nodeType":"ExpressionStatement","src":"1766:58:159"}]},"functionSelector":"f8453e7c","implemented":true,"kind":"function","modifiers":[{"id":75312,"kind":"modifierInvocation","modifierName":{"id":75311,"name":"initializer","nameLocations":["1336:11:159"],"nodeType":"IdentifierPath","referencedDeclaration":39495,"src":"1336:11:159"},"nodeType":"ModifierInvocation","src":"1336:11:159"}],"name":"initialize","nameLocation":"1163:10:159","parameters":{"id":75310,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75300,"mutability":"mutable","name":"_owner","nameLocation":"1191:6:159","nodeType":"VariableDeclaration","scope":75370,"src":"1183:14:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75299,"name":"address","nodeType":"ElementaryTypeName","src":"1183:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":75302,"mutability":"mutable","name":"_mirror","nameLocation":"1215:7:159","nodeType":"VariableDeclaration","scope":75370,"src":"1207:15:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75301,"name":"address","nodeType":"ElementaryTypeName","src":"1207:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":75304,"mutability":"mutable","name":"_mirrorProxy","nameLocation":"1240:12:159","nodeType":"VariableDeclaration","scope":75370,"src":"1232:20:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75303,"name":"address","nodeType":"ElementaryTypeName","src":"1232:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":75306,"mutability":"mutable","name":"_wrappedVara","nameLocation":"1270:12:159","nodeType":"VariableDeclaration","scope":75370,"src":"1262:20:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75305,"name":"address","nodeType":"ElementaryTypeName","src":"1262:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":75309,"mutability":"mutable","name":"_validators","nameLocation":"1311:11:159","nodeType":"VariableDeclaration","scope":75370,"src":"1292:30:159","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":75307,"name":"address","nodeType":"ElementaryTypeName","src":"1292:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":75308,"nodeType":"ArrayTypeName","src":"1292:9:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"1173:155:159"},"returnParameters":{"id":75313,"nodeType":"ParameterList","parameters":[],"src":"1348:0:159"},"scope":76827,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":75434,"nodeType":"FunctionDefinition","src":"1837:600:159","nodes":[],"body":{"id":75433,"nodeType":"Block","src":"1895:542:159","nodes":[],"statements":[{"assignments":[75380],"declarations":[{"constant":false,"id":75380,"mutability":"mutable","name":"oldRouter","nameLocation":"1921:9:159","nodeType":"VariableDeclaration","scope":75433,"src":"1905:25:159","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":75379,"nodeType":"UserDefinedTypeName","pathNode":{"id":75378,"name":"Storage","nameLocations":["1905:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73677,"src":"1905:7:159"},"referencedDeclaration":73677,"src":"1905:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":75383,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":75381,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76769,"src":"1933:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73677_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75382,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1933:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"1905:37:159"},{"expression":{"arguments":[{"hexValue":"726f757465722e73746f726167652e526f757465725632","id":75385,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1969:25:159","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":75384,"name":"_setStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76826,"src":"1953:15:159","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":75386,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1953:42:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75387,"nodeType":"ExpressionStatement","src":"1953:42:159"},{"assignments":[75390],"declarations":[{"constant":false,"id":75390,"mutability":"mutable","name":"newRouter","nameLocation":"2021:9:159","nodeType":"VariableDeclaration","scope":75433,"src":"2005:25:159","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":75389,"nodeType":"UserDefinedTypeName","pathNode":{"id":75388,"name":"Storage","nameLocations":["2005:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73677,"src":"2005:7:159"},"referencedDeclaration":73677,"src":"2005:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":75393,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":75391,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76769,"src":"2033:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73677_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75392,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2033:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2005:37:159"},{"expression":{"id":75400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75394,"name":"newRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75390,"src":"2053:9:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75396,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2063:12:159","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":73656,"src":"2053:22:159","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$77003_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":75397,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77378,"src":"2078:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77378_$","typeString":"type(library Gear)"}},"id":75398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2083:10:159","memberName":"newGenesis","nodeType":"MemberAccess","referencedDeclaration":77223,"src":"2078:15:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_GenesisBlockInfo_$77003_memory_ptr_$","typeString":"function () view returns (struct Gear.GenesisBlockInfo memory)"}},"id":75399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2078:17:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$77003_memory_ptr","typeString":"struct Gear.GenesisBlockInfo memory"}},"src":"2053:42:159","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$77003_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":75401,"nodeType":"ExpressionStatement","src":"2053:42:159"},{"expression":{"id":75407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75402,"name":"newRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75390,"src":"2105:9:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75404,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2115:13:159","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":73664,"src":"2105:23:159","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$76964_storage","typeString":"struct Gear.AddressBook storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75405,"name":"oldRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75380,"src":"2131:9:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75406,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2141:13:159","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":73664,"src":"2131:23:159","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$76964_storage","typeString":"struct Gear.AddressBook storage ref"}},"src":"2105:49:159","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$76964_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":75408,"nodeType":"ExpressionStatement","src":"2105:49:159"},{"expression":{"id":75417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":75409,"name":"newRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75390,"src":"2165:9:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75412,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2175:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73668,"src":"2165:28:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$77061_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":75413,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2194:26:159","memberName":"signingThresholdPercentage","nodeType":"MemberAccess","referencedDeclaration":77053,"src":"2165:55:159","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":75414,"name":"oldRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75380,"src":"2235:9:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75415,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2245:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73668,"src":"2235:28:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$77061_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":75416,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2264:26:159","memberName":"signingThresholdPercentage","nodeType":"MemberAccess","referencedDeclaration":77053,"src":"2235:55:159","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"2165:125:159","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":75418,"nodeType":"ExpressionStatement","src":"2165:125:159"},{"expression":{"arguments":[{"id":75420,"name":"newRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75390,"src":"2315:9:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"expression":{"expression":{"id":75421,"name":"oldRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75380,"src":"2326:9:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75422,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2336:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73668,"src":"2326:28:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$77061_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":75423,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2355:10:159","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":77056,"src":"2326:39:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"id":75419,"name":"_setValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76718,"src":"2300:14:159","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Storage_$73677_storage_ptr_$_t_array$_t_address_$dyn_memory_ptr_$returns$__$","typeString":"function (struct IRouter.Storage storage pointer,address[] memory)"}},"id":75424,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2300:66:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75425,"nodeType":"ExpressionStatement","src":"2300:66:159"},{"expression":{"id":75431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75426,"name":"newRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75390,"src":"2377:9:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75428,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2387:15:159","memberName":"computeSettings","nodeType":"MemberAccess","referencedDeclaration":73672,"src":"2377:25:159","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$76996_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75429,"name":"oldRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75380,"src":"2405:9:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75430,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2415:15:159","memberName":"computeSettings","nodeType":"MemberAccess","referencedDeclaration":73672,"src":"2405:25:159","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$76996_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"src":"2377:53:159","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$76996_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"id":75432,"nodeType":"ExpressionStatement","src":"2377:53:159"}]},"functionSelector":"6c2eb350","implemented":true,"kind":"function","modifiers":[{"id":75373,"kind":"modifierInvocation","modifierName":{"id":75372,"name":"onlyOwner","nameLocations":["1868:9:159"],"nodeType":"IdentifierPath","referencedDeclaration":39282,"src":"1868:9:159"},"nodeType":"ModifierInvocation","src":"1868:9:159"},{"arguments":[{"hexValue":"32","id":75375,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1892:1:159","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"id":75376,"kind":"modifierInvocation","modifierName":{"id":75374,"name":"reinitializer","nameLocations":["1878:13:159"],"nodeType":"IdentifierPath","referencedDeclaration":39542,"src":"1878:13:159"},"nodeType":"ModifierInvocation","src":"1878:16:159"}],"name":"reinitialize","nameLocation":"1846:12:159","parameters":{"id":75371,"nodeType":"ParameterList","parameters":[],"src":"1858:2:159"},"returnParameters":{"id":75377,"nodeType":"ParameterList","parameters":[],"src":"1895:0:159"},"scope":76827,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":75445,"nodeType":"FunctionDefinition","src":"2459:109:159","nodes":[],"body":{"id":75444,"nodeType":"Block","src":"2517:51:159","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75439,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76769,"src":"2534:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73677_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75440,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2534:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75441,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2544:12:159","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":73656,"src":"2534:22:159","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$77003_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":75442,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2557:4:159","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":76998,"src":"2534:27:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":75438,"id":75443,"nodeType":"Return","src":"2527:34:159"}]},"baseFunctions":[73721],"functionSelector":"28e24b3d","implemented":true,"kind":"function","modifiers":[],"name":"genesisBlockHash","nameLocation":"2468:16:159","parameters":{"id":75435,"nodeType":"ParameterList","parameters":[],"src":"2484:2:159"},"returnParameters":{"id":75438,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75437,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75445,"src":"2508:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75436,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2508:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2507:9:159"},"scope":76827,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75456,"nodeType":"FunctionDefinition","src":"2574:125:159","nodes":[],"body":{"id":75455,"nodeType":"Block","src":"2640:59:159","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75450,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76769,"src":"2657:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73677_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2657:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75452,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2667:20:159","memberName":"latestCommittedBlock","nodeType":"MemberAccess","referencedDeclaration":73660,"src":"2657:30:159","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBlockInfo_$76991_storage","typeString":"struct Gear.CommittedBlockInfo storage ref"}},"id":75453,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2688:4:159","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":76988,"src":"2657:35:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":75449,"id":75454,"nodeType":"Return","src":"2650:42:159"}]},"baseFunctions":[73726],"functionSelector":"c9f16a11","implemented":true,"kind":"function","modifiers":[],"name":"latestCommittedBlockHash","nameLocation":"2583:24:159","parameters":{"id":75446,"nodeType":"ParameterList","parameters":[],"src":"2607:2:159"},"returnParameters":{"id":75449,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75448,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75456,"src":"2631:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75447,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2631:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2630:9:159"},"scope":76827,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75467,"nodeType":"FunctionDefinition","src":"2705:106:159","nodes":[],"body":{"id":75466,"nodeType":"Block","src":"2757:54:159","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75461,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76769,"src":"2774:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73677_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75462,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2774:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75463,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2784:13:159","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":73664,"src":"2774:23:159","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$76964_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":75464,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2798:6:159","memberName":"mirror","nodeType":"MemberAccess","referencedDeclaration":76959,"src":"2774:30:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":75460,"id":75465,"nodeType":"Return","src":"2767:37:159"}]},"baseFunctions":[73731],"functionSelector":"e6fabc09","implemented":true,"kind":"function","modifiers":[],"name":"mirrorImpl","nameLocation":"2714:10:159","parameters":{"id":75457,"nodeType":"ParameterList","parameters":[],"src":"2724:2:159"},"returnParameters":{"id":75460,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75459,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75467,"src":"2748:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75458,"name":"address","nodeType":"ElementaryTypeName","src":"2748:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2747:9:159"},"scope":76827,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75478,"nodeType":"FunctionDefinition","src":"2817:116:159","nodes":[],"body":{"id":75477,"nodeType":"Block","src":"2874:59:159","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75472,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76769,"src":"2891:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73677_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75473,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2891:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75474,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2901:13:159","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":73664,"src":"2891:23:159","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$76964_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":75475,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2915:11:159","memberName":"mirrorProxy","nodeType":"MemberAccess","referencedDeclaration":76961,"src":"2891:35:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":75471,"id":75476,"nodeType":"Return","src":"2884:42:159"}]},"baseFunctions":[73736],"functionSelector":"65ecfea2","implemented":true,"kind":"function","modifiers":[],"name":"mirrorProxyImpl","nameLocation":"2826:15:159","parameters":{"id":75468,"nodeType":"ParameterList","parameters":[],"src":"2841:2:159"},"returnParameters":{"id":75471,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75470,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75478,"src":"2865:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75469,"name":"address","nodeType":"ElementaryTypeName","src":"2865:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2864:9:159"},"scope":76827,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75489,"nodeType":"FunctionDefinition","src":"2939:112:159","nodes":[],"body":{"id":75488,"nodeType":"Block","src":"2992:59:159","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75483,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76769,"src":"3009:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73677_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75484,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3009:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75485,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3019:13:159","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":73664,"src":"3009:23:159","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$76964_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":75486,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3033:11:159","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":76963,"src":"3009:35:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":75482,"id":75487,"nodeType":"Return","src":"3002:42:159"}]},"baseFunctions":[73741],"functionSelector":"88f50cf0","implemented":true,"kind":"function","modifiers":[],"name":"wrappedVara","nameLocation":"2948:11:159","parameters":{"id":75479,"nodeType":"ParameterList","parameters":[],"src":"2959:2:159"},"returnParameters":{"id":75482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75481,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75489,"src":"2983:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75480,"name":"address","nodeType":"ElementaryTypeName","src":"2983:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2982:9:159"},"scope":76827,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75531,"nodeType":"FunctionDefinition","src":"3057:348:159","nodes":[],"body":{"id":75530,"nodeType":"Block","src":"3139:266:159","nodes":[],"statements":[{"assignments":[75499],"declarations":[{"constant":false,"id":75499,"mutability":"mutable","name":"router","nameLocation":"3165:6:159","nodeType":"VariableDeclaration","scope":75530,"src":"3149:22:159","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":75498,"nodeType":"UserDefinedTypeName","pathNode":{"id":75497,"name":"Storage","nameLocations":["3149:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73677,"src":"3149:7:159"},"referencedDeclaration":73677,"src":"3149:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":75502,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":75500,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76769,"src":"3174:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73677_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3174:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3149:34:159"},{"body":{"id":75526,"nodeType":"Block","src":"3243:134:159","statements":[{"condition":{"id":75521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3261:59:159","subExpression":{"baseExpression":{"expression":{"expression":{"id":75514,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75499,"src":"3262:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75515,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3269:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73668,"src":"3262:25:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$77061_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":75516,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3288:16:159","memberName":"validatorsKeyMap","nodeType":"MemberAccess","referencedDeclaration":77060,"src":"3262:42:159","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":75520,"indexExpression":{"baseExpression":{"id":75517,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75492,"src":"3305:11:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":75519,"indexExpression":{"id":75518,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75504,"src":"3317:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3305:14:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3262:58:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75525,"nodeType":"IfStatement","src":"3257:110:159","trueBody":{"id":75524,"nodeType":"Block","src":"3322:45:159","statements":[{"expression":{"hexValue":"66616c7365","id":75522,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3347:5:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":75496,"id":75523,"nodeType":"Return","src":"3340:12:159"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75507,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75504,"src":"3214:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":75508,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75492,"src":"3218:11:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":75509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3230:6:159","memberName":"length","nodeType":"MemberAccess","src":"3218:18:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3214:22:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75527,"initializationExpression":{"assignments":[75504],"declarations":[{"constant":false,"id":75504,"mutability":"mutable","name":"i","nameLocation":"3207:1:159","nodeType":"VariableDeclaration","scope":75527,"src":"3199:9:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75503,"name":"uint256","nodeType":"ElementaryTypeName","src":"3199:7:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":75506,"initialValue":{"hexValue":"30","id":75505,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3211:1:159","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"3199:13:159"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":75512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3238:3:159","subExpression":{"id":75511,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75504,"src":"3238:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":75513,"nodeType":"ExpressionStatement","src":"3238:3:159"},"nodeType":"ForStatement","src":"3194:183:159"},{"expression":{"hexValue":"74727565","id":75528,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3394:4:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":75496,"id":75529,"nodeType":"Return","src":"3387:11:159"}]},"baseFunctions":[73749],"functionSelector":"8f381dbe","implemented":true,"kind":"function","modifiers":[],"name":"areValidators","nameLocation":"3066:13:159","parameters":{"id":75493,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75492,"mutability":"mutable","name":"_validators","nameLocation":"3099:11:159","nodeType":"VariableDeclaration","scope":75531,"src":"3080:30:159","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":75490,"name":"address","nodeType":"ElementaryTypeName","src":"3080:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":75491,"nodeType":"ArrayTypeName","src":"3080:9:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"3079:32:159"},"returnParameters":{"id":75496,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75495,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75531,"src":"3133:4:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":75494,"name":"bool","nodeType":"ElementaryTypeName","src":"3133:4:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3132:6:159"},"scope":76827,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75546,"nodeType":"FunctionDefinition","src":"3411:149:159","nodes":[],"body":{"id":75545,"nodeType":"Block","src":"3479:81:159","nodes":[],"statements":[{"expression":{"baseExpression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75538,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76769,"src":"3496:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73677_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75539,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3496:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75540,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3506:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73668,"src":"3496:28:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$77061_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":75541,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3525:16:159","memberName":"validatorsKeyMap","nodeType":"MemberAccess","referencedDeclaration":77060,"src":"3496:45:159","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":75543,"indexExpression":{"id":75542,"name":"_validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75533,"src":"3542:10:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3496:57:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":75537,"id":75544,"nodeType":"Return","src":"3489:64:159"}]},"baseFunctions":[73756],"functionSelector":"facd743b","implemented":true,"kind":"function","modifiers":[],"name":"isValidator","nameLocation":"3420:11:159","parameters":{"id":75534,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75533,"mutability":"mutable","name":"_validator","nameLocation":"3440:10:159","nodeType":"VariableDeclaration","scope":75546,"src":"3432:18:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75532,"name":"address","nodeType":"ElementaryTypeName","src":"3432:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3431:20:159"},"returnParameters":{"id":75537,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75536,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75546,"src":"3473:4:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":75535,"name":"bool","nodeType":"ElementaryTypeName","src":"3473:4:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3472:6:159"},"scope":76827,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75557,"nodeType":"FunctionDefinition","src":"3566:146:159","nodes":[],"body":{"id":75556,"nodeType":"Block","src":"3633:79:159","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75551,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76769,"src":"3650:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73677_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3650:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75553,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3660:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73668,"src":"3650:28:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$77061_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":75554,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3679:26:159","memberName":"signingThresholdPercentage","nodeType":"MemberAccess","referencedDeclaration":77053,"src":"3650:55:159","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"functionReturnParameters":75550,"id":75555,"nodeType":"Return","src":"3643:62:159"}]},"baseFunctions":[73761],"functionSelector":"efd81abc","implemented":true,"kind":"function","modifiers":[],"name":"signingThresholdPercentage","nameLocation":"3575:26:159","parameters":{"id":75547,"nodeType":"ParameterList","parameters":[],"src":"3601:2:159"},"returnParameters":{"id":75550,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75549,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75557,"src":"3625:6:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":75548,"name":"uint16","nodeType":"ElementaryTypeName","src":"3625:6:159","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"3624:8:159"},"scope":76827,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75569,"nodeType":"FunctionDefinition","src":"3718:124:159","nodes":[],"body":{"id":75568,"nodeType":"Block","src":"3779:63:159","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75563,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76769,"src":"3796:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73677_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3796:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75565,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3806:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73668,"src":"3796:28:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$77061_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":75566,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3825:10:159","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":77056,"src":"3796:39:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"functionReturnParameters":75562,"id":75567,"nodeType":"Return","src":"3789:46:159"}]},"baseFunctions":[73767],"functionSelector":"ca1e7819","implemented":true,"kind":"function","modifiers":[],"name":"validators","nameLocation":"3727:10:159","parameters":{"id":75558,"nodeType":"ParameterList","parameters":[],"src":"3737:2:159"},"returnParameters":{"id":75562,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75561,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75569,"src":"3761:16:159","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":75559,"name":"address","nodeType":"ElementaryTypeName","src":"3761:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":75560,"nodeType":"ArrayTypeName","src":"3761:9:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"3760:18:159"},"scope":76827,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75581,"nodeType":"FunctionDefinition","src":"3848:127:159","nodes":[],"body":{"id":75580,"nodeType":"Block","src":"3905:70:159","nodes":[],"statements":[{"expression":{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75574,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76769,"src":"3922:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73677_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75575,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3922:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75576,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3932:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73668,"src":"3922:28:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$77061_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":75577,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3951:10:159","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":77056,"src":"3922:39:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":75578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3962:6:159","memberName":"length","nodeType":"MemberAccess","src":"3922:46:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":75573,"id":75579,"nodeType":"Return","src":"3915:53:159"}]},"baseFunctions":[73772],"functionSelector":"ed612f8c","implemented":true,"kind":"function","modifiers":[],"name":"validatorsCount","nameLocation":"3857:15:159","parameters":{"id":75570,"nodeType":"ParameterList","parameters":[],"src":"3872:2:159"},"returnParameters":{"id":75573,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75572,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75581,"src":"3896:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75571,"name":"uint256","nodeType":"ElementaryTypeName","src":"3896:7:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3895:9:159"},"scope":76827,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75594,"nodeType":"FunctionDefinition","src":"3981:141:159","nodes":[],"body":{"id":75593,"nodeType":"Block","src":"4042:80:159","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75588,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76769,"src":"4086:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73677_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4086:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75590,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4096:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73668,"src":"4086:28:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$77061_storage","typeString":"struct Gear.ValidationSettings storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_ValidationSettings_$77061_storage","typeString":"struct Gear.ValidationSettings storage ref"}],"expression":{"id":75586,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77378,"src":"4059:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77378_$","typeString":"type(library Gear)"}},"id":75587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4064:21:159","memberName":"validatorsThresholdOf","nodeType":"MemberAccess","referencedDeclaration":77358,"src":"4059:26:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_ValidationSettings_$77061_storage_ptr_$returns$_t_uint256_$","typeString":"function (struct Gear.ValidationSettings storage pointer) view returns (uint256)"}},"id":75591,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4059:56:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":75585,"id":75592,"nodeType":"Return","src":"4052:63:159"}]},"baseFunctions":[73777],"functionSelector":"edc87225","implemented":true,"kind":"function","modifiers":[],"name":"validatorsThreshold","nameLocation":"3990:19:159","parameters":{"id":75582,"nodeType":"ParameterList","parameters":[],"src":"4009:2:159"},"returnParameters":{"id":75585,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75584,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75594,"src":"4033:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75583,"name":"uint256","nodeType":"ElementaryTypeName","src":"4033:7:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4032:9:159"},"scope":76827,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75605,"nodeType":"FunctionDefinition","src":"4128:130:159","nodes":[],"body":{"id":75604,"nodeType":"Block","src":"4209:49:159","nodes":[],"statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75600,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76769,"src":"4226:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73677_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75601,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4226:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75602,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4236:15:159","memberName":"computeSettings","nodeType":"MemberAccess","referencedDeclaration":73672,"src":"4226:25:159","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$76996_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"functionReturnParameters":75599,"id":75603,"nodeType":"Return","src":"4219:32:159"}]},"baseFunctions":[73783],"functionSelector":"84d22a4f","implemented":true,"kind":"function","modifiers":[],"name":"computeSettings","nameLocation":"4137:15:159","parameters":{"id":75595,"nodeType":"ParameterList","parameters":[],"src":"4152:2:159"},"returnParameters":{"id":75599,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75598,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75605,"src":"4176:31:159","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$76996_memory_ptr","typeString":"struct Gear.ComputationSettings"},"typeName":{"id":75597,"nodeType":"UserDefinedTypeName","pathNode":{"id":75596,"name":"Gear.ComputationSettings","nameLocations":["4176:4:159","4181:19:159"],"nodeType":"IdentifierPath","referencedDeclaration":76996,"src":"4176:24:159"},"referencedDeclaration":76996,"src":"4176:24:159","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$76996_storage_ptr","typeString":"struct Gear.ComputationSettings"}},"visibility":"internal"}],"src":"4175:33:159"},"scope":76827,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75621,"nodeType":"FunctionDefinition","src":"4264:134:159","nodes":[],"body":{"id":75620,"nodeType":"Block","src":"4337:61:159","nodes":[],"statements":[{"expression":{"baseExpression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75613,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76769,"src":"4354:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73677_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75614,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4354:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75615,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4364:12:159","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":73676,"src":"4354:22:159","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$77029_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":75616,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4377:5:159","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":77020,"src":"4354:28:159","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$76986_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":75618,"indexExpression":{"id":75617,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75607,"src":"4383:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4354:37:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76986","typeString":"enum Gear.CodeState"}},"functionReturnParameters":75612,"id":75619,"nodeType":"Return","src":"4347:44:159"}]},"baseFunctions":[73791],"functionSelector":"c13911e8","implemented":true,"kind":"function","modifiers":[],"name":"codeState","nameLocation":"4273:9:159","parameters":{"id":75608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75607,"mutability":"mutable","name":"_codeId","nameLocation":"4291:7:159","nodeType":"VariableDeclaration","scope":75621,"src":"4283:15:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75606,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4283:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4282:17:159"},"returnParameters":{"id":75612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75611,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75621,"src":"4321:14:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76986","typeString":"enum Gear.CodeState"},"typeName":{"id":75610,"nodeType":"UserDefinedTypeName","pathNode":{"id":75609,"name":"Gear.CodeState","nameLocations":["4321:4:159","4326:9:159"],"nodeType":"IdentifierPath","referencedDeclaration":76986,"src":"4321:14:159"},"referencedDeclaration":76986,"src":"4321:14:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76986","typeString":"enum Gear.CodeState"}},"visibility":"internal"}],"src":"4320:16:159"},"scope":76827,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75679,"nodeType":"FunctionDefinition","src":"4404:378:159","nodes":[],"body":{"id":75678,"nodeType":"Block","src":"4501:281:159","nodes":[],"statements":[{"assignments":[75633],"declarations":[{"constant":false,"id":75633,"mutability":"mutable","name":"router","nameLocation":"4527:6:159","nodeType":"VariableDeclaration","scope":75678,"src":"4511:22:159","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":75632,"nodeType":"UserDefinedTypeName","pathNode":{"id":75631,"name":"Storage","nameLocations":["4511:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73677,"src":"4511:7:159"},"referencedDeclaration":73677,"src":"4511:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":75636,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":75634,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76769,"src":"4536:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73677_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75635,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4536:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4511:34:159"},{"assignments":[75642],"declarations":[{"constant":false,"id":75642,"mutability":"mutable","name":"res","nameLocation":"4580:3:159","nodeType":"VariableDeclaration","scope":75678,"src":"4556:27:159","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$76986_$dyn_memory_ptr","typeString":"enum Gear.CodeState[]"},"typeName":{"baseType":{"id":75640,"nodeType":"UserDefinedTypeName","pathNode":{"id":75639,"name":"Gear.CodeState","nameLocations":["4556:4:159","4561:9:159"],"nodeType":"IdentifierPath","referencedDeclaration":76986,"src":"4556:14:159"},"referencedDeclaration":76986,"src":"4556:14:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76986","typeString":"enum Gear.CodeState"}},"id":75641,"nodeType":"ArrayTypeName","src":"4556:16:159","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$76986_$dyn_storage_ptr","typeString":"enum Gear.CodeState[]"}},"visibility":"internal"}],"id":75650,"initialValue":{"arguments":[{"expression":{"id":75647,"name":"_codesIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75624,"src":"4607:9:159","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}},"id":75648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4617:6:159","memberName":"length","nodeType":"MemberAccess","src":"4607:16:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":75646,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4586:20:159","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_enum$_CodeState_$76986_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (enum Gear.CodeState[] memory)"},"typeName":{"baseType":{"id":75644,"nodeType":"UserDefinedTypeName","pathNode":{"id":75643,"name":"Gear.CodeState","nameLocations":["4590:4:159","4595:9:159"],"nodeType":"IdentifierPath","referencedDeclaration":76986,"src":"4590:14:159"},"referencedDeclaration":76986,"src":"4590:14:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76986","typeString":"enum Gear.CodeState"}},"id":75645,"nodeType":"ArrayTypeName","src":"4590:16:159","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$76986_$dyn_storage_ptr","typeString":"enum Gear.CodeState[]"}}},"id":75649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4586:38:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$76986_$dyn_memory_ptr","typeString":"enum Gear.CodeState[] memory"}},"nodeType":"VariableDeclarationStatement","src":"4556:68:159"},{"body":{"id":75674,"nodeType":"Block","src":"4682:73:159","statements":[{"expression":{"id":75672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":75662,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75642,"src":"4696:3:159","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$76986_$dyn_memory_ptr","typeString":"enum Gear.CodeState[] memory"}},"id":75664,"indexExpression":{"id":75663,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75652,"src":"4700:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4696:6:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76986","typeString":"enum Gear.CodeState"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"expression":{"expression":{"id":75665,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75633,"src":"4705:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75666,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4712:12:159","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":73676,"src":"4705:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$77029_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":75667,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4725:5:159","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":77020,"src":"4705:25:159","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$76986_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":75671,"indexExpression":{"baseExpression":{"id":75668,"name":"_codesIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75624,"src":"4731:9:159","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}},"id":75670,"indexExpression":{"id":75669,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75652,"src":"4741:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4731:12:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4705:39:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76986","typeString":"enum Gear.CodeState"}},"src":"4696:48:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76986","typeString":"enum Gear.CodeState"}},"id":75673,"nodeType":"ExpressionStatement","src":"4696:48:159"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75655,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75652,"src":"4655:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":75656,"name":"_codesIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75624,"src":"4659:9:159","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}},"id":75657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4669:6:159","memberName":"length","nodeType":"MemberAccess","src":"4659:16:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4655:20:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75675,"initializationExpression":{"assignments":[75652],"declarations":[{"constant":false,"id":75652,"mutability":"mutable","name":"i","nameLocation":"4648:1:159","nodeType":"VariableDeclaration","scope":75675,"src":"4640:9:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75651,"name":"uint256","nodeType":"ElementaryTypeName","src":"4640:7:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":75654,"initialValue":{"hexValue":"30","id":75653,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4652:1:159","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4640:13:159"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":75660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4677:3:159","subExpression":{"id":75659,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75652,"src":"4677:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":75661,"nodeType":"ExpressionStatement","src":"4677:3:159"},"nodeType":"ForStatement","src":"4635:120:159"},{"expression":{"id":75676,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75642,"src":"4772:3:159","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$76986_$dyn_memory_ptr","typeString":"enum Gear.CodeState[] memory"}},"functionReturnParameters":75630,"id":75677,"nodeType":"Return","src":"4765:10:159"}]},"baseFunctions":[73801],"functionSelector":"82bdeaad","implemented":true,"kind":"function","modifiers":[],"name":"codesStates","nameLocation":"4413:11:159","parameters":{"id":75625,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75624,"mutability":"mutable","name":"_codesIds","nameLocation":"4444:9:159","nodeType":"VariableDeclaration","scope":75679,"src":"4425:28:159","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":75622,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4425:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":75623,"nodeType":"ArrayTypeName","src":"4425:9:159","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"4424:30:159"},"returnParameters":{"id":75630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75629,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75679,"src":"4476:23:159","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$76986_$dyn_memory_ptr","typeString":"enum Gear.CodeState[]"},"typeName":{"baseType":{"id":75627,"nodeType":"UserDefinedTypeName","pathNode":{"id":75626,"name":"Gear.CodeState","nameLocations":["4476:4:159","4481:9:159"],"nodeType":"IdentifierPath","referencedDeclaration":76986,"src":"4476:14:159"},"referencedDeclaration":76986,"src":"4476:14:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76986","typeString":"enum Gear.CodeState"}},"id":75628,"nodeType":"ArrayTypeName","src":"4476:16:159","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$76986_$dyn_storage_ptr","typeString":"enum Gear.CodeState[]"}},"visibility":"internal"}],"src":"4475:25:159"},"scope":76827,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75694,"nodeType":"FunctionDefinition","src":"4788:140:159","nodes":[],"body":{"id":75693,"nodeType":"Block","src":"4861:67:159","nodes":[],"statements":[{"expression":{"baseExpression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75686,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76769,"src":"4878:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73677_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4878:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75688,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4888:12:159","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":73676,"src":"4878:22:159","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$77029_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":75689,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4901:8:159","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":77024,"src":"4878:31:159","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":75691,"indexExpression":{"id":75690,"name":"_programId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75681,"src":"4910:10:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4878:43:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":75685,"id":75692,"nodeType":"Return","src":"4871:50:159"}]},"baseFunctions":[73808],"functionSelector":"9067088e","implemented":true,"kind":"function","modifiers":[],"name":"programCodeId","nameLocation":"4797:13:159","parameters":{"id":75682,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75681,"mutability":"mutable","name":"_programId","nameLocation":"4819:10:159","nodeType":"VariableDeclaration","scope":75694,"src":"4811:18:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75680,"name":"address","nodeType":"ElementaryTypeName","src":"4811:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4810:20:159"},"returnParameters":{"id":75685,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75684,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75694,"src":"4852:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75683,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4852:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4851:9:159"},"scope":76827,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75749,"nodeType":"FunctionDefinition","src":"4934:376:159","nodes":[],"body":{"id":75748,"nodeType":"Block","src":"5031:279:159","nodes":[],"statements":[{"assignments":[75705],"declarations":[{"constant":false,"id":75705,"mutability":"mutable","name":"router","nameLocation":"5057:6:159","nodeType":"VariableDeclaration","scope":75748,"src":"5041:22:159","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":75704,"nodeType":"UserDefinedTypeName","pathNode":{"id":75703,"name":"Storage","nameLocations":["5041:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73677,"src":"5041:7:159"},"referencedDeclaration":73677,"src":"5041:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":75708,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":75706,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76769,"src":"5066:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73677_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5066:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"5041:34:159"},{"assignments":[75713],"declarations":[{"constant":false,"id":75713,"mutability":"mutable","name":"res","nameLocation":"5103:3:159","nodeType":"VariableDeclaration","scope":75748,"src":"5086:20:159","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":75711,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5086:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":75712,"nodeType":"ArrayTypeName","src":"5086:9:159","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"id":75720,"initialValue":{"arguments":[{"expression":{"id":75717,"name":"_programsIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75697,"src":"5123:12:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":75718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5136:6:159","memberName":"length","nodeType":"MemberAccess","src":"5123:19:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":75716,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"5109:13:159","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (bytes32[] memory)"},"typeName":{"baseType":{"id":75714,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5113:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":75715,"nodeType":"ArrayTypeName","src":"5113:9:159","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}}},"id":75719,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5109:34:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"nodeType":"VariableDeclarationStatement","src":"5086:57:159"},{"body":{"id":75744,"nodeType":"Block","src":"5204:79:159","statements":[{"expression":{"id":75742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":75732,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75713,"src":"5218:3:159","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":75734,"indexExpression":{"id":75733,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75722,"src":"5222:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5218:6:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"expression":{"expression":{"id":75735,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75705,"src":"5227:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75736,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5234:12:159","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":73676,"src":"5227:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$77029_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":75737,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5247:8:159","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":77024,"src":"5227:28:159","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":75741,"indexExpression":{"baseExpression":{"id":75738,"name":"_programsIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75697,"src":"5256:12:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":75740,"indexExpression":{"id":75739,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75722,"src":"5269:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5256:15:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5227:45:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"5218:54:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":75743,"nodeType":"ExpressionStatement","src":"5218:54:159"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75725,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75722,"src":"5174:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":75726,"name":"_programsIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75697,"src":"5178:12:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":75727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5191:6:159","memberName":"length","nodeType":"MemberAccess","src":"5178:19:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5174:23:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75745,"initializationExpression":{"assignments":[75722],"declarations":[{"constant":false,"id":75722,"mutability":"mutable","name":"i","nameLocation":"5167:1:159","nodeType":"VariableDeclaration","scope":75745,"src":"5159:9:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75721,"name":"uint256","nodeType":"ElementaryTypeName","src":"5159:7:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":75724,"initialValue":{"hexValue":"30","id":75723,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5171:1:159","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5159:13:159"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":75730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5199:3:159","subExpression":{"id":75729,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75722,"src":"5199:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":75731,"nodeType":"ExpressionStatement","src":"5199:3:159"},"nodeType":"ForStatement","src":"5154:129:159"},{"expression":{"id":75746,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75713,"src":"5300:3:159","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"functionReturnParameters":75702,"id":75747,"nodeType":"Return","src":"5293:10:159"}]},"baseFunctions":[73817],"functionSelector":"baaf0201","implemented":true,"kind":"function","modifiers":[],"name":"programsCodeIds","nameLocation":"4943:15:159","parameters":{"id":75698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75697,"mutability":"mutable","name":"_programsIds","nameLocation":"4978:12:159","nodeType":"VariableDeclaration","scope":75749,"src":"4959:31:159","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":75695,"name":"address","nodeType":"ElementaryTypeName","src":"4959:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":75696,"nodeType":"ArrayTypeName","src":"4959:9:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"4958:33:159"},"returnParameters":{"id":75702,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75701,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75749,"src":"5013:16:159","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":75699,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5013:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":75700,"nodeType":"ArrayTypeName","src":"5013:9:159","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"5012:18:159"},"scope":76827,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75760,"nodeType":"FunctionDefinition","src":"5316:115:159","nodes":[],"body":{"id":75759,"nodeType":"Block","src":"5371:60:159","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75754,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76769,"src":"5388:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73677_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75755,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5388:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75756,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5398:12:159","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":73676,"src":"5388:22:159","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$77029_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":75757,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5411:13:159","memberName":"programsCount","nodeType":"MemberAccess","referencedDeclaration":77026,"src":"5388:36:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":75753,"id":75758,"nodeType":"Return","src":"5381:43:159"}]},"baseFunctions":[73822],"functionSelector":"96a2ddfa","implemented":true,"kind":"function","modifiers":[],"name":"programsCount","nameLocation":"5325:13:159","parameters":{"id":75750,"nodeType":"ParameterList","parameters":[],"src":"5338:2:159"},"returnParameters":{"id":75753,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75752,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75760,"src":"5362:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75751,"name":"uint256","nodeType":"ElementaryTypeName","src":"5362:7:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5361:9:159"},"scope":76827,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75771,"nodeType":"FunctionDefinition","src":"5437:127:159","nodes":[],"body":{"id":75770,"nodeType":"Block","src":"5498:66:159","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75765,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76769,"src":"5515:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73677_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75766,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5515:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75767,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5525:12:159","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":73676,"src":"5515:22:159","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$77029_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":75768,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5538:19:159","memberName":"validatedCodesCount","nodeType":"MemberAccess","referencedDeclaration":77028,"src":"5515:42:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":75764,"id":75769,"nodeType":"Return","src":"5508:49:159"}]},"baseFunctions":[73827],"functionSelector":"007a32e7","implemented":true,"kind":"function","modifiers":[],"name":"validatedCodesCount","nameLocation":"5446:19:159","parameters":{"id":75761,"nodeType":"ParameterList","parameters":[],"src":"5465:2:159"},"returnParameters":{"id":75764,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75763,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75771,"src":"5489:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75762,"name":"uint256","nodeType":"ElementaryTypeName","src":"5489:7:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5488:9:159"},"scope":76827,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75786,"nodeType":"FunctionDefinition","src":"5590:116:159","nodes":[],"body":{"id":75785,"nodeType":"Block","src":"5647:59:159","nodes":[],"statements":[{"expression":{"id":75783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75778,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76769,"src":"5657:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73677_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75779,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5657:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75780,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5667:13:159","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":73664,"src":"5657:23:159","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$76964_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":75781,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5681:6:159","memberName":"mirror","nodeType":"MemberAccess","referencedDeclaration":76959,"src":"5657:30:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":75782,"name":"newMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75773,"src":"5690:9:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5657:42:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":75784,"nodeType":"ExpressionStatement","src":"5657:42:159"}]},"baseFunctions":[73832],"functionSelector":"3d43b418","implemented":true,"kind":"function","modifiers":[{"id":75776,"kind":"modifierInvocation","modifierName":{"id":75775,"name":"onlyOwner","nameLocations":["5637:9:159"],"nodeType":"IdentifierPath","referencedDeclaration":39282,"src":"5637:9:159"},"nodeType":"ModifierInvocation","src":"5637:9:159"}],"name":"setMirror","nameLocation":"5599:9:159","parameters":{"id":75774,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75773,"mutability":"mutable","name":"newMirror","nameLocation":"5617:9:159","nodeType":"VariableDeclaration","scope":75786,"src":"5609:17:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75772,"name":"address","nodeType":"ElementaryTypeName","src":"5609:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5608:19:159"},"returnParameters":{"id":75777,"nodeType":"ParameterList","parameters":[],"src":"5647:0:159"},"scope":76827,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":75838,"nodeType":"FunctionDefinition","src":"5728:398:159","nodes":[],"body":{"id":75837,"nodeType":"Block","src":"5766:360:159","nodes":[],"statements":[{"assignments":[75791],"declarations":[{"constant":false,"id":75791,"mutability":"mutable","name":"router","nameLocation":"5792:6:159","nodeType":"VariableDeclaration","scope":75837,"src":"5776:22:159","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":75790,"nodeType":"UserDefinedTypeName","pathNode":{"id":75789,"name":"Storage","nameLocations":["5776:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73677,"src":"5776:7:159"},"referencedDeclaration":73677,"src":"5776:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":75794,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":75792,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76769,"src":"5801:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73677_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75793,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5801:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"5776:34:159"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":75803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":75796,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75791,"src":"5829:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75797,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5836:12:159","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":73656,"src":"5829:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$77003_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":75798,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5849:4:159","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":76998,"src":"5829:24:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":75801,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5865:1:159","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":75800,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5857:7:159","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":75799,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5857:7:159","typeDescriptions":{}}},"id":75802,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5857:10:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"5829:38:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"67656e65736973206861736820616c726561647920736574","id":75804,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5869:26:159","typeDescriptions":{"typeIdentifier":"t_stringliteral_5ec654a5a6e0b043639db348d1557e0acfcdb8bbf2c9de24c4983866c0ccfa21","typeString":"literal_string \"genesis hash already set\""},"value":"genesis hash already set"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5ec654a5a6e0b043639db348d1557e0acfcdb8bbf2c9de24c4983866c0ccfa21","typeString":"literal_string \"genesis hash already set\""}],"id":75795,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"5821:7:159","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":75805,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5821:75:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75806,"nodeType":"ExpressionStatement","src":"5821:75:159"},{"assignments":[75808],"declarations":[{"constant":false,"id":75808,"mutability":"mutable","name":"genesisHash","nameLocation":"5915:11:159","nodeType":"VariableDeclaration","scope":75837,"src":"5907:19:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75807,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5907:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":75814,"initialValue":{"arguments":[{"expression":{"expression":{"id":75810,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75791,"src":"5939:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75811,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5946:12:159","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":73656,"src":"5939:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$77003_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":75812,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5959:6:159","memberName":"number","nodeType":"MemberAccess","referencedDeclaration":77000,"src":"5939:26:159","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":75809,"name":"blockhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-5,"src":"5929:9:159","typeDescriptions":{"typeIdentifier":"t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":75813,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5929:37:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"5907:59:159"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":75821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75816,"name":"genesisHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75808,"src":"5985:11:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":75819,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6008:1:159","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":75818,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6000:7:159","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":75817,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6000:7:159","typeDescriptions":{}}},"id":75820,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6000:10:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"5985:25:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"756e61626c6520746f206c6f6f6b75702067656e657369732068617368","id":75822,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6012:31:159","typeDescriptions":{"typeIdentifier":"t_stringliteral_983585e130902c48e8b21c3e7ab53cd0d7f3ffc3109244b201330c039df8ce4e","typeString":"literal_string \"unable to lookup genesis hash\""},"value":"unable to lookup genesis hash"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_983585e130902c48e8b21c3e7ab53cd0d7f3ffc3109244b201330c039df8ce4e","typeString":"literal_string \"unable to lookup genesis hash\""}],"id":75815,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"5977:7:159","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":75823,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5977:67:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75824,"nodeType":"ExpressionStatement","src":"5977:67:159"},{"expression":{"id":75835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":75825,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75791,"src":"6055:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75828,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6062:12:159","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":73656,"src":"6055:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$77003_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":75829,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6075:4:159","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":76998,"src":"6055:24:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"expression":{"id":75831,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75791,"src":"6092:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75832,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6099:12:159","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":73656,"src":"6092:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$77003_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":75833,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6112:6:159","memberName":"number","nodeType":"MemberAccess","referencedDeclaration":77000,"src":"6092:26:159","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":75830,"name":"blockhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-5,"src":"6082:9:159","typeDescriptions":{"typeIdentifier":"t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":75834,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6082:37:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"6055:64:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":75836,"nodeType":"ExpressionStatement","src":"6055:64:159"}]},"baseFunctions":[73835],"functionSelector":"8b1edf1e","implemented":true,"kind":"function","modifiers":[],"name":"lookupGenesisHash","nameLocation":"5737:17:159","parameters":{"id":75787,"nodeType":"ParameterList","parameters":[],"src":"5754:2:159"},"returnParameters":{"id":75788,"nodeType":"ParameterList","parameters":[],"src":"5766:0:159"},"scope":76827,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":75907,"nodeType":"FunctionDefinition","src":"6132:637:159","nodes":[],"body":{"id":75906,"nodeType":"Block","src":"6210:559:159","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":75854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":75848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75846,"name":"_blobTxHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75842,"src":"6228:11:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":75847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6243:1:159","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6228:16:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":75853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"hexValue":"30","id":75850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6257:1:159","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":75849,"name":"blobhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-29,"src":"6248:8:159","typeDescriptions":{"typeIdentifier":"t_function_blobhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":75851,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6248:11:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":75852,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6263:1:159","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6248:16:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6228:36:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"626c6f622063616e277420626520666f756e64","id":75855,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6266:21:159","typeDescriptions":{"typeIdentifier":"t_stringliteral_50f679c075644435e0dfad2beb36f786441d5cb0c0dd08ea9c9aa80169c123d2","typeString":"literal_string \"blob can't be found\""},"value":"blob can't be found"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_50f679c075644435e0dfad2beb36f786441d5cb0c0dd08ea9c9aa80169c123d2","typeString":"literal_string \"blob can't be found\""}],"id":75845,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"6220:7:159","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":75856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6220:68:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75857,"nodeType":"ExpressionStatement","src":"6220:68:159"},{"assignments":[75860],"declarations":[{"constant":false,"id":75860,"mutability":"mutable","name":"router","nameLocation":"6315:6:159","nodeType":"VariableDeclaration","scope":75906,"src":"6299:22:159","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":75859,"nodeType":"UserDefinedTypeName","pathNode":{"id":75858,"name":"Storage","nameLocations":["6299:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73677,"src":"6299:7:159"},"referencedDeclaration":73677,"src":"6299:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":75863,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":75861,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76769,"src":"6324:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73677_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6324:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6299:34:159"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":75872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":75865,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75860,"src":"6351:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75866,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6358:12:159","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":73656,"src":"6351:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$77003_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":75867,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6371:4:159","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":76998,"src":"6351:24:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":75870,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6387:1:159","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":75869,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6379:7:159","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":75868,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6379:7:159","typeDescriptions":{}}},"id":75871,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6379:10:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"6351:38:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"726f757465722067656e65736973206973207a65726f3b2063616c6c20606c6f6f6b757047656e6573697348617368282960206669727374","id":75873,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6391:58:159","typeDescriptions":{"typeIdentifier":"t_stringliteral_5fec8ede65c0caef3899b3174f258c732d5616cc4144b82fcdbac009109d42dc","typeString":"literal_string \"router genesis is zero; call `lookupGenesisHash()` first\""},"value":"router genesis is zero; call `lookupGenesisHash()` first"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5fec8ede65c0caef3899b3174f258c732d5616cc4144b82fcdbac009109d42dc","typeString":"literal_string \"router genesis is zero; call `lookupGenesisHash()` first\""}],"id":75864,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"6343:7:159","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":75874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6343:107:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75875,"nodeType":"ExpressionStatement","src":"6343:107:159"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_CodeState_$76986","typeString":"enum Gear.CodeState"},"id":75885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":75877,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75860,"src":"6482:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75878,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6489:12:159","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":73676,"src":"6482:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$77029_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":75879,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6502:5:159","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":77020,"src":"6482:25:159","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$76986_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":75881,"indexExpression":{"id":75880,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75840,"src":"6508:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6482:34:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76986","typeString":"enum Gear.CodeState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":75882,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77378,"src":"6520:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77378_$","typeString":"type(library Gear)"}},"id":75883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6525:9:159","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":76986,"src":"6520:14:159","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$76986_$","typeString":"type(enum Gear.CodeState)"}},"id":75884,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6535:7:159","memberName":"Unknown","nodeType":"MemberAccess","referencedDeclaration":76983,"src":"6520:22:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76986","typeString":"enum Gear.CodeState"}},"src":"6482:60:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"676976656e20636f646520696420697320616c7265616479206f6e2076616c69646174696f6e206f722076616c696461746564","id":75886,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6556:53:159","typeDescriptions":{"typeIdentifier":"t_stringliteral_6767c8b133cc7e7263c64dbd155947c93c4fdbe1adf907d9d3428673190ae536","typeString":"literal_string \"given code id is already on validation or validated\""},"value":"given code id is already on validation or validated"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6767c8b133cc7e7263c64dbd155947c93c4fdbe1adf907d9d3428673190ae536","typeString":"literal_string \"given code id is already on validation or validated\""}],"id":75876,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"6461:7:159","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":75887,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6461:158:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75888,"nodeType":"ExpressionStatement","src":"6461:158:159"},{"expression":{"id":75899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"expression":{"id":75889,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75860,"src":"6630:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75893,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6637:12:159","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":73676,"src":"6630:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$77029_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":75894,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6650:5:159","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":77020,"src":"6630:25:159","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$76986_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":75895,"indexExpression":{"id":75892,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75840,"src":"6656:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6630:34:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76986","typeString":"enum Gear.CodeState"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":75896,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77378,"src":"6667:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77378_$","typeString":"type(library Gear)"}},"id":75897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6672:9:159","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":76986,"src":"6667:14:159","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$76986_$","typeString":"type(enum Gear.CodeState)"}},"id":75898,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6682:19:159","memberName":"ValidationRequested","nodeType":"MemberAccess","referencedDeclaration":76984,"src":"6667:34:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76986","typeString":"enum Gear.CodeState"}},"src":"6630:71:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76986","typeString":"enum Gear.CodeState"}},"id":75900,"nodeType":"ExpressionStatement","src":"6630:71:159"},{"eventCall":{"arguments":[{"id":75902,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75840,"src":"6741:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":75903,"name":"_blobTxHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75842,"src":"6750:11:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":75901,"name":"CodeValidationRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73696,"src":"6717:23:159","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32)"}},"id":75904,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6717:45:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75905,"nodeType":"EmitStatement","src":"6712:50:159"}]},"baseFunctions":[73843],"functionSelector":"1c149d8a","implemented":true,"kind":"function","modifiers":[],"name":"requestCodeValidation","nameLocation":"6141:21:159","parameters":{"id":75843,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75840,"mutability":"mutable","name":"_codeId","nameLocation":"6171:7:159","nodeType":"VariableDeclaration","scope":75907,"src":"6163:15:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75839,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6163:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":75842,"mutability":"mutable","name":"_blobTxHash","nameLocation":"6188:11:159","nodeType":"VariableDeclaration","scope":75907,"src":"6180:19:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75841,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6180:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6162:38:159"},"returnParameters":{"id":75844,"nodeType":"ParameterList","parameters":[],"src":"6210:0:159"},"scope":76827,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":75944,"nodeType":"FunctionDefinition","src":"6775:372:159","nodes":[],"body":{"id":75943,"nodeType":"Block","src":"6918:229:159","nodes":[],"statements":[{"assignments":[75921,75923],"declarations":[{"constant":false,"id":75921,"mutability":"mutable","name":"actorId","nameLocation":"6937:7:159","nodeType":"VariableDeclaration","scope":75943,"src":"6929:15:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75920,"name":"address","nodeType":"ElementaryTypeName","src":"6929:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":75923,"mutability":"mutable","name":"executableBalance","nameLocation":"6954:17:159","nodeType":"VariableDeclaration","scope":75943,"src":"6946:25:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":75922,"name":"uint128","nodeType":"ElementaryTypeName","src":"6946:7:159","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":75929,"initialValue":{"arguments":[{"id":75925,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75909,"src":"7004:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":75926,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75911,"src":"7013:5:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":75927,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75915,"src":"7020:6:159","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":75924,"name":"_createProgramWithoutMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76312,"src":"6975:28:159","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_uint128_$returns$_t_address_$_t_uint128_$","typeString":"function (bytes32,bytes32,uint128) returns (address,uint128)"}},"id":75928,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6975:52:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint128_$","typeString":"tuple(address,uint128)"}},"nodeType":"VariableDeclarationStatement","src":"6928:99:159"},{"expression":{"arguments":[{"expression":{"id":75934,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7067:3:159","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":75935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7071:6:159","memberName":"sender","nodeType":"MemberAccess","src":"7067:10:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":75936,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75913,"src":"7079:8:159","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":75937,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75915,"src":"7089:6:159","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":75938,"name":"executableBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75923,"src":"7097:17:159","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":75931,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75921,"src":"7046:7:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":75930,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73603,"src":"7038:7:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$73603_$","typeString":"type(contract IMirror)"}},"id":75932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7038:16:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$73603","typeString":"contract IMirror"}},"id":75933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7055:11:159","memberName":"initMessage","nodeType":"MemberAccess","referencedDeclaration":73602,"src":"7038:28:159","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":75939,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7038:77:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75940,"nodeType":"ExpressionStatement","src":"7038:77:159"},{"expression":{"id":75941,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75921,"src":"7133:7:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":75919,"id":75942,"nodeType":"Return","src":"7126:14:159"}]},"baseFunctions":[73857],"functionSelector":"8074b455","implemented":true,"kind":"function","modifiers":[],"name":"createProgram","nameLocation":"6784:13:159","parameters":{"id":75916,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75909,"mutability":"mutable","name":"_codeId","nameLocation":"6806:7:159","nodeType":"VariableDeclaration","scope":75944,"src":"6798:15:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75908,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6798:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":75911,"mutability":"mutable","name":"_salt","nameLocation":"6823:5:159","nodeType":"VariableDeclaration","scope":75944,"src":"6815:13:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75910,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6815:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":75913,"mutability":"mutable","name":"_payload","nameLocation":"6845:8:159","nodeType":"VariableDeclaration","scope":75944,"src":"6830:23:159","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":75912,"name":"bytes","nodeType":"ElementaryTypeName","src":"6830:5:159","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":75915,"mutability":"mutable","name":"_value","nameLocation":"6863:6:159","nodeType":"VariableDeclaration","scope":75944,"src":"6855:14:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":75914,"name":"uint128","nodeType":"ElementaryTypeName","src":"6855:7:159","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"6797:73:159"},"returnParameters":{"id":75919,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75918,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75944,"src":"6905:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75917,"name":"address","nodeType":"ElementaryTypeName","src":"6905:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6904:9:159"},"scope":76827,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":76002,"nodeType":"FunctionDefinition","src":"7153:579:159","nodes":[],"body":{"id":76001,"nodeType":"Block","src":"7355:377:159","nodes":[],"statements":[{"assignments":[75960,75962],"declarations":[{"constant":false,"id":75960,"mutability":"mutable","name":"actorId","nameLocation":"7374:7:159","nodeType":"VariableDeclaration","scope":76001,"src":"7366:15:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75959,"name":"address","nodeType":"ElementaryTypeName","src":"7366:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":75962,"mutability":"mutable","name":"executableBalance","nameLocation":"7391:17:159","nodeType":"VariableDeclaration","scope":76001,"src":"7383:25:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":75961,"name":"uint128","nodeType":"ElementaryTypeName","src":"7383:7:159","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":75968,"initialValue":{"arguments":[{"id":75964,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75948,"src":"7441:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":75965,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75950,"src":"7450:5:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":75966,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75954,"src":"7457:6:159","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":75963,"name":"_createProgramWithoutMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76312,"src":"7412:28:159","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_uint128_$returns$_t_address_$_t_uint128_$","typeString":"function (bytes32,bytes32,uint128) returns (address,uint128)"}},"id":75967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7412:52:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint128_$","typeString":"tuple(address,uint128)"}},"nodeType":"VariableDeclarationStatement","src":"7365:99:159"},{"assignments":[75971],"declarations":[{"constant":false,"id":75971,"mutability":"mutable","name":"mirrorInstance","nameLocation":"7483:14:159","nodeType":"VariableDeclaration","scope":76001,"src":"7475:22:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$73603","typeString":"contract IMirror"},"typeName":{"id":75970,"nodeType":"UserDefinedTypeName","pathNode":{"id":75969,"name":"IMirror","nameLocations":["7475:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73603,"src":"7475:7:159"},"referencedDeclaration":73603,"src":"7475:7:159","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$73603","typeString":"contract IMirror"}},"visibility":"internal"}],"id":75975,"initialValue":{"arguments":[{"id":75973,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75960,"src":"7508:7:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":75972,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73603,"src":"7500:7:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$73603_$","typeString":"type(contract IMirror)"}},"id":75974,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7500:16:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$73603","typeString":"contract IMirror"}},"nodeType":"VariableDeclarationStatement","src":"7475:41:159"},{"expression":{"arguments":[{"id":75979,"name":"_decoderImpl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75946,"src":"7556:12:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[{"id":75983,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75948,"src":"7597:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":75984,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75950,"src":"7606:5:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":75981,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7580:3:159","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":75982,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7584:12:159","memberName":"encodePacked","nodeType":"MemberAccess","src":"7580:16:159","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":75985,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7580:32:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":75980,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"7570:9:159","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":75986,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7570:43:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":75976,"name":"mirrorInstance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75971,"src":"7527:14:159","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$73603","typeString":"contract IMirror"}},"id":75978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7542:13:159","memberName":"createDecoder","nodeType":"MemberAccess","referencedDeclaration":73591,"src":"7527:28:159","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bytes32_$returns$__$","typeString":"function (address,bytes32) external"}},"id":75987,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7527:87:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75988,"nodeType":"ExpressionStatement","src":"7527:87:159"},{"expression":{"arguments":[{"expression":{"id":75992,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7652:3:159","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":75993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7656:6:159","memberName":"sender","nodeType":"MemberAccess","src":"7652:10:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":75994,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75952,"src":"7664:8:159","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":75995,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75954,"src":"7674:6:159","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":75996,"name":"executableBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75962,"src":"7682:17:159","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":{"id":75989,"name":"mirrorInstance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75971,"src":"7625:14:159","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$73603","typeString":"contract IMirror"}},"id":75991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7640:11:159","memberName":"initMessage","nodeType":"MemberAccess","referencedDeclaration":73602,"src":"7625:26:159","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":75997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7625:75:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75998,"nodeType":"ExpressionStatement","src":"7625:75:159"},{"expression":{"id":75999,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75960,"src":"7718:7:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":75958,"id":76000,"nodeType":"Return","src":"7711:14:159"}]},"baseFunctions":[73873],"functionSelector":"666d124c","implemented":true,"kind":"function","modifiers":[],"name":"createProgramWithDecoder","nameLocation":"7162:24:159","parameters":{"id":75955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75946,"mutability":"mutable","name":"_decoderImpl","nameLocation":"7204:12:159","nodeType":"VariableDeclaration","scope":76002,"src":"7196:20:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75945,"name":"address","nodeType":"ElementaryTypeName","src":"7196:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":75948,"mutability":"mutable","name":"_codeId","nameLocation":"7234:7:159","nodeType":"VariableDeclaration","scope":76002,"src":"7226:15:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75947,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7226:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":75950,"mutability":"mutable","name":"_salt","nameLocation":"7259:5:159","nodeType":"VariableDeclaration","scope":76002,"src":"7251:13:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75949,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7251:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":75952,"mutability":"mutable","name":"_payload","nameLocation":"7289:8:159","nodeType":"VariableDeclaration","scope":76002,"src":"7274:23:159","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":75951,"name":"bytes","nodeType":"ElementaryTypeName","src":"7274:5:159","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":75954,"mutability":"mutable","name":"_value","nameLocation":"7315:6:159","nodeType":"VariableDeclaration","scope":76002,"src":"7307:14:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":75953,"name":"uint128","nodeType":"ElementaryTypeName","src":"7307:7:159","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"7186:141:159"},"returnParameters":{"id":75958,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75957,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":76002,"src":"7346:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75956,"name":"address","nodeType":"ElementaryTypeName","src":"7346:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7345:9:159"},"scope":76827,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":76134,"nodeType":"FunctionDefinition","src":"7765:1336:159","nodes":[],"body":{"id":76133,"nodeType":"Block","src":"7874:1227:159","nodes":[],"statements":[{"assignments":[76014],"declarations":[{"constant":false,"id":76014,"mutability":"mutable","name":"router","nameLocation":"7900:6:159","nodeType":"VariableDeclaration","scope":76133,"src":"7884:22:159","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":76013,"nodeType":"UserDefinedTypeName","pathNode":{"id":76012,"name":"Storage","nameLocations":["7884:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73677,"src":"7884:7:159"},"referencedDeclaration":73677,"src":"7884:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":76017,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":76015,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76769,"src":"7909:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73677_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":76016,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7909:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7884:34:159"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":76026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":76019,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76014,"src":"7936:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76020,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7943:12:159","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":73656,"src":"7936:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$77003_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":76021,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7956:4:159","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":76998,"src":"7936:24:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":76024,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7972:1:159","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":76023,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7964:7:159","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":76022,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7964:7:159","typeDescriptions":{}}},"id":76025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7964:10:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"7936:38:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"726f757465722067656e65736973206973207a65726f3b2063616c6c20606c6f6f6b757047656e6573697348617368282960206669727374","id":76027,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7976:58:159","typeDescriptions":{"typeIdentifier":"t_stringliteral_5fec8ede65c0caef3899b3174f258c732d5616cc4144b82fcdbac009109d42dc","typeString":"literal_string \"router genesis is zero; call `lookupGenesisHash()` first\""},"value":"router genesis is zero; call `lookupGenesisHash()` first"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5fec8ede65c0caef3899b3174f258c732d5616cc4144b82fcdbac009109d42dc","typeString":"literal_string \"router genesis is zero; call `lookupGenesisHash()` first\""}],"id":76018,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"7928:7:159","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":76028,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7928:107:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76029,"nodeType":"ExpressionStatement","src":"7928:107:159"},{"assignments":[76031],"declarations":[{"constant":false,"id":76031,"mutability":"mutable","name":"codeCommitmentsHashes","nameLocation":"8059:21:159","nodeType":"VariableDeclaration","scope":76133,"src":"8046:34:159","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":76030,"name":"bytes","nodeType":"ElementaryTypeName","src":"8046:5:159","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":76032,"nodeType":"VariableDeclarationStatement","src":"8046:34:159"},{"body":{"id":76119,"nodeType":"Block","src":"8145:784:159","statements":[{"assignments":[76048],"declarations":[{"constant":false,"id":76048,"mutability":"mutable","name":"codeCommitment","nameLocation":"8188:14:159","nodeType":"VariableDeclaration","scope":76119,"src":"8159:43:159","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$76982_calldata_ptr","typeString":"struct Gear.CodeCommitment"},"typeName":{"id":76047,"nodeType":"UserDefinedTypeName","pathNode":{"id":76046,"name":"Gear.CodeCommitment","nameLocations":["8159:4:159","8164:14:159"],"nodeType":"IdentifierPath","referencedDeclaration":76982,"src":"8159:19:159"},"referencedDeclaration":76982,"src":"8159:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$76982_storage_ptr","typeString":"struct Gear.CodeCommitment"}},"visibility":"internal"}],"id":76052,"initialValue":{"baseExpression":{"id":76049,"name":"_codeCommitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76006,"src":"8205:16:159","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$76982_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata[] calldata"}},"id":76051,"indexExpression":{"id":76050,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76034,"src":"8222:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8205:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$76982_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"nodeType":"VariableDeclarationStatement","src":"8159:65:159"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_CodeState_$76986","typeString":"enum Gear.CodeState"},"id":76063,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":76054,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76014,"src":"8264:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76055,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8271:12:159","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":73676,"src":"8264:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$77029_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":76056,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8284:5:159","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":77020,"src":"8264:25:159","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$76986_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":76059,"indexExpression":{"expression":{"id":76057,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76048,"src":"8290:14:159","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$76982_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":76058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8305:2:159","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":76979,"src":"8290:17:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8264:44:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76986","typeString":"enum Gear.CodeState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":76060,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77378,"src":"8312:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77378_$","typeString":"type(library Gear)"}},"id":76061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8317:9:159","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":76986,"src":"8312:14:159","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$76986_$","typeString":"type(enum Gear.CodeState)"}},"id":76062,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8327:19:159","memberName":"ValidationRequested","nodeType":"MemberAccess","referencedDeclaration":76984,"src":"8312:34:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76986","typeString":"enum Gear.CodeState"}},"src":"8264:82:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"636f6465206d7573742062652072657175657374656420666f722076616c69646174696f6e20746f20626520636f6d6d6974746564","id":76064,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8364:55:159","typeDescriptions":{"typeIdentifier":"t_stringliteral_5641fde195ef857639d9de420cb3fc56957be6957a3c8a5e78a2243186a510e8","typeString":"literal_string \"code must be requested for validation to be committed\""},"value":"code must be requested for validation to be committed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5641fde195ef857639d9de420cb3fc56957be6957a3c8a5e78a2243186a510e8","typeString":"literal_string \"code must be requested for validation to be committed\""}],"id":76053,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"8239:7:159","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":76065,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8239:194:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76066,"nodeType":"ExpressionStatement","src":"8239:194:159"},{"condition":{"expression":{"id":76067,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76048,"src":"8452:14:159","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$76982_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":76068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8467:5:159","memberName":"valid","nodeType":"MemberAccess","referencedDeclaration":76981,"src":"8452:20:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":76098,"nodeType":"Block","src":"8643:84:159","statements":[{"expression":{"id":76096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"8661:51:159","subExpression":{"baseExpression":{"expression":{"expression":{"id":76090,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76014,"src":"8668:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76091,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8675:12:159","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":73676,"src":"8668:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$77029_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":76092,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8688:5:159","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":77020,"src":"8668:25:159","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$76986_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":76095,"indexExpression":{"expression":{"id":76093,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76048,"src":"8694:14:159","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$76982_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":76094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8709:2:159","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":76979,"src":"8694:17:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8668:44:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76986","typeString":"enum Gear.CodeState"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76097,"nodeType":"ExpressionStatement","src":"8661:51:159"}]},"id":76099,"nodeType":"IfStatement","src":"8448:279:159","trueBody":{"id":76089,"nodeType":"Block","src":"8474:163:159","statements":[{"expression":{"id":76080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"expression":{"id":76069,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76014,"src":"8492:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76074,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8499:12:159","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":73676,"src":"8492:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$77029_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":76075,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8512:5:159","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":77020,"src":"8492:25:159","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$76986_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":76076,"indexExpression":{"expression":{"id":76072,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76048,"src":"8518:14:159","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$76982_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":76073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8533:2:159","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":76979,"src":"8518:17:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8492:44:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76986","typeString":"enum Gear.CodeState"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":76077,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77378,"src":"8539:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77378_$","typeString":"type(library Gear)"}},"id":76078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8544:9:159","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":76986,"src":"8539:14:159","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$76986_$","typeString":"type(enum Gear.CodeState)"}},"id":76079,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8554:9:159","memberName":"Validated","nodeType":"MemberAccess","referencedDeclaration":76985,"src":"8539:24:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76986","typeString":"enum Gear.CodeState"}},"src":"8492:71:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76986","typeString":"enum Gear.CodeState"}},"id":76081,"nodeType":"ExpressionStatement","src":"8492:71:159"},{"expression":{"id":76087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"8581:41:159","subExpression":{"expression":{"expression":{"id":76082,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76014,"src":"8581:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76085,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8588:12:159","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":73676,"src":"8581:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$77029_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":76086,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8601:19:159","memberName":"validatedCodesCount","nodeType":"MemberAccess","referencedDeclaration":77028,"src":"8581:39:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76088,"nodeType":"ExpressionStatement","src":"8581:41:159"}]}},{"eventCall":{"arguments":[{"expression":{"id":76101,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76048,"src":"8763:14:159","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$76982_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":76102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8778:2:159","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":76979,"src":"8763:17:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":76103,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76048,"src":"8782:14:159","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$76982_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":76104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8797:5:159","memberName":"valid","nodeType":"MemberAccess","referencedDeclaration":76981,"src":"8782:20:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":76100,"name":"CodeGotValidated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73689,"src":"8746:16:159","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bool_$returns$__$","typeString":"function (bytes32,bool)"}},"id":76105,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8746:57:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76106,"nodeType":"EmitStatement","src":"8741:62:159"},{"expression":{"id":76117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":76107,"name":"codeCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76031,"src":"8818:21:159","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":76111,"name":"codeCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76031,"src":"8855:21:159","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":76114,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76048,"src":"8902:14:159","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$76982_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_CodeCommitment_$76982_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}],"expression":{"id":76112,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77378,"src":"8878:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77378_$","typeString":"type(library Gear)"}},"id":76113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8883:18:159","memberName":"codeCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":77158,"src":"8878:23:159","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_CodeCommitment_$76982_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.CodeCommitment calldata) pure returns (bytes32)"}},"id":76115,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8878:39:159","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":76109,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8842:5:159","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":76108,"name":"bytes","nodeType":"ElementaryTypeName","src":"8842:5:159","typeDescriptions":{}}},"id":76110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8848:6:159","memberName":"concat","nodeType":"MemberAccess","src":"8842:12:159","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":76116,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8842:76:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"8818:100:159","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":76118,"nodeType":"ExpressionStatement","src":"8818:100:159"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76037,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76034,"src":"8111:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":76038,"name":"_codeCommitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76006,"src":"8115:16:159","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$76982_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata[] calldata"}},"id":76039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8132:6:159","memberName":"length","nodeType":"MemberAccess","src":"8115:23:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8111:27:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76120,"initializationExpression":{"assignments":[76034],"declarations":[{"constant":false,"id":76034,"mutability":"mutable","name":"i","nameLocation":"8104:1:159","nodeType":"VariableDeclaration","scope":76120,"src":"8096:9:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76033,"name":"uint256","nodeType":"ElementaryTypeName","src":"8096:7:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":76036,"initialValue":{"hexValue":"30","id":76035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8108:1:159","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8096:13:159"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":76042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"8140:3:159","subExpression":{"id":76041,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76034,"src":"8140:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76043,"nodeType":"ExpressionStatement","src":"8140:3:159"},"nodeType":"ForStatement","src":"8091:838:159"},{"expression":{"arguments":[{"arguments":[{"id":76124,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76014,"src":"8984:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"arguments":[{"id":76126,"name":"codeCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76031,"src":"9002:21:159","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":76125,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"8992:9:159","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":76127,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8992:32:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":76128,"name":"_signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76009,"src":"9026:11:159","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}],"expression":{"id":76122,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77378,"src":"8960:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77378_$","typeString":"type(library Gear)"}},"id":76123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8965:18:159","memberName":"validateSignatures","nodeType":"MemberAccess","referencedDeclaration":77334,"src":"8960:23:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$73677_storage_ptr_$_t_bytes32_$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bool_$","typeString":"function (struct IRouter.Storage storage pointer,bytes32,bytes calldata[] calldata) view returns (bool)"}},"id":76129,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8960:78:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"7369676e61747572657320766572696669636174696f6e206661696c6564","id":76130,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9052:32:159","typeDescriptions":{"typeIdentifier":"t_stringliteral_42f70f68087ddd2ea90e0adc36eeb88121bbdb06c88480a0c6a87e4a00dde3b2","typeString":"literal_string \"signatures verification failed\""},"value":"signatures verification failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_42f70f68087ddd2ea90e0adc36eeb88121bbdb06c88480a0c6a87e4a00dde3b2","typeString":"literal_string \"signatures verification failed\""}],"id":76121,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"8939:7:159","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":76131,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8939:155:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76132,"nodeType":"ExpressionStatement","src":"8939:155:159"}]},"baseFunctions":[73884],"functionSelector":"e97d3eb3","implemented":true,"kind":"function","modifiers":[],"name":"commitCodes","nameLocation":"7774:11:159","parameters":{"id":76010,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76006,"mutability":"mutable","name":"_codeCommitments","nameLocation":"7817:16:159","nodeType":"VariableDeclaration","scope":76134,"src":"7786:47:159","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$76982_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.CodeCommitment[]"},"typeName":{"baseType":{"id":76004,"nodeType":"UserDefinedTypeName","pathNode":{"id":76003,"name":"Gear.CodeCommitment","nameLocations":["7786:4:159","7791:14:159"],"nodeType":"IdentifierPath","referencedDeclaration":76982,"src":"7786:19:159"},"referencedDeclaration":76982,"src":"7786:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$76982_storage_ptr","typeString":"struct Gear.CodeCommitment"}},"id":76005,"nodeType":"ArrayTypeName","src":"7786:21:159","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$76982_storage_$dyn_storage_ptr","typeString":"struct Gear.CodeCommitment[]"}},"visibility":"internal"},{"constant":false,"id":76009,"mutability":"mutable","name":"_signatures","nameLocation":"7852:11:159","nodeType":"VariableDeclaration","scope":76134,"src":"7835:28:159","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":76007,"name":"bytes","nodeType":"ElementaryTypeName","src":"7835:5:159","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":76008,"nodeType":"ArrayTypeName","src":"7835:7:159","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"7785:79:159"},"returnParameters":{"id":76011,"nodeType":"ParameterList","parameters":[],"src":"7874:0:159"},"scope":76827,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":76214,"nodeType":"FunctionDefinition","src":"9107:798:159","nodes":[],"body":{"id":76213,"nodeType":"Block","src":"9252:653:159","nodes":[],"statements":[{"assignments":[76148],"declarations":[{"constant":false,"id":76148,"mutability":"mutable","name":"router","nameLocation":"9278:6:159","nodeType":"VariableDeclaration","scope":76213,"src":"9262:22:159","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":76147,"nodeType":"UserDefinedTypeName","pathNode":{"id":76146,"name":"Storage","nameLocations":["9262:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73677,"src":"9262:7:159"},"referencedDeclaration":73677,"src":"9262:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":76151,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":76149,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76769,"src":"9287:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73677_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":76150,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9287:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"9262:34:159"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":76160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":76153,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76148,"src":"9314:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76154,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9321:12:159","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":73656,"src":"9314:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$77003_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":76155,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9334:4:159","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":76998,"src":"9314:24:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":76158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9350:1:159","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":76157,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9342:7:159","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":76156,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9342:7:159","typeDescriptions":{}}},"id":76159,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9342:10:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"9314:38:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"726f757465722067656e65736973206973207a65726f3b2063616c6c20606c6f6f6b757047656e6573697348617368282960206669727374","id":76161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9354:58:159","typeDescriptions":{"typeIdentifier":"t_stringliteral_5fec8ede65c0caef3899b3174f258c732d5616cc4144b82fcdbac009109d42dc","typeString":"literal_string \"router genesis is zero; call `lookupGenesisHash()` first\""},"value":"router genesis is zero; call `lookupGenesisHash()` first"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5fec8ede65c0caef3899b3174f258c732d5616cc4144b82fcdbac009109d42dc","typeString":"literal_string \"router genesis is zero; call `lookupGenesisHash()` first\""}],"id":76152,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"9306:7:159","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":76162,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9306:107:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76163,"nodeType":"ExpressionStatement","src":"9306:107:159"},{"assignments":[76165],"declarations":[{"constant":false,"id":76165,"mutability":"mutable","name":"blockCommitmentsHashes","nameLocation":"9437:22:159","nodeType":"VariableDeclaration","scope":76213,"src":"9424:35:159","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":76164,"name":"bytes","nodeType":"ElementaryTypeName","src":"9424:5:159","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":76166,"nodeType":"VariableDeclarationStatement","src":"9424:35:159"},{"body":{"id":76199,"nodeType":"Block","src":"9525:207:159","statements":[{"assignments":[76182],"declarations":[{"constant":false,"id":76182,"mutability":"mutable","name":"blockCommitment","nameLocation":"9569:15:159","nodeType":"VariableDeclaration","scope":76199,"src":"9539:45:159","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76977_calldata_ptr","typeString":"struct Gear.BlockCommitment"},"typeName":{"id":76181,"nodeType":"UserDefinedTypeName","pathNode":{"id":76180,"name":"Gear.BlockCommitment","nameLocations":["9539:4:159","9544:15:159"],"nodeType":"IdentifierPath","referencedDeclaration":76977,"src":"9539:20:159"},"referencedDeclaration":76977,"src":"9539:20:159","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76977_storage_ptr","typeString":"struct Gear.BlockCommitment"}},"visibility":"internal"}],"id":76186,"initialValue":{"baseExpression":{"id":76183,"name":"_blockCommitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76138,"src":"9587:17:159","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$76977_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata[] calldata"}},"id":76185,"indexExpression":{"id":76184,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76168,"src":"9605:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9587:20:159","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76977_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"nodeType":"VariableDeclarationStatement","src":"9539:68:159"},{"expression":{"id":76197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":76187,"name":"blockCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76165,"src":"9621:22:159","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":76191,"name":"blockCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76165,"src":"9659:22:159","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":76193,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76148,"src":"9696:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"id":76194,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76182,"src":"9704:15:159","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76977_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_struct$_BlockCommitment_$76977_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}],"id":76192,"name":"_commitBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76413,"src":"9683:12:159","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Storage_$73677_storage_ptr_$_t_struct$_BlockCommitment_$76977_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct IRouter.Storage storage pointer,struct Gear.BlockCommitment calldata) returns (bytes32)"}},"id":76195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9683:37:159","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":76189,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9646:5:159","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":76188,"name":"bytes","nodeType":"ElementaryTypeName","src":"9646:5:159","typeDescriptions":{}}},"id":76190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9652:6:159","memberName":"concat","nodeType":"MemberAccess","src":"9646:12:159","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":76196,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9646:75:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"9621:100:159","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":76198,"nodeType":"ExpressionStatement","src":"9621:100:159"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76171,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76168,"src":"9490:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":76172,"name":"_blockCommitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76138,"src":"9494:17:159","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$76977_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata[] calldata"}},"id":76173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9512:6:159","memberName":"length","nodeType":"MemberAccess","src":"9494:24:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9490:28:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76200,"initializationExpression":{"assignments":[76168],"declarations":[{"constant":false,"id":76168,"mutability":"mutable","name":"i","nameLocation":"9483:1:159","nodeType":"VariableDeclaration","scope":76200,"src":"9475:9:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76167,"name":"uint256","nodeType":"ElementaryTypeName","src":"9475:7:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":76170,"initialValue":{"hexValue":"30","id":76169,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9487:1:159","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9475:13:159"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":76176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"9520:3:159","subExpression":{"id":76175,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76168,"src":"9520:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76177,"nodeType":"ExpressionStatement","src":"9520:3:159"},"nodeType":"ForStatement","src":"9470:262:159"},{"expression":{"arguments":[{"arguments":[{"id":76204,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76148,"src":"9787:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"arguments":[{"id":76206,"name":"blockCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76165,"src":"9805:22:159","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":76205,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"9795:9:159","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":76207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9795:33:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":76208,"name":"_signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76141,"src":"9830:11:159","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}],"expression":{"id":76202,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77378,"src":"9763:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77378_$","typeString":"type(library Gear)"}},"id":76203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9768:18:159","memberName":"validateSignatures","nodeType":"MemberAccess","referencedDeclaration":77334,"src":"9763:23:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$73677_storage_ptr_$_t_bytes32_$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bool_$","typeString":"function (struct IRouter.Storage storage pointer,bytes32,bytes calldata[] calldata) view returns (bool)"}},"id":76209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9763:79:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"7369676e61747572657320766572696669636174696f6e206661696c6564","id":76210,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9856:32:159","typeDescriptions":{"typeIdentifier":"t_stringliteral_42f70f68087ddd2ea90e0adc36eeb88121bbdb06c88480a0c6a87e4a00dde3b2","typeString":"literal_string \"signatures verification failed\""},"value":"signatures verification failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_42f70f68087ddd2ea90e0adc36eeb88121bbdb06c88480a0c6a87e4a00dde3b2","typeString":"literal_string \"signatures verification failed\""}],"id":76201,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"9742:7:159","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":76211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9742:156:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76212,"nodeType":"ExpressionStatement","src":"9742:156:159"}]},"baseFunctions":[73895],"functionSelector":"01b1d156","implemented":true,"kind":"function","modifiers":[{"id":76144,"kind":"modifierInvocation","modifierName":{"id":76143,"name":"nonReentrant","nameLocations":["9235:12:159"],"nodeType":"IdentifierPath","referencedDeclaration":44000,"src":"9235:12:159"},"nodeType":"ModifierInvocation","src":"9235:12:159"}],"name":"commitBlocks","nameLocation":"9116:12:159","parameters":{"id":76142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76138,"mutability":"mutable","name":"_blockCommitments","nameLocation":"9161:17:159","nodeType":"VariableDeclaration","scope":76214,"src":"9129:49:159","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$76977_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.BlockCommitment[]"},"typeName":{"baseType":{"id":76136,"nodeType":"UserDefinedTypeName","pathNode":{"id":76135,"name":"Gear.BlockCommitment","nameLocations":["9129:4:159","9134:15:159"],"nodeType":"IdentifierPath","referencedDeclaration":76977,"src":"9129:20:159"},"referencedDeclaration":76977,"src":"9129:20:159","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76977_storage_ptr","typeString":"struct Gear.BlockCommitment"}},"id":76137,"nodeType":"ArrayTypeName","src":"9129:22:159","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$76977_storage_$dyn_storage_ptr","typeString":"struct Gear.BlockCommitment[]"}},"visibility":"internal"},{"constant":false,"id":76141,"mutability":"mutable","name":"_signatures","nameLocation":"9197:11:159","nodeType":"VariableDeclaration","scope":76214,"src":"9180:28:159","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":76139,"name":"bytes","nodeType":"ElementaryTypeName","src":"9180:5:159","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":76140,"nodeType":"ArrayTypeName","src":"9180:7:159","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"9128:81:159"},"returnParameters":{"id":76145,"nodeType":"ParameterList","parameters":[],"src":"9252:0:159"},"scope":76827,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":76312,"nodeType":"FunctionDefinition","src":"9947:1144:159","nodes":[],"body":{"id":76311,"nodeType":"Block","src":"10088:1003:159","nodes":[],"statements":[{"assignments":[76229],"declarations":[{"constant":false,"id":76229,"mutability":"mutable","name":"router","nameLocation":"10114:6:159","nodeType":"VariableDeclaration","scope":76311,"src":"10098:22:159","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":76228,"nodeType":"UserDefinedTypeName","pathNode":{"id":76227,"name":"Storage","nameLocations":["10098:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73677,"src":"10098:7:159"},"referencedDeclaration":73677,"src":"10098:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":76232,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":76230,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76769,"src":"10123:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73677_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":76231,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10123:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"10098:34:159"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":76241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":76234,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76229,"src":"10150:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76235,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10157:12:159","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":73656,"src":"10150:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$77003_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":76236,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10170:4:159","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":76998,"src":"10150:24:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":76239,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10186:1:159","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":76238,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10178:7:159","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":76237,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10178:7:159","typeDescriptions":{}}},"id":76240,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10178:10:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"10150:38:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"726f757465722067656e65736973206973207a65726f3b2063616c6c20606c6f6f6b757047656e6573697348617368282960206669727374","id":76242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10190:58:159","typeDescriptions":{"typeIdentifier":"t_stringliteral_5fec8ede65c0caef3899b3174f258c732d5616cc4144b82fcdbac009109d42dc","typeString":"literal_string \"router genesis is zero; call `lookupGenesisHash()` first\""},"value":"router genesis is zero; call `lookupGenesisHash()` first"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5fec8ede65c0caef3899b3174f258c732d5616cc4144b82fcdbac009109d42dc","typeString":"literal_string \"router genesis is zero; call `lookupGenesisHash()` first\""}],"id":76233,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"10142:7:159","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":76243,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10142:107:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76244,"nodeType":"ExpressionStatement","src":"10142:107:159"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_CodeState_$76986","typeString":"enum Gear.CodeState"},"id":76254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":76246,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76229,"src":"10281:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76247,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10288:12:159","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":73676,"src":"10281:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$77029_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":76248,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10301:5:159","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":77020,"src":"10281:25:159","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$76986_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":76250,"indexExpression":{"id":76249,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76216,"src":"10307:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10281:34:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76986","typeString":"enum Gear.CodeState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":76251,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77378,"src":"10319:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77378_$","typeString":"type(library Gear)"}},"id":76252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10324:9:159","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":76986,"src":"10319:14:159","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$76986_$","typeString":"type(enum Gear.CodeState)"}},"id":76253,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10334:9:159","memberName":"Validated","nodeType":"MemberAccess","referencedDeclaration":76985,"src":"10319:24:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76986","typeString":"enum Gear.CodeState"}},"src":"10281:62:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"636f6465206d7573742062652076616c696461746564206265666f72652070726f6772616d206372656174696f6e","id":76255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10357:48:159","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":76245,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"10260:7:159","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":76256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10260:155:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76257,"nodeType":"ExpressionStatement","src":"10260:155:159"},{"assignments":[76259],"declarations":[{"constant":false,"id":76259,"mutability":"mutable","name":"executableBalance","nameLocation":"10493:17:159","nodeType":"VariableDeclaration","scope":76311,"src":"10485:25:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":76258,"name":"uint128","nodeType":"ElementaryTypeName","src":"10485:7:159","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":76261,"initialValue":{"hexValue":"31305f3030305f3030305f3030305f303030","id":76260,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10513:18:159","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000_by_1","typeString":"int_const 10000000000000"},"value":"10_000_000_000_000"},"nodeType":"VariableDeclarationStatement","src":"10485:46:159"},{"expression":{"arguments":[{"id":76263,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76229,"src":"10557:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":76266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76264,"name":"executableBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76259,"src":"10565:17:159","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":76265,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76220,"src":"10585:6:159","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"10565:26:159","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":76262,"name":"_retrieveValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76665,"src":"10542:14:159","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Storage_$73677_storage_ptr_$_t_uint128_$returns$__$","typeString":"function (struct IRouter.Storage storage pointer,uint128)"}},"id":76267,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10542:50:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76268,"nodeType":"ExpressionStatement","src":"10542:50:159"},{"assignments":[76270],"declarations":[{"constant":false,"id":76270,"mutability":"mutable","name":"actorId","nameLocation":"10761:7:159","nodeType":"VariableDeclaration","scope":76311,"src":"10753:15:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76269,"name":"address","nodeType":"ElementaryTypeName","src":"10753:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":76284,"initialValue":{"arguments":[{"expression":{"expression":{"id":76273,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76229,"src":"10809:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76274,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10816:13:159","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":73664,"src":"10809:20:159","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$76964_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":76275,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10830:11:159","memberName":"mirrorProxy","nodeType":"MemberAccess","referencedDeclaration":76961,"src":"10809:32:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[{"id":76279,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76216,"src":"10870:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":76280,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76218,"src":"10879:5:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":76277,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"10853:3:159","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":76278,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10857:12:159","memberName":"encodePacked","nodeType":"MemberAccess","src":"10853:16:159","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":76281,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10853:32:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":76276,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"10843:9:159","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":76282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10843:43:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":76271,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41840,"src":"10783:6:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Clones_$41840_$","typeString":"type(library Clones)"}},"id":76272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10790:18:159","memberName":"cloneDeterministic","nodeType":"MemberAccess","referencedDeclaration":41758,"src":"10783:25:159","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$_t_address_$","typeString":"function (address,bytes32) returns (address)"}},"id":76283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10783:104:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"10753:134:159"},{"expression":{"id":76293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"expression":{"id":76285,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76229,"src":"10898:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76289,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10905:12:159","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":73676,"src":"10898:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$77029_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":76290,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10918:8:159","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":77024,"src":"10898:28:159","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":76291,"indexExpression":{"id":76288,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76270,"src":"10927:7:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10898:37:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":76292,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76216,"src":"10938:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"10898:47:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":76294,"nodeType":"ExpressionStatement","src":"10898:47:159"},{"expression":{"id":76300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"10955:35:159","subExpression":{"expression":{"expression":{"id":76295,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76229,"src":"10955:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76298,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10962:12:159","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":73676,"src":"10955:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$77029_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":76299,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"10975:13:159","memberName":"programsCount","nodeType":"MemberAccess","referencedDeclaration":77026,"src":"10955:33:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76301,"nodeType":"ExpressionStatement","src":"10955:35:159"},{"eventCall":{"arguments":[{"id":76303,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76270,"src":"11021:7:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":76304,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76216,"src":"11030:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":76302,"name":"ProgramCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73710,"src":"11006:14:159","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_bytes32_$returns$__$","typeString":"function (address,bytes32)"}},"id":76305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11006:32:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76306,"nodeType":"EmitStatement","src":"11001:37:159"},{"expression":{"components":[{"id":76307,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76270,"src":"11057:7:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":76308,"name":"executableBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76259,"src":"11066:17:159","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":76309,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11056:28:159","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint128_$","typeString":"tuple(address,uint128)"}},"functionReturnParameters":76226,"id":76310,"nodeType":"Return","src":"11049:35:159"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_createProgramWithoutMessage","nameLocation":"9956:28:159","parameters":{"id":76221,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76216,"mutability":"mutable","name":"_codeId","nameLocation":"9993:7:159","nodeType":"VariableDeclaration","scope":76312,"src":"9985:15:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":76215,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9985:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":76218,"mutability":"mutable","name":"_salt","nameLocation":"10010:5:159","nodeType":"VariableDeclaration","scope":76312,"src":"10002:13:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":76217,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10002:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":76220,"mutability":"mutable","name":"_value","nameLocation":"10025:6:159","nodeType":"VariableDeclaration","scope":76312,"src":"10017:14:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":76219,"name":"uint128","nodeType":"ElementaryTypeName","src":"10017:7:159","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"9984:48:159"},"returnParameters":{"id":76226,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76223,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":76312,"src":"10066:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76222,"name":"address","nodeType":"ElementaryTypeName","src":"10066:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76225,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":76312,"src":"10075:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":76224,"name":"uint128","nodeType":"ElementaryTypeName","src":"10075:7:159","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"10065:18:159"},"scope":76827,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":76413,"nodeType":"FunctionDefinition","src":"11097:1326:159","nodes":[],"body":{"id":76412,"nodeType":"Block","src":"11237:1186:159","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":76329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":76324,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76315,"src":"11268:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76325,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11275:20:159","memberName":"latestCommittedBlock","nodeType":"MemberAccess","referencedDeclaration":73660,"src":"11268:27:159","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBlockInfo_$76991_storage","typeString":"struct Gear.CommittedBlockInfo storage ref"}},"id":76326,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11296:4:159","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":76988,"src":"11268:32:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":76327,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76318,"src":"11304:16:159","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76977_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":76328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11321:22:159","memberName":"previousCommittedBlock","nodeType":"MemberAccess","referencedDeclaration":76970,"src":"11304:39:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"11268:75:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e76616c69642070726576696f757320636f6d6d697474656420626c6f636b2068617368","id":76330,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11357:39:159","typeDescriptions":{"typeIdentifier":"t_stringliteral_4a13fb2485de3ac50aa69e9cf88b3994102e3ec72af73005448c8624cb4f1ed7","typeString":"literal_string \"invalid previous committed block hash\""},"value":"invalid previous committed block hash"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4a13fb2485de3ac50aa69e9cf88b3994102e3ec72af73005448c8624cb4f1ed7","typeString":"literal_string \"invalid previous committed block hash\""}],"id":76323,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"11247:7:159","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":76331,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11247:159:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76332,"nodeType":"ExpressionStatement","src":"11247:159:159"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":76336,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76318,"src":"11449:16:159","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76977_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":76337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11466:16:159","memberName":"predecessorBlock","nodeType":"MemberAccess","referencedDeclaration":76972,"src":"11449:33:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":76334,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77378,"src":"11425:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77378_$","typeString":"type(library Gear)"}},"id":76335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11430:18:159","memberName":"blockIsPredecessor","nodeType":"MemberAccess","referencedDeclaration":77139,"src":"11425:23:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bool_$","typeString":"function (bytes32) view returns (bool)"}},"id":76338,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11425:58:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"616c6c6f776564207072656465636573736f7220626c6f636b207761736e277420666f756e64","id":76339,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11485:40:159","typeDescriptions":{"typeIdentifier":"t_stringliteral_b3ebb0be53d5bf46a2d46be11aa5ba444a61071a9171c96feb964b4bc5f6539a","typeString":"literal_string \"allowed predecessor block wasn't found\""},"value":"allowed predecessor block wasn't found"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b3ebb0be53d5bf46a2d46be11aa5ba444a61071a9171c96feb964b4bc5f6539a","typeString":"literal_string \"allowed predecessor block wasn't found\""}],"id":76333,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"11417:7:159","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":76340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11417:109:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76341,"nodeType":"ExpressionStatement","src":"11417:109:159"},{"expression":{"id":76352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":76342,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76315,"src":"11666:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76344,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"11673:20:159","memberName":"latestCommittedBlock","nodeType":"MemberAccess","referencedDeclaration":73660,"src":"11666:27:159","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBlockInfo_$76991_storage","typeString":"struct Gear.CommittedBlockInfo storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":76347,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76318,"src":"11720:16:159","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76977_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":76348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11737:4:159","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":76966,"src":"11720:21:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":76349,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76318,"src":"11743:16:159","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76977_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":76350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11760:9:159","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":76968,"src":"11743:26:159","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"expression":{"id":76345,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77378,"src":"11696:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77378_$","typeString":"type(library Gear)"}},"id":76346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11701:18:159","memberName":"CommittedBlockInfo","nodeType":"MemberAccess","referencedDeclaration":76991,"src":"11696:23:159","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_CommittedBlockInfo_$76991_storage_ptr_$","typeString":"type(struct Gear.CommittedBlockInfo storage pointer)"}},"id":76351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11696:74:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBlockInfo_$76991_memory_ptr","typeString":"struct Gear.CommittedBlockInfo memory"}},"src":"11666:104:159","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBlockInfo_$76991_storage","typeString":"struct Gear.CommittedBlockInfo storage ref"}},"id":76353,"nodeType":"ExpressionStatement","src":"11666:104:159"},{"assignments":[76355],"declarations":[{"constant":false,"id":76355,"mutability":"mutable","name":"transitionsHashes","nameLocation":"11794:17:159","nodeType":"VariableDeclaration","scope":76412,"src":"11781:30:159","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":76354,"name":"bytes","nodeType":"ElementaryTypeName","src":"11781:5:159","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":76356,"nodeType":"VariableDeclarationStatement","src":"11781:30:159"},{"body":{"id":76390,"nodeType":"Block","src":"11888:207:159","statements":[{"assignments":[76373],"declarations":[{"constant":false,"id":76373,"mutability":"mutable","name":"stateTransition","nameLocation":"11932:15:159","nodeType":"VariableDeclaration","scope":76390,"src":"11902:45:159","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$77051_calldata_ptr","typeString":"struct Gear.StateTransition"},"typeName":{"id":76372,"nodeType":"UserDefinedTypeName","pathNode":{"id":76371,"name":"Gear.StateTransition","nameLocations":["11902:4:159","11907:15:159"],"nodeType":"IdentifierPath","referencedDeclaration":77051,"src":"11902:20:159"},"referencedDeclaration":77051,"src":"11902:20:159","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$77051_storage_ptr","typeString":"struct Gear.StateTransition"}},"visibility":"internal"}],"id":76378,"initialValue":{"baseExpression":{"expression":{"id":76374,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76318,"src":"11950:16:159","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76977_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":76375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11967:11:159","memberName":"transitions","nodeType":"MemberAccess","referencedDeclaration":76976,"src":"11950:28:159","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$77051_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition calldata[] calldata"}},"id":76377,"indexExpression":{"id":76376,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76358,"src":"11979:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11950:31:159","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$77051_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"nodeType":"VariableDeclarationStatement","src":"11902:79:159"},{"expression":{"id":76388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":76379,"name":"transitionsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76355,"src":"11996:17:159","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":76383,"name":"transitionsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76355,"src":"12029:17:159","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":76385,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76373,"src":"12067:15:159","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$77051_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_StateTransition_$77051_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}],"id":76384,"name":"_doStateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76634,"src":"12048:18:159","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_StateTransition_$77051_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.StateTransition calldata) returns (bytes32)"}},"id":76386,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12048:35:159","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":76381,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12016:5:159","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":76380,"name":"bytes","nodeType":"ElementaryTypeName","src":"12016:5:159","typeDescriptions":{}}},"id":76382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12022:6:159","memberName":"concat","nodeType":"MemberAccess","src":"12016:12:159","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":76387,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12016:68:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"11996:88:159","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":76389,"nodeType":"ExpressionStatement","src":"11996:88:159"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76361,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76358,"src":"11842:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":76362,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76318,"src":"11846:16:159","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76977_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":76363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11863:11:159","memberName":"transitions","nodeType":"MemberAccess","referencedDeclaration":76976,"src":"11846:28:159","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$77051_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition calldata[] calldata"}},"id":76364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11875:6:159","memberName":"length","nodeType":"MemberAccess","src":"11846:35:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11842:39:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76391,"initializationExpression":{"assignments":[76358],"declarations":[{"constant":false,"id":76358,"mutability":"mutable","name":"i","nameLocation":"11835:1:159","nodeType":"VariableDeclaration","scope":76391,"src":"11827:9:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76357,"name":"uint256","nodeType":"ElementaryTypeName","src":"11827:7:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":76360,"initialValue":{"hexValue":"30","id":76359,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11839:1:159","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"11827:13:159"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":76367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"11883:3:159","subExpression":{"id":76366,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76358,"src":"11883:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76368,"nodeType":"ExpressionStatement","src":"11883:3:159"},"nodeType":"ForStatement","src":"11822:273:159"},{"eventCall":{"arguments":[{"expression":{"id":76393,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76318,"src":"12125:16:159","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76977_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":76394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12142:4:159","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":76966,"src":"12125:21:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":76392,"name":"BlockCommitted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73682,"src":"12110:14:159","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":76395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12110:37:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76396,"nodeType":"EmitStatement","src":"12105:42:159"},{"expression":{"arguments":[{"expression":{"id":76399,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76318,"src":"12203:16:159","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76977_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":76400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12220:4:159","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":76966,"src":"12203:21:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":76401,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76318,"src":"12238:16:159","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76977_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":76402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12255:9:159","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":76968,"src":"12238:26:159","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"expression":{"id":76403,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76318,"src":"12278:16:159","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76977_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":76404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12295:22:159","memberName":"previousCommittedBlock","nodeType":"MemberAccess","referencedDeclaration":76970,"src":"12278:39:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":76405,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76318,"src":"12331:16:159","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76977_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":76406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12348:16:159","memberName":"predecessorBlock","nodeType":"MemberAccess","referencedDeclaration":76972,"src":"12331:33:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":76408,"name":"transitionsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76355,"src":"12388:17:159","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":76407,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"12378:9:159","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":76409,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12378:28:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":76397,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77378,"src":"12165:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77378_$","typeString":"type(library Gear)"}},"id":76398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12170:19:159","memberName":"blockCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":77095,"src":"12165:24:159","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint48_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,uint48,bytes32,bytes32,bytes32) pure returns (bytes32)"}},"id":76410,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12165:251:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":76322,"id":76411,"nodeType":"Return","src":"12158:258:159"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_commitBlock","nameLocation":"11106:12:159","parameters":{"id":76319,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76315,"mutability":"mutable","name":"router","nameLocation":"11135:6:159","nodeType":"VariableDeclaration","scope":76413,"src":"11119:22:159","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":76314,"nodeType":"UserDefinedTypeName","pathNode":{"id":76313,"name":"Storage","nameLocations":["11119:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73677,"src":"11119:7:159"},"referencedDeclaration":73677,"src":"11119:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"},{"constant":false,"id":76318,"mutability":"mutable","name":"_blockCommitment","nameLocation":"11173:16:159","nodeType":"VariableDeclaration","scope":76413,"src":"11143:46:159","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76977_calldata_ptr","typeString":"struct Gear.BlockCommitment"},"typeName":{"id":76317,"nodeType":"UserDefinedTypeName","pathNode":{"id":76316,"name":"Gear.BlockCommitment","nameLocations":["11143:4:159","11148:15:159"],"nodeType":"IdentifierPath","referencedDeclaration":76977,"src":"11143:20:159"},"referencedDeclaration":76977,"src":"11143:20:159","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76977_storage_ptr","typeString":"struct Gear.BlockCommitment"}},"visibility":"internal"}],"src":"11118:72:159"},"returnParameters":{"id":76322,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76321,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":76413,"src":"11224:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":76320,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11224:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"11223:9:159"},"scope":76827,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":76634,"nodeType":"FunctionDefinition","src":"12429:2183:159","nodes":[],"body":{"id":76633,"nodeType":"Block","src":"12531:2081:159","nodes":[],"statements":[{"assignments":[76423],"declarations":[{"constant":false,"id":76423,"mutability":"mutable","name":"router","nameLocation":"12557:6:159","nodeType":"VariableDeclaration","scope":76633,"src":"12541:22:159","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":76422,"nodeType":"UserDefinedTypeName","pathNode":{"id":76421,"name":"Storage","nameLocations":["12541:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73677,"src":"12541:7:159"},"referencedDeclaration":73677,"src":"12541:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":76426,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":76424,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76769,"src":"12566:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73677_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":76425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12566:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"12541:34:159"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":76435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":76428,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76423,"src":"12607:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76429,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12614:12:159","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":73676,"src":"12607:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$77029_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":76430,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12627:8:159","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":77024,"src":"12607:28:159","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":76433,"indexExpression":{"expression":{"id":76431,"name":"_stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76416,"src":"12636:16:159","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$77051_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":76432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12653:7:159","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":77036,"src":"12636:24:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12607:54:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":76434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12665:1:159","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12607:59:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"636f756c646e277420706572666f726d207472616e736974696f6e20666f7220756e6b6e6f776e2070726f6772616d","id":76436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12680:49:159","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":76427,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"12586:7:159","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":76437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12586:153:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76438,"nodeType":"ExpressionStatement","src":"12586:153:159"},{"assignments":[76441],"declarations":[{"constant":false,"id":76441,"mutability":"mutable","name":"wrappedVaraActor","nameLocation":"12763:16:159","nodeType":"VariableDeclaration","scope":76633,"src":"12750:29:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$73907","typeString":"contract IWrappedVara"},"typeName":{"id":76440,"nodeType":"UserDefinedTypeName","pathNode":{"id":76439,"name":"IWrappedVara","nameLocations":["12750:12:159"],"nodeType":"IdentifierPath","referencedDeclaration":73907,"src":"12750:12:159"},"referencedDeclaration":73907,"src":"12750:12:159","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$73907","typeString":"contract IWrappedVara"}},"visibility":"internal"}],"id":76447,"initialValue":{"arguments":[{"expression":{"expression":{"id":76443,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76423,"src":"12795:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76444,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12802:13:159","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":73664,"src":"12795:20:159","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$76964_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":76445,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12816:11:159","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":76963,"src":"12795:32:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76442,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73907,"src":"12782:12:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$73907_$","typeString":"type(contract IWrappedVara)"}},"id":76446,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12782:46:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$73907","typeString":"contract IWrappedVara"}},"nodeType":"VariableDeclarationStatement","src":"12750:78:159"},{"expression":{"arguments":[{"expression":{"id":76451,"name":"_stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76416,"src":"12864:16:159","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$77051_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":76452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12881:7:159","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":77036,"src":"12864:24:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":76453,"name":"_stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76416,"src":"12890:16:159","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$77051_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":76454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12907:14:159","memberName":"valueToReceive","nodeType":"MemberAccess","referencedDeclaration":77042,"src":"12890:31:159","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":76448,"name":"wrappedVaraActor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76441,"src":"12838:16:159","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$73907","typeString":"contract IWrappedVara"}},"id":76450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12855:8:159","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":43107,"src":"12838:25:159","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":76455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12838:84:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76456,"nodeType":"ExpressionStatement","src":"12838:84:159"},{"assignments":[76459],"declarations":[{"constant":false,"id":76459,"mutability":"mutable","name":"mirrorActor","nameLocation":"12941:11:159","nodeType":"VariableDeclaration","scope":76633,"src":"12933:19:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$73603","typeString":"contract IMirror"},"typeName":{"id":76458,"nodeType":"UserDefinedTypeName","pathNode":{"id":76457,"name":"IMirror","nameLocations":["12933:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73603,"src":"12933:7:159"},"referencedDeclaration":73603,"src":"12933:7:159","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$73603","typeString":"contract IMirror"}},"visibility":"internal"}],"id":76464,"initialValue":{"arguments":[{"expression":{"id":76461,"name":"_stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76416,"src":"12963:16:159","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$77051_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":76462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12980:7:159","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":77036,"src":"12963:24:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76460,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73603,"src":"12955:7:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$73603_$","typeString":"type(contract IMirror)"}},"id":76463,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12955:33:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$73603","typeString":"contract IMirror"}},"nodeType":"VariableDeclarationStatement","src":"12933:55:159"},{"assignments":[76466],"declarations":[{"constant":false,"id":76466,"mutability":"mutable","name":"valueClaimsBytes","nameLocation":"13012:16:159","nodeType":"VariableDeclaration","scope":76633,"src":"12999:29:159","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":76465,"name":"bytes","nodeType":"ElementaryTypeName","src":"12999:5:159","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":76467,"nodeType":"VariableDeclarationStatement","src":"12999:29:159"},{"body":{"id":76513,"nodeType":"Block","src":"13105:270:159","statements":[{"assignments":[76484],"declarations":[{"constant":false,"id":76484,"mutability":"mutable","name":"claim","nameLocation":"13144:5:159","nodeType":"VariableDeclaration","scope":76513,"src":"13119:30:159","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$77068_calldata_ptr","typeString":"struct Gear.ValueClaim"},"typeName":{"id":76483,"nodeType":"UserDefinedTypeName","pathNode":{"id":76482,"name":"Gear.ValueClaim","nameLocations":["13119:4:159","13124:10:159"],"nodeType":"IdentifierPath","referencedDeclaration":77068,"src":"13119:15:159"},"referencedDeclaration":77068,"src":"13119:15:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$77068_storage_ptr","typeString":"struct Gear.ValueClaim"}},"visibility":"internal"}],"id":76489,"initialValue":{"baseExpression":{"expression":{"id":76485,"name":"_stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76416,"src":"13152:16:159","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$77051_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":76486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13169:11:159","memberName":"valueClaims","nodeType":"MemberAccess","referencedDeclaration":77046,"src":"13152:28:159","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$77068_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValueClaim calldata[] calldata"}},"id":76488,"indexExpression":{"id":76487,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76469,"src":"13181:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13152:31:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$77068_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"nodeType":"VariableDeclarationStatement","src":"13119:64:159"},{"expression":{"arguments":[{"expression":{"id":76493,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76484,"src":"13223:5:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$77068_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":76494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13229:9:159","memberName":"messageId","nodeType":"MemberAccess","referencedDeclaration":77063,"src":"13223:15:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":76495,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76484,"src":"13240:5:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$77068_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":76496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13246:11:159","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":77065,"src":"13240:17:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":76497,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76484,"src":"13259:5:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$77068_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":76498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13265:5:159","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":77067,"src":"13259:11:159","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":76490,"name":"mirrorActor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76459,"src":"13198:11:159","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$73603","typeString":"contract IMirror"}},"id":76492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13210:12:159","memberName":"valueClaimed","nodeType":"MemberAccess","referencedDeclaration":73584,"src":"13198:24:159","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_address_$_t_uint128_$returns$__$","typeString":"function (bytes32,address,uint128) external"}},"id":76499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13198:73:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76500,"nodeType":"ExpressionStatement","src":"13198:73:159"},{"expression":{"id":76511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":76501,"name":"valueClaimsBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76466,"src":"13286:16:159","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":76505,"name":"valueClaimsBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76466,"src":"13318:16:159","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":76508,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76484,"src":"13357:5:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$77068_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_ValueClaim_$77068_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}],"expression":{"id":76506,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77378,"src":"13336:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77378_$","typeString":"type(library Gear)"}},"id":76507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13341:15:159","memberName":"valueClaimBytes","nodeType":"MemberAccess","referencedDeclaration":77377,"src":"13336:20:159","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_ValueClaim_$77068_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (struct Gear.ValueClaim memory) pure returns (bytes memory)"}},"id":76509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13336:27:159","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":76503,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13305:5:159","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":76502,"name":"bytes","nodeType":"ElementaryTypeName","src":"13305:5:159","typeDescriptions":{}}},"id":76504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13311:6:159","memberName":"concat","nodeType":"MemberAccess","src":"13305:12:159","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":76510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13305:59:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"13286:78:159","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":76512,"nodeType":"ExpressionStatement","src":"13286:78:159"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76472,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76469,"src":"13059:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":76473,"name":"_stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76416,"src":"13063:16:159","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$77051_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":76474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13080:11:159","memberName":"valueClaims","nodeType":"MemberAccess","referencedDeclaration":77046,"src":"13063:28:159","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$77068_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValueClaim calldata[] calldata"}},"id":76475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13092:6:159","memberName":"length","nodeType":"MemberAccess","src":"13063:35:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13059:39:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76514,"initializationExpression":{"assignments":[76469],"declarations":[{"constant":false,"id":76469,"mutability":"mutable","name":"i","nameLocation":"13052:1:159","nodeType":"VariableDeclaration","scope":76514,"src":"13044:9:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76468,"name":"uint256","nodeType":"ElementaryTypeName","src":"13044:7:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":76471,"initialValue":{"hexValue":"30","id":76470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13056:1:159","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13044:13:159"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":76478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"13100:3:159","subExpression":{"id":76477,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76469,"src":"13100:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76479,"nodeType":"ExpressionStatement","src":"13100:3:159"},"nodeType":"ForStatement","src":"13039:336:159"},{"assignments":[76516],"declarations":[{"constant":false,"id":76516,"mutability":"mutable","name":"messagesHashes","nameLocation":"13398:14:159","nodeType":"VariableDeclaration","scope":76633,"src":"13385:27:159","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":76515,"name":"bytes","nodeType":"ElementaryTypeName","src":"13385:5:159","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":76517,"nodeType":"VariableDeclarationStatement","src":"13385:27:159"},{"body":{"id":76590,"nodeType":"Block","src":"13486:624:159","statements":[{"assignments":[76534],"declarations":[{"constant":false,"id":76534,"mutability":"mutable","name":"message","nameLocation":"13522:7:159","nodeType":"VariableDeclaration","scope":76590,"src":"13500:29:159","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$77015_calldata_ptr","typeString":"struct Gear.Message"},"typeName":{"id":76533,"nodeType":"UserDefinedTypeName","pathNode":{"id":76532,"name":"Gear.Message","nameLocations":["13500:4:159","13505:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":77015,"src":"13500:12:159"},"referencedDeclaration":77015,"src":"13500:12:159","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$77015_storage_ptr","typeString":"struct Gear.Message"}},"visibility":"internal"}],"id":76539,"initialValue":{"baseExpression":{"expression":{"id":76535,"name":"_stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76416,"src":"13532:16:159","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$77051_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":76536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13549:8:159","memberName":"messages","nodeType":"MemberAccess","referencedDeclaration":77050,"src":"13532:25:159","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$77015_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.Message calldata[] calldata"}},"id":76538,"indexExpression":{"id":76537,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76519,"src":"13558:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13532:28:159","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$77015_calldata_ptr","typeString":"struct Gear.Message calldata"}},"nodeType":"VariableDeclarationStatement","src":"13500:60:159"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":76544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":76540,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76534,"src":"13579:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$77015_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":76541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13587:12:159","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":77014,"src":"13579:20:159","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$77034_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":76542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13600:2:159","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":77031,"src":"13579:23:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":76543,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13606:1:159","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13579:28:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":76576,"nodeType":"Block","src":"13736:277:159","statements":[{"expression":{"arguments":[{"expression":{"id":76562,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76534,"src":"13797:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$77015_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":76563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13805:11:159","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":77007,"src":"13797:19:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":76564,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76534,"src":"13838:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$77015_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":76565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13846:7:159","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":77009,"src":"13838:15:159","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":76566,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76534,"src":"13875:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$77015_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":76567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13883:5:159","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":77011,"src":"13875:13:159","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"expression":{"id":76568,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76534,"src":"13910:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$77015_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":76569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13918:12:159","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":77014,"src":"13910:20:159","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$77034_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":76570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13931:2:159","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":77031,"src":"13910:23:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"expression":{"id":76571,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76534,"src":"13955:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$77015_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":76572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13963:12:159","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":77014,"src":"13955:20:159","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$77034_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":76573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13976:4:159","memberName":"code","nodeType":"MemberAccess","referencedDeclaration":77033,"src":"13955:25:159","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":76559,"name":"mirrorActor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76459,"src":"13754:11:159","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$73603","typeString":"contract IMirror"}},"id":76561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13766:9:159","memberName":"replySent","nodeType":"MemberAccess","referencedDeclaration":73575,"src":"13754:21:159","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":76574,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13754:244:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76575,"nodeType":"ExpressionStatement","src":"13754:244:159"}]},"id":76577,"nodeType":"IfStatement","src":"13575:438:159","trueBody":{"id":76558,"nodeType":"Block","src":"13609:121:159","statements":[{"expression":{"arguments":[{"expression":{"id":76548,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76534,"src":"13651:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$77015_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":76549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13659:2:159","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":77005,"src":"13651:10:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":76550,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76534,"src":"13663:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$77015_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":76551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13671:11:159","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":77007,"src":"13663:19:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":76552,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76534,"src":"13684:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$77015_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":76553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13692:7:159","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":77009,"src":"13684:15:159","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":76554,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76534,"src":"13701:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$77015_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":76555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13709:5:159","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":77011,"src":"13701:13:159","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":76545,"name":"mirrorActor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76459,"src":"13627:11:159","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$73603","typeString":"contract IMirror"}},"id":76547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13639:11:159","memberName":"messageSent","nodeType":"MemberAccess","referencedDeclaration":73562,"src":"13627:23:159","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":76556,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13627:88:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76557,"nodeType":"ExpressionStatement","src":"13627:88:159"}]}},{"expression":{"id":76588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":76578,"name":"messagesHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76516,"src":"14027:14:159","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":76582,"name":"messagesHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76516,"src":"14057:14:159","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":76585,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76534,"src":"14090:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$77015_calldata_ptr","typeString":"struct Gear.Message calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Message_$77015_calldata_ptr","typeString":"struct Gear.Message calldata"}],"expression":{"id":76583,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77378,"src":"14073:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77378_$","typeString":"type(library Gear)"}},"id":76584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14078:11:159","memberName":"messageHash","nodeType":"MemberAccess","referencedDeclaration":77199,"src":"14073:16:159","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Message_$77015_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.Message memory) pure returns (bytes32)"}},"id":76586,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14073:25:159","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":76580,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14044:5:159","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":76579,"name":"bytes","nodeType":"ElementaryTypeName","src":"14044:5:159","typeDescriptions":{}}},"id":76581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14050:6:159","memberName":"concat","nodeType":"MemberAccess","src":"14044:12:159","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":76587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14044:55:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"14027:72:159","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":76589,"nodeType":"ExpressionStatement","src":"14027:72:159"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76522,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76519,"src":"13443:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":76523,"name":"_stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76416,"src":"13447:16:159","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$77051_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":76524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13464:8:159","memberName":"messages","nodeType":"MemberAccess","referencedDeclaration":77050,"src":"13447:25:159","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$77015_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.Message calldata[] calldata"}},"id":76525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13473:6:159","memberName":"length","nodeType":"MemberAccess","src":"13447:32:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13443:36:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76591,"initializationExpression":{"assignments":[76519],"declarations":[{"constant":false,"id":76519,"mutability":"mutable","name":"i","nameLocation":"13436:1:159","nodeType":"VariableDeclaration","scope":76591,"src":"13428:9:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76518,"name":"uint256","nodeType":"ElementaryTypeName","src":"13428:7:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":76521,"initialValue":{"hexValue":"30","id":76520,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13440:1:159","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13428:13:159"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":76528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"13481:3:159","subExpression":{"id":76527,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76519,"src":"13481:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76529,"nodeType":"ExpressionStatement","src":"13481:3:159"},"nodeType":"ForStatement","src":"13423:687:159"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":76598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":76592,"name":"_stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76416,"src":"14124:16:159","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$77051_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":76593,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14141:9:159","memberName":"inheritor","nodeType":"MemberAccess","referencedDeclaration":77040,"src":"14124:26:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":76596,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14162:1:159","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":76595,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14154:7:159","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":76594,"name":"address","nodeType":"ElementaryTypeName","src":"14154:7:159","typeDescriptions":{}}},"id":76597,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14154:10:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"14124:40:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76607,"nodeType":"IfStatement","src":"14120:123:159","trueBody":{"id":76606,"nodeType":"Block","src":"14166:77:159","statements":[{"expression":{"arguments":[{"expression":{"id":76602,"name":"_stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76416,"src":"14205:16:159","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$77051_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":76603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14222:9:159","memberName":"inheritor","nodeType":"MemberAccess","referencedDeclaration":77040,"src":"14205:26:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":76599,"name":"mirrorActor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76459,"src":"14180:11:159","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$73603","typeString":"contract IMirror"}},"id":76601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14192:12:159","memberName":"setInheritor","nodeType":"MemberAccess","referencedDeclaration":73551,"src":"14180:24:159","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":76604,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14180:52:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76605,"nodeType":"ExpressionStatement","src":"14180:52:159"}]}},{"expression":{"arguments":[{"expression":{"id":76611,"name":"_stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76416,"src":"14277:16:159","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$77051_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":76612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14294:12:159","memberName":"newStateHash","nodeType":"MemberAccess","referencedDeclaration":77038,"src":"14277:29:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":76608,"name":"mirrorActor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76459,"src":"14253:11:159","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$73603","typeString":"contract IMirror"}},"id":76610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14265:11:159","memberName":"updateState","nodeType":"MemberAccess","referencedDeclaration":73546,"src":"14253:23:159","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32) external"}},"id":76613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14253:54:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76614,"nodeType":"ExpressionStatement","src":"14253:54:159"},{"expression":{"arguments":[{"expression":{"id":76617,"name":"_stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76416,"src":"14363:16:159","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$77051_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":76618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14380:7:159","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":77036,"src":"14363:24:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":76619,"name":"_stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76416,"src":"14401:16:159","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$77051_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":76620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14418:12:159","memberName":"newStateHash","nodeType":"MemberAccess","referencedDeclaration":77038,"src":"14401:29:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":76621,"name":"_stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76416,"src":"14444:16:159","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$77051_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":76622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14461:9:159","memberName":"inheritor","nodeType":"MemberAccess","referencedDeclaration":77040,"src":"14444:26:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":76623,"name":"_stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76416,"src":"14484:16:159","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$77051_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":76624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14501:14:159","memberName":"valueToReceive","nodeType":"MemberAccess","referencedDeclaration":77042,"src":"14484:31:159","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"arguments":[{"id":76626,"name":"valueClaimsBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76466,"src":"14539:16:159","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":76625,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"14529:9:159","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":76627,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14529:27:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":76629,"name":"messagesHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76516,"src":"14580:14:159","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":76628,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"14570:9:159","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":76630,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14570:25:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":76615,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77378,"src":"14325:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77378_$","typeString":"type(library Gear)"}},"id":76616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14330:19:159","memberName":"stateTransitionHash","nodeType":"MemberAccess","referencedDeclaration":77253,"src":"14325:24:159","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_bytes32_$_t_address_$_t_uint128_$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (address,bytes32,address,uint128,bytes32,bytes32) pure returns (bytes32)"}},"id":76631,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14325:280:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":76420,"id":76632,"nodeType":"Return","src":"14318:287:159"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_doStateTransition","nameLocation":"12438:18:159","parameters":{"id":76417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76416,"mutability":"mutable","name":"_stateTransition","nameLocation":"12487:16:159","nodeType":"VariableDeclaration","scope":76634,"src":"12457:46:159","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$77051_calldata_ptr","typeString":"struct Gear.StateTransition"},"typeName":{"id":76415,"nodeType":"UserDefinedTypeName","pathNode":{"id":76414,"name":"Gear.StateTransition","nameLocations":["12457:4:159","12462:15:159"],"nodeType":"IdentifierPath","referencedDeclaration":77051,"src":"12457:20:159"},"referencedDeclaration":77051,"src":"12457:20:159","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$77051_storage_ptr","typeString":"struct Gear.StateTransition"}},"visibility":"internal"}],"src":"12456:48:159"},"returnParameters":{"id":76420,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76419,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":76634,"src":"12522:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":76418,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12522:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"12521:9:159"},"scope":76827,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":76665,"nodeType":"FunctionDefinition","src":"14618:247:159","nodes":[],"body":{"id":76664,"nodeType":"Block","src":"14690:175:159","nodes":[],"statements":[{"assignments":[76643],"declarations":[{"constant":false,"id":76643,"mutability":"mutable","name":"success","nameLocation":"14705:7:159","nodeType":"VariableDeclaration","scope":76664,"src":"14700:12:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":76642,"name":"bool","nodeType":"ElementaryTypeName","src":"14700:4:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":76658,"initialValue":{"arguments":[{"expression":{"id":76650,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"14769:3:159","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":76651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14773:6:159","memberName":"sender","nodeType":"MemberAccess","src":"14769:10:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":76654,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"14789:4:159","typeDescriptions":{"typeIdentifier":"t_contract$_Router_$76827","typeString":"contract Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Router_$76827","typeString":"contract Router"}],"id":76653,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14781:7:159","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":76652,"name":"address","nodeType":"ElementaryTypeName","src":"14781:7:159","typeDescriptions":{}}},"id":76655,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14781:13:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":76656,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76639,"src":"14796:6:159","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":{"expression":{"id":76645,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76637,"src":"14722:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76646,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14729:13:159","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":73664,"src":"14722:20:159","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$76964_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":76647,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14743:11:159","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":76963,"src":"14722:32:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76644,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43140,"src":"14715:6:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$43140_$","typeString":"type(contract IERC20)"}},"id":76648,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14715:40:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$43140","typeString":"contract IERC20"}},"id":76649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14756:12:159","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":43139,"src":"14715:53:159","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":76657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14715:88:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"14700:103:159"},{"expression":{"arguments":[{"id":76660,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76643,"src":"14822:7:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6661696c656420746f207265747269657665205756617261","id":76661,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14831:26:159","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":76659,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"14814:7:159","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":76662,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14814:44:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76663,"nodeType":"ExpressionStatement","src":"14814:44:159"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_retrieveValue","nameLocation":"14627:14:159","parameters":{"id":76640,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76637,"mutability":"mutable","name":"router","nameLocation":"14658:6:159","nodeType":"VariableDeclaration","scope":76665,"src":"14642:22:159","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":76636,"nodeType":"UserDefinedTypeName","pathNode":{"id":76635,"name":"Storage","nameLocations":["14642:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73677,"src":"14642:7:159"},"referencedDeclaration":73677,"src":"14642:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"},{"constant":false,"id":76639,"mutability":"mutable","name":"_value","nameLocation":"14674:6:159","nodeType":"VariableDeclaration","scope":76665,"src":"14666:14:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":76638,"name":"uint128","nodeType":"ElementaryTypeName","src":"14666:7:159","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"14641:40:159"},"returnParameters":{"id":76641,"nodeType":"ParameterList","parameters":[],"src":"14690:0:159"},"scope":76827,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":76718,"nodeType":"FunctionDefinition","src":"14871:406:159","nodes":[],"body":{"id":76717,"nodeType":"Block","src":"14957:320:159","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"expression":{"id":76675,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76668,"src":"14975:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76676,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14982:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73668,"src":"14975:25:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$77061_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":76677,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15001:10:159","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":77056,"src":"14975:36:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":76678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15012:6:159","memberName":"length","nodeType":"MemberAccess","src":"14975:43:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":76679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15022:1:159","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14975:48:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"72656d6f76652070726576696f75732076616c696461746f7273206669727374","id":76681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15025:34:159","typeDescriptions":{"typeIdentifier":"t_stringliteral_9f6a03e209138d575bb162b4e280f18514af00259c854f4d737ad74345b1a440","typeString":"literal_string \"remove previous validators first\""},"value":"remove previous validators first"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9f6a03e209138d575bb162b4e280f18514af00259c854f4d737ad74345b1a440","typeString":"literal_string \"remove previous validators first\""}],"id":76674,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"14967:7:159","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":76682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14967:93:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76683,"nodeType":"ExpressionStatement","src":"14967:93:159"},{"body":{"id":76707,"nodeType":"Block","src":"15120:90:159","statements":[{"expression":{"id":76705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"expression":{"id":76695,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76668,"src":"15134:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76701,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15141:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73668,"src":"15134:25:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$77061_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":76702,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15160:16:159","memberName":"validatorsKeyMap","nodeType":"MemberAccess","referencedDeclaration":77060,"src":"15134:42:159","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":76703,"indexExpression":{"baseExpression":{"id":76698,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76671,"src":"15177:11:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":76700,"indexExpression":{"id":76699,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76685,"src":"15189:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15177:14:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"15134:58:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":76704,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"15195:4:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"15134:65:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76706,"nodeType":"ExpressionStatement","src":"15134:65:159"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76688,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76685,"src":"15091:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":76689,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76671,"src":"15095:11:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":76690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15107:6:159","memberName":"length","nodeType":"MemberAccess","src":"15095:18:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15091:22:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76708,"initializationExpression":{"assignments":[76685],"declarations":[{"constant":false,"id":76685,"mutability":"mutable","name":"i","nameLocation":"15084:1:159","nodeType":"VariableDeclaration","scope":76708,"src":"15076:9:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76684,"name":"uint256","nodeType":"ElementaryTypeName","src":"15076:7:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":76687,"initialValue":{"hexValue":"30","id":76686,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15088:1:159","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"15076:13:159"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":76693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"15115:3:159","subExpression":{"id":76692,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76685,"src":"15115:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76694,"nodeType":"ExpressionStatement","src":"15115:3:159"},"nodeType":"ForStatement","src":"15071:139:159"},{"expression":{"id":76715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":76709,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76668,"src":"15220:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76712,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15227:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73668,"src":"15220:25:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$77061_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":76713,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"15246:10:159","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":77056,"src":"15220:36:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":76714,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76671,"src":"15259:11:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"15220:50:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":76716,"nodeType":"ExpressionStatement","src":"15220:50:159"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_setValidators","nameLocation":"14880:14:159","parameters":{"id":76672,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76668,"mutability":"mutable","name":"router","nameLocation":"14911:6:159","nodeType":"VariableDeclaration","scope":76718,"src":"14895:22:159","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":76667,"nodeType":"UserDefinedTypeName","pathNode":{"id":76666,"name":"Storage","nameLocations":["14895:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73677,"src":"14895:7:159"},"referencedDeclaration":73677,"src":"14895:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"},{"constant":false,"id":76671,"mutability":"mutable","name":"_validators","nameLocation":"14936:11:159","nodeType":"VariableDeclaration","scope":76718,"src":"14919:28:159","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":76669,"name":"address","nodeType":"ElementaryTypeName","src":"14919:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":76670,"nodeType":"ArrayTypeName","src":"14919:9:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"14894:54:159"},"returnParameters":{"id":76673,"nodeType":"ParameterList","parameters":[],"src":"14957:0:159"},"scope":76827,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":76756,"nodeType":"FunctionDefinition","src":"15283:318:159","nodes":[],"body":{"id":76755,"nodeType":"Block","src":"15342:259:159","nodes":[],"statements":[{"body":{"id":76748,"nodeType":"Block","src":"15426:115:159","statements":[{"expression":{"id":76746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"15440:90:159","subExpression":{"baseExpression":{"expression":{"expression":{"id":76737,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76721,"src":"15447:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76738,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15454:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73668,"src":"15447:25:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$77061_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":76739,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15473:16:159","memberName":"validatorsKeyMap","nodeType":"MemberAccess","referencedDeclaration":77060,"src":"15447:42:159","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":76745,"indexExpression":{"baseExpression":{"expression":{"expression":{"id":76740,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76721,"src":"15490:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76741,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15497:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73668,"src":"15490:25:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$77061_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":76742,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15516:10:159","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":77056,"src":"15490:36:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":76744,"indexExpression":{"id":76743,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76725,"src":"15527:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15490:39:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"15447:83:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76747,"nodeType":"ExpressionStatement","src":"15440:90:159"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76728,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76725,"src":"15372:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"expression":{"id":76729,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76721,"src":"15376:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76730,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15383:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73668,"src":"15376:25:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$77061_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":76731,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15402:10:159","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":77056,"src":"15376:36:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":76732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15413:6:159","memberName":"length","nodeType":"MemberAccess","src":"15376:43:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15372:47:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76749,"initializationExpression":{"assignments":[76725],"declarations":[{"constant":false,"id":76725,"mutability":"mutable","name":"i","nameLocation":"15365:1:159","nodeType":"VariableDeclaration","scope":76749,"src":"15357:9:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76724,"name":"uint256","nodeType":"ElementaryTypeName","src":"15357:7:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":76727,"initialValue":{"hexValue":"30","id":76726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15369:1:159","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"15357:13:159"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":76735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"15421:3:159","subExpression":{"id":76734,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76725,"src":"15421:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76736,"nodeType":"ExpressionStatement","src":"15421:3:159"},"nodeType":"ForStatement","src":"15352:189:159"},{"expression":{"id":76753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"15551:43:159","subExpression":{"expression":{"expression":{"id":76750,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76721,"src":"15558:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76751,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15565:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73668,"src":"15558:25:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$77061_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":76752,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"15584:10:159","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":77056,"src":"15558:36:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76754,"nodeType":"ExpressionStatement","src":"15551:43:159"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_removeValidators","nameLocation":"15292:17:159","parameters":{"id":76722,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76721,"mutability":"mutable","name":"router","nameLocation":"15326:6:159","nodeType":"VariableDeclaration","scope":76756,"src":"15310:22:159","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":76720,"nodeType":"UserDefinedTypeName","pathNode":{"id":76719,"name":"Storage","nameLocations":["15310:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73677,"src":"15310:7:159"},"referencedDeclaration":73677,"src":"15310:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"src":"15309:24:159"},"returnParameters":{"id":76723,"nodeType":"ParameterList","parameters":[],"src":"15342:0:159"},"scope":76827,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":76769,"nodeType":"FunctionDefinition","src":"15607:192:159","nodes":[],"body":{"id":76768,"nodeType":"Block","src":"15672:127:159","nodes":[],"statements":[{"assignments":[76763],"declarations":[{"constant":false,"id":76763,"mutability":"mutable","name":"slot","nameLocation":"15690:4:159","nodeType":"VariableDeclaration","scope":76768,"src":"15682:12:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":76762,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15682:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":76766,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":76764,"name":"_getStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76781,"src":"15697:15:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":76765,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15697:17:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"15682:32:159"},{"AST":{"nativeSrc":"15750:43:159","nodeType":"YulBlock","src":"15750:43:159","statements":[{"nativeSrc":"15764:19:159","nodeType":"YulAssignment","src":"15764:19:159","value":{"name":"slot","nativeSrc":"15779:4:159","nodeType":"YulIdentifier","src":"15779:4:159"},"variableNames":[{"name":"router.slot","nativeSrc":"15764:11:159","nodeType":"YulIdentifier","src":"15764:11:159"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":76760,"isOffset":false,"isSlot":true,"src":"15764:11:159","suffix":"slot","valueSize":1},{"declaration":76763,"isOffset":false,"isSlot":false,"src":"15779:4:159","valueSize":1}],"flags":["memory-safe"],"id":76767,"nodeType":"InlineAssembly","src":"15725:68:159"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_router","nameLocation":"15616:7:159","parameters":{"id":76757,"nodeType":"ParameterList","parameters":[],"src":"15623:2:159"},"returnParameters":{"id":76761,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76760,"mutability":"mutable","name":"router","nameLocation":"15664:6:159","nodeType":"VariableDeclaration","scope":76769,"src":"15648:22:159","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":76759,"nodeType":"UserDefinedTypeName","pathNode":{"id":76758,"name":"Storage","nameLocations":["15648:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73677,"src":"15648:7:159"},"referencedDeclaration":73677,"src":"15648:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73677_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"src":"15647:24:159"},"scope":76827,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":76781,"nodeType":"FunctionDefinition","src":"15805:128:159","nodes":[],"body":{"id":76780,"nodeType":"Block","src":"15863:70:159","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":76776,"name":"SLOT_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75290,"src":"15907:12:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":76774,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44581,"src":"15880:11:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$44581_$","typeString":"type(library StorageSlot)"}},"id":76775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15892:14:159","memberName":"getBytes32Slot","nodeType":"MemberAccess","referencedDeclaration":44319,"src":"15880:26:159","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Bytes32Slot_$44274_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.Bytes32Slot storage pointer)"}},"id":76777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15880:40:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$44274_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot storage pointer"}},"id":76778,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15921:5:159","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":44273,"src":"15880:46:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":76773,"id":76779,"nodeType":"Return","src":"15873:53:159"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_getStorageSlot","nameLocation":"15814:15:159","parameters":{"id":76770,"nodeType":"ParameterList","parameters":[],"src":"15829:2:159"},"returnParameters":{"id":76773,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76772,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":76781,"src":"15854:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":76771,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15854:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"15853:9:159"},"scope":76827,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":76826,"nodeType":"FunctionDefinition","src":"15939:252:159","nodes":[],"body":{"id":76825,"nodeType":"Block","src":"16007:184:159","nodes":[],"statements":[{"assignments":[76789],"declarations":[{"constant":false,"id":76789,"mutability":"mutable","name":"slot","nameLocation":"16025:4:159","nodeType":"VariableDeclaration","scope":76825,"src":"16017:12:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":76788,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16017:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":76815,"initialValue":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":76814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"arguments":[{"id":76798,"name":"namespace","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76783,"src":"16077:9:159","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":76797,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16071:5:159","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":76796,"name":"bytes","nodeType":"ElementaryTypeName","src":"16071:5:159","typeDescriptions":{}}},"id":76799,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16071:16:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":76795,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"16061:9:159","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":76800,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16061:27:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":76794,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16053:7:159","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":76793,"name":"uint256","nodeType":"ElementaryTypeName","src":"16053:7:159","typeDescriptions":{}}},"id":76801,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16053:36:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":76802,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16092:1:159","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"16053:40:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":76791,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"16042:3:159","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":76792,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16046:6:159","memberName":"encode","nodeType":"MemberAccess","src":"16042:10:159","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":76804,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16042:52:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":76790,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"16032:9:159","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":76805,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16032:63:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":76813,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"16098:23:159","subExpression":{"arguments":[{"arguments":[{"hexValue":"30786666","id":76810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16115:4:159","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":76809,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16107:7:159","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":76808,"name":"uint256","nodeType":"ElementaryTypeName","src":"16107:7:159","typeDescriptions":{}}},"id":76811,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16107:13:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":76807,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16099:7:159","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":76806,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16099:7:159","typeDescriptions":{}}},"id":76812,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16099:22:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"16032:89:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"16017:104:159"},{"expression":{"id":76823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":76819,"name":"SLOT_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75290,"src":"16158:12:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":76816,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44581,"src":"16131:11:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$44581_$","typeString":"type(library StorageSlot)"}},"id":76818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16143:14:159","memberName":"getBytes32Slot","nodeType":"MemberAccess","referencedDeclaration":44319,"src":"16131:26:159","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Bytes32Slot_$44274_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.Bytes32Slot storage pointer)"}},"id":76820,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16131:40:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$44274_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot storage pointer"}},"id":76821,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"16172:5:159","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":44273,"src":"16131:46:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":76822,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76789,"src":"16180:4:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"16131:53:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":76824,"nodeType":"ExpressionStatement","src":"16131:53:159"}]},"implemented":true,"kind":"function","modifiers":[{"id":76786,"kind":"modifierInvocation","modifierName":{"id":76785,"name":"onlyOwner","nameLocations":["15997:9:159"],"nodeType":"IdentifierPath","referencedDeclaration":39282,"src":"15997:9:159"},"nodeType":"ModifierInvocation","src":"15997:9:159"}],"name":"_setStorageSlot","nameLocation":"15948:15:159","parameters":{"id":76784,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76783,"mutability":"mutable","name":"namespace","nameLocation":"15978:9:159","nodeType":"VariableDeclaration","scope":76826,"src":"15964:23:159","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":76782,"name":"string","nodeType":"ElementaryTypeName","src":"15964:6:159","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"15963:25:159"},"returnParameters":{"id":76787,"nodeType":"ParameterList","parameters":[],"src":"16007:0:159"},"scope":76827,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":75282,"name":"IRouter","nameLocations":["767:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73896,"src":"767:7:159"},"id":75283,"nodeType":"InheritanceSpecifier","src":"767:7:159"},{"baseName":{"id":75284,"name":"OwnableUpgradeable","nameLocations":["776:18:159"],"nodeType":"IdentifierPath","referencedDeclaration":39387,"src":"776:18:159"},"id":75285,"nodeType":"InheritanceSpecifier","src":"776:18:159"},{"baseName":{"id":75286,"name":"ReentrancyGuardTransient","nameLocations":["796:24:159"],"nodeType":"IdentifierPath","referencedDeclaration":44045,"src":"796:24:159"},"id":75287,"nodeType":"InheritanceSpecifier","src":"796:24:159"}],"canonicalName":"Router","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[76827,44045,39387,40535,39641,73896],"name":"Router","nameLocation":"757:6:159","scope":76828,"usedErrors":[39223,39228,39404,39407,43912,43918,43989,44912,44917,44922],"usedEvents":[39234,39412,73682,73689,73696,73703,73710,73713,73716]}],"license":"UNLICENSED"},"id":159} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"areValidators","inputs":[{"name":"_validators","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"codeState","inputs":[{"name":"_codeId","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint8","internalType":"enum Gear.CodeState"}],"stateMutability":"view"},{"type":"function","name":"codesStates","inputs":[{"name":"_codesIds","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"","type":"uint8[]","internalType":"enum Gear.CodeState[]"}],"stateMutability":"view"},{"type":"function","name":"commitBlocks","inputs":[{"name":"_blockCommitments","type":"tuple[]","internalType":"struct Gear.BlockCommitment[]","components":[{"name":"hash","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"},{"name":"previousCommittedBlock","type":"bytes32","internalType":"bytes32"},{"name":"predecessorBlock","type":"bytes32","internalType":"bytes32"},{"name":"transitions","type":"tuple[]","internalType":"struct Gear.StateTransition[]","components":[{"name":"actorId","type":"address","internalType":"address"},{"name":"newStateHash","type":"bytes32","internalType":"bytes32"},{"name":"inheritor","type":"address","internalType":"address"},{"name":"valueToReceive","type":"uint128","internalType":"uint128"},{"name":"valueClaims","type":"tuple[]","internalType":"struct Gear.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 Gear.Message[]","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 Gear.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":"_codeCommitments","type":"tuple[]","internalType":"struct Gear.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":"computeSettings","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct Gear.ComputationSettings","components":[{"name":"threshold","type":"uint64","internalType":"uint64"},{"name":"wvaraPerSecond","type":"uint128","internalType":"uint128"}]}],"stateMutability":"view"},{"type":"function","name":"createProgram","inputs":[{"name":"_codeId","type":"bytes32","internalType":"bytes32"},{"name":"_salt","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"createProgramWithDecoder","inputs":[{"name":"_decoderImpl","type":"address","internalType":"address"},{"name":"_codeId","type":"bytes32","internalType":"bytes32"},{"name":"_salt","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"genesisBlockHash","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_owner","type":"address","internalType":"address"},{"name":"_mirror","type":"address","internalType":"address"},{"name":"_mirrorProxy","type":"address","internalType":"address"},{"name":"_wrappedVara","type":"address","internalType":"address"},{"name":"_validators","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isValidator","inputs":[{"name":"_validator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"latestCommittedBlockHash","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"lookupGenesisHash","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mirrorImpl","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"mirrorProxyImpl","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":"_programId","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"programsCodeIds","inputs":[{"name":"_programsIds","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":"setMirror","inputs":[{"name":"newMirror","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"signingThresholdPercentage","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"validatedCodesCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"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":"wrappedVara","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"BlockCommitted","inputs":[{"name":"hash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"CodeGotValidated","inputs":[{"name":"codeId","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":"ComputationSettingsChanged","inputs":[{"name":"threshold","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"wvaraPerSecond","type":"uint128","indexed":false,"internalType":"uint128"}],"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":"ValidatorsChanged","inputs":[],"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":"0x6080806040523460aa575f5160206127725f395f51905f525460ff8160401c16609b576002600160401b03196001600160401b038216016049575b6040516126c390816100af8239f35b6001600160401b0319166001600160401b039081175f5160206127725f395f51905f525581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80603a565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe6080806040526004361015610012575f80fd5b5f905f3560e01c9081627a32e714611bff5750806301b1d1561461149f5780631c149d8a1461134657806328e24b3d1461131c5780633d43b418146112ca578063527de0f91461124857806365ecfea21461120f5780636c2eb35014610f62578063715018a614610ef957806382bdeaad14610de157806384d22a4f14610d7857806388f50cf014610d3f5780638b1edf1e14610c785780638da5cb5b14610c435780638f381dbe14610bfd5780639067088e14610bb457806396a2ddfa14610b86578063baaf020114610a89578063c13911e814610a45578063c9f16a1114610a17578063ca1e78191461099e578063e6fabc0914610965578063e7006a741461084c578063e97d3eb31461061d578063ed612f8c146105ef578063edc87225146105ba578063efd81abc14610588578063f2fde38b14610560578063f8453e7c146101b75763facd743b14610167575f80fd5b346101b45760203660031901126101b457610180611c6f565b60095f51602061264e5f395f51905f5254019060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b80fd5b50346101b45760a03660031901126101b4576101d1611c6f565b6024356001600160a01b038116919082900361055c576044356001600160a01b0381169290839003610558576064356001600160a01b03811690819003610554576084356001600160401b03811161055057610231903690600401611c29565b915f51602061266e5f395f51905f52549460ff8660401c1615956001600160401b03811680159081610548575b600114908161053e575b159081610535575b506105265767ffffffffffffffff1981166001175f51602061266e5f395f51905f52556102b49190876104fa575b506102a7612483565b6102af612483565b611f5b565b60409586516102c38882611d62565b6017815260208101907f726f757465722e73746f726167652e526f75746572563100000000000000000082526102f7612129565b5190205f1981019081116104e657875190602082019081526020825261031d8983611d62565b60ff19915190201694855f51602061264e5f395f51905f525561033e612290565b80518755600187019063ffffffff60208201511669ffffffffffff000000008b845493015160201b169169ffffffffffffffffffff1916171790558288805161038681611d47565b8381526020810185905201526004860180546001600160a01b03199081166001600160a01b0393841617909155600587018054821693831693909317909255600686018054909216921691909117905560078301805461ffff1916611a0a1790556103f082611e4f565b916103fd86519384611d62565b808352602083019060051b8201913683116104e257905b8282106104ca575050509061042b600a92826122d5565b610433611e9e565b506509184e72a0006020855161044881611d18565b639502f900815201520180546001600160c01b0319166d09184e72a000000000009502f900179055610478575080f35b60207fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29160ff60401b195f51602061266e5f395f51905f5254165f51602061266e5f395f51905f52555160018152a180f35b602080916104d784611c85565b815201910190610414565b8780fd5b634e487b7160e01b89526011600452602489fd5b68ffffffffffffffffff191668010000000000000001175f51602061266e5f395f51905f52555f61029e565b63f92ee8a960e01b8952600489fd5b9050155f610270565b303b159150610268565b88915061025e565b8580fd5b8480fd5b8380fd5b8280fd5b50346101b45760203660031901126101b45761058561057d611c6f565b6102af612129565b80f35b50346101b457806003193601126101b457602061ffff60075f51602061264e5f395f51905f5254015416604051908152f35b50346101b457806003193601126101b45760206105e760075f51602061264e5f395f51905f5254016123fc565b604051908152f35b50346101b457806003193601126101b457602060085f51602061264e5f395f51905f52540154604051908152f35b50346101b45760403660031901126101b457600435906001600160401b0382116101b457366023830112156101b4578160040135916001600160401b038311610848573660248460061b83010111610848576024356001600160401b03811161055c579061069084923690600401611c29565b935f51602061264e5f395f51905f5254926106ad84541515611ca6565b6060958293600b8601975b8786101561082b578560061b84016024810135918287528a60205260ff6040882054166003811015610817576001036107b4576001926107676044610794940161070181611f2c565b1561079c57828a528d60205260408a20600260ff19825416179055600e8c0161072a8154611f39565b90555b61073681611f2c565b15157f460119a8f69a33ed127de517d5ea464e958ce23ef19e4420a8b92bf780bbc2c96020604051868152a2611f2c565b6040519060208201928352151560f81b60408201526021815261078b604182611d62565b51902090611d83565b9501946106b8565b828a528d60205260408a2060ff19815416905561072d565b60405162461bcd60e51b815260206004820152603560248201527f636f6465206d7573742062652072657175657374656420666f722076616c6964604482015274185d1a5bdb881d1bc818994818dbdb5b5a5d1d1959605a1b6064820152608490fd5b634e487b7160e01b88526021600452602488fd5b84926105859288610843936020815191012090611fdf565b611db2565b5080fd5b50346101b45760603660031901126101b457610866611c6f565b602435906108ae6044359161087b838561215c565b93604051936020850191825260408501526040845261089b606085611d62565b92519092206001600160a01b0392612548565b1690813b1561055c5760405163204a7f0760e21b81528390818160048183885af1801561095a57610945575b50506001600160a01b031690813b1561055c576040519063485cc95560e01b82523360048301526024820152828160448183865af1801561093a57610925575b602082604051908152f35b610930838092611d62565b610848578161091a565b6040513d85823e3d90fd5b8161094f91611d62565b61055c57825f6108da565b6040513d84823e3d90fd5b50346101b457806003193601126101b4575f51602061264e5f395f51905f5254600401546040516001600160a01b039091168152602090f35b50346101b457806003193601126101b4576109c960085f51602061264e5f395f51905f525401611dfe565b90604051918291602083016020845282518091526020604085019301915b8181106109f5575050500390f35b82516001600160a01b03168452859450602093840193909201916001016109e7565b50346101b457806003193601126101b457602060025f51602061264e5f395f51905f52540154604051908152f35b50346101b45760203660031901126101b45760ff6040602092600b5f51602061264e5f395f51905f52540160043582528452205416610a876040518092611c99565bf35b50346101b45760203660031901126101b4576004356001600160401b03811161084857610aba903690600401611c29565b905f51602061264e5f395f51905f525490610ad483611e4f565b91610ae26040519384611d62565b838352610aee84611e4f565b602084019490601f1901368637600c869201915b818110610b4d57868587604051928392602084019060208552518091526040840192915b818110610b34575050500390f35b8251845285945060209384019390920191600101610b26565b80610b63610b5e6001938588611e66565b611eb6565b828060a01b03165f528360205260405f2054610b7f8288611e8a565b5201610b02565b50346101b457806003193601126101b4576020600d5f51602061264e5f395f51905f52540154604051908152f35b50346101b45760203660031901126101b457610bce611c6f565b600c5f51602061264e5f395f51905f5254019060018060a01b03165f52602052602060405f2054604051908152f35b50346101b45760203660031901126101b457600435906001600160401b0382116101b4576020610c39610c333660048601611c29565b90611eca565b6040519015158152f35b50346101b457806003193601126101b4575f51602061262e5f395f51905f52546040516001600160a01b039091168152602090f35b50346101b457806003193601126101b4575f51602061264e5f395f51905f52548054610cfa5763ffffffff60018201541640908115610cb5575580f35b60405162461bcd60e51b815260206004820152601d60248201527f756e61626c6520746f206c6f6f6b75702067656e6573697320686173680000006044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527f67656e65736973206861736820616c72656164792073657400000000000000006044820152606490fd5b50346101b457806003193601126101b4575f51602061264e5f395f51905f5254600601546040516001600160a01b039091168152602090f35b50346101b457806003193601126101b457610d91611e9e565b506040600a5f51602061264e5f395f51905f5254016001600160801b03825191610dba83611d18565b548160206001600160401b038316948581520191851c168152835192835251166020820152f35b50346101b45760203660031901126101b4576004356001600160401b03811161084857610e12903690600401611c29565b905f51602061264e5f395f51905f525490610e2c83611e4f565b91610e3a6040519384611d62565b838352610e4684611e4f565b602084019490601f1901368637600b869201915b818110610eaf57868587604051928392602084019060208552518091526040840192915b818110610e8c575050500390f35b9193509160208082610ea16001948851611c99565b019401910191849392610e7e565b610eba818386611e66565b3587528260205260ff604088205416610ed38287611e8a565b6003821015610ee55752600101610e5a565b634e487b7160e01b89526021600452602489fd5b50346101b457806003193601126101b457610f12612129565b5f51602061262e5f395f51905f5280546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346101b457806003193601126101b457610f7b612129565b5f51602061266e5f395f51905f525460ff8160401c1680156111fb575b6111ec57680100000000000000029068ffffffffffffffffff1916175f51602061266e5f395f51905f52555f51602061264e5f395f51905f52546040908151610fe18382611d62565b6017815260208101907f726f757465722e73746f726167652e526f7574657256320000000000000000008252611015612129565b5190205f1981019081116111d85791602091600a807fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2958451908682019081528682526110628683611d62565b60ff19915190201692835f51602061264e5f395f51905f5255611083612290565b80518555600185019063ffffffff888201511669ffffffffffff000000008884549301518a1b169169ffffffffffffffffffff19161717905560048101600485019080820361118a575b505061ffff600782015416600785019061ffff198254161790556110fc6110f660088301611dfe565b856122d5565b01910190808203611138575b505060ff60401b195f51602061266e5f395f51905f5254165f51602061266e5f395f51905f52555160028152a180f35b806001600160401b03806001600160801b03935416166001600160401b031984541617835554831c16600160401b600160c01b03825491841b1690600160401b600160c01b0319161790555f80611108565b5481546001600160a01b03199081166001600160a01b039283161790925560058381015490870180548416918316919091179055600680840154908701805490931691161790555f806110cd565b634e487b7160e01b84526011600452602484fd5b63f92ee8a960e01b8252600482fd5b5060026001600160401b0382161015610f98565b50346101b457806003193601126101b4575f51602061264e5f395f51905f5254600501546040516001600160a01b039091168152602090f35b346112c65761126861125936611c59565b6001600160a01b03929161215c565b16803b156112c6576040519063485cc95560e01b82523360048301525f60248301525f8260448183855af19182156112bb576020926112ab575b50604051908152f35b5f6112b591611d62565b5f6112a2565b6040513d5f823e3d90fd5b5f80fd5b346112c65760203660031901126112c6576112e3611c6f565b6112eb612129565b5f51602061264e5f395f51905f525460040180546001600160a01b0319166001600160a01b03909216919091179055005b346112c6575f3660031901126112c65760205f51602061264e5f395f51905f525454604051908152f35b346112c65761135436611c59565b908115801590611495575b1561145a57600b5f51602061264e5f395f51905f525461138181541515611ca6565b0190805f528160205260ff60405f2054166003811015611446576113e5577f65672eaf4ff8b823ea29ae013fef437d1fa9ed431125263a7a1f0ac49eada39692604092825f52602052825f20600160ff1982541617905582519182526020820152a1005b60405162461bcd60e51b815260206004820152603360248201527f676976656e20636f646520696420697320616c7265616479206f6e2076616c6960448201527219185d1a5bdb881bdc881d985b1a59185d1959606a1b6064820152608490fd5b634e487b7160e01b5f52602160045260245ffd5b60405162461bcd60e51b8152602060048201526013602482015272189b1bd88818d85b89dd08189948199bdd5b99606a1b6044820152606490fd5b505f49151561135f565b346112c65760403660031901126112c6576004356001600160401b0381116112c6576114cf903690600401611c29565b906024356001600160401b0381116112c6576114ef903690600401611c29565b90917f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c611bf0578360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d5f51602061264e5f395f51905f52549161155883541515611ca6565b6060935f905b83821015611bb4578160051b830135609e19843603018112156112c6578301936002860154604086013503611b615761159a606086013561242c565b15611b0d5760206115ac818701611fcc565b65ffffffffffff604051916115c083611d18565b883583521691829101528535600288015565ffffffffffff19600388015416176003870155608085013593601e19863603018512156112c6576001600160401b0385870135116112c6578486013560051b3603602086880101136112c6579597955f9260605b86880135851015611a6957878701600586901b81016020013590360360de19018112156112c65787890101602081019061165f82611eb6565b6001600160a01b03165f908152600c8e01602052604090205415611a0c5760068d01546001600160a01b03169161169581611eb6565b92608083019384356001600160801b0381168091036112c65760405163a9059cbb60e01b81526001600160a01b039092166004830152602482015290602090829060449082905f905af180156112bb576119d6575b506001600160a01b036116fc82611eb6565b16916001600160801b03611762604051956309ed323560e41b87526020600488015260e487019461173360018060a01b0391611c85565b166024880152604084013560448801526001600160a01b0361175760608601611c85565b16606488015261246f565b166084850152603e1936829003019060a0810135828112156112c657816020910101602081359101936001600160401b0382116112c65760608202360385136112c657819060c060a489015252610104860193905f905b80821061198c575050509d9e9c9d60c0810135918212156112c657602091010190813560208301926001600160401b0382116112c6578160051b9182360385136112c65792906023198783030160c488015283825260208083019383010194935f9260de1983360301925b8285106118995750505050505050602091839d9e9d5f81809403925af19081156112bb575f91611867575b5061185c90600192611d83565b940193999799611626565b90506020813d8211611891575b8161188160209383611d62565b810103126112c65751600161184f565b3d9150611874565b90919293949596601f198382030187528735858112156112c657820160208101358252906001600160a01b036118d160408401611c85565b1660208201526060820135603e1936849003018112156112c65782602091010191602083359301906001600160401b0384116112c65783360382136112c6578360c092836040860152818486015260e08501375f60e085850101526001600160801b036119406080830161246f565b16606084015260a0810135608084015201359163ffffffff60e01b83168093036112c65760e0826020939260019560a086950152601f8019910116010199019701950193929190611824565b90919460608060019288358152838060a01b036119ab60208b01611c85565b1660208201526001600160801b036119c560408b0161246f565b1660408201520196019201906117b9565b6020813d8211611a04575b816119ee60209383611d62565b810103126112c6575180151581146116ea575f80fd5b3d91506119e1565b60405162461bcd60e51b815260206004820152602f60248201527f636f756c646e277420706572666f726d207472616e736974696f6e20666f722060448201526e756e6b6e6f776e2070726f6772616d60881b6064820152608490fd5b611b02939a98959992979196506001945060208151910120907fd756eca21e02cb0dbde1e44a4d9c6921b5c8aa4668cfa0752784b3dc855bce1e602060405183358152a1611ab960208201611fcc565b9160606040519260208401948135865265ffffffffffff60d01b9060d01b166040850152604081013560468501520135606683015260868201526086815261078b60a682611d62565b95019095929161155e565b60405162461bcd60e51b815260206004820152602660248201527f616c6c6f776564207072656465636573736f7220626c6f636b207761736e277460448201526508199bdd5b9960d21b6064820152608490fd5b60405162461bcd60e51b815260206004820152602560248201527f696e76616c69642070726576696f757320636f6d6d697474656420626c6f636b604482015264040d0c2e6d60db1b6064820152608490fd5b610843611bcb918887896020815191012090611fdf565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d005b633ee5aeb560e01b5f5260045ffd5b346112c6575f3660031901126112c657602090600e5f51602061264e5f395f51905f525401548152f35b9181601f840112156112c6578235916001600160401b0383116112c6576020808501948460051b0101116112c657565b60409060031901126112c6576004359060243590565b600435906001600160a01b03821682036112c657565b35906001600160a01b03821682036112c657565b9060038210156114465752565b15611cad57565b60405162461bcd60e51b815260206004820152603860248201527f726f757465722067656e65736973206973207a65726f3b2063616c6c20606c6f60448201527f6f6b757047656e657369734861736828296020666972737400000000000000006064820152608490fd5b604081019081106001600160401b03821117611d3357604052565b634e487b7160e01b5f52604160045260245ffd5b606081019081106001600160401b03821117611d3357604052565b90601f801991011681019081106001600160401b03821117611d3357604052565b602080611db0928195946040519682889351918291018585015e8201908382015203018085520183611d62565b565b15611db957565b60405162461bcd60e51b815260206004820152601e60248201527f7369676e61747572657320766572696669636174696f6e206661696c656400006044820152606490fd5b90604051918281549182825260208201905f5260205f20925f5b818110611e2d575050611db092500383611d62565b84546001600160a01b0316835260019485019487945060209093019201611e18565b6001600160401b038111611d335760051b60200190565b9190811015611e765760051b0190565b634e487b7160e01b5f52603260045260245ffd5b8051821015611e765760209160051b010190565b60405190611eab82611d18565b5f6020838281520152565b356001600160a01b03811681036112c65790565b5f51602061264e5f395f51905f5254600901905f5b838110611eef5750505050600190565b611efd610b5e828685611e66565b6001600160a01b03165f9081526020849052604090205460ff1615611f2457600101611edf565b505050505f90565b3580151581036112c65790565b5f198114611f475760010190565b634e487b7160e01b5f52601160045260245ffd5b6001600160a01b03168015611fb9575f51602061262e5f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b3565ffffffffffff811681036112c65790565b919091611fee600782016123fc565b92604051906020820190815260208252612009604083611d62565b612045603660405180936020820195601960f81b87523060601b60228401525180918484015e81015f838201520301601f198101835282611d62565b5190205f9260095f9301925b8681101561211e578060051b820135601e19833603018112156112c65782018035906001600160401b0382116112c657602081019082360382136112c657604051906120a7601f8501601f191660200183611d62565b83825260208436920101116112c6575f6020846120d9956120d0958386013783010152856124ae565b909291926124e8565b6001600160a01b03165f9081526020859052604090205460ff16612100575b600101612051565b9361210a90611f39565b938585036120f85750505050505050600190565b505050505050505f90565b5f51602061262e5f395f51905f52546001600160a01b0316330361214957565b63118cdaa760e01b5f523360045260245ffd5b5f51602061264e5f395f51905f52549161217883541515611ca6565b815f52600b830160205260ff60405f205416600381101561144657600203612234576121d6600d9160018060a01b036005860154169060405160208101918683526040820152604081526121cd606082611d62565b51902090612548565b9260018060a01b0384165f52600c81016020528260405f2055016121fa8154611f39565b90556040516001600160a01b03831681527f8008ec1d8798725ebfa0f2d128d52e8e717dcba6e0f786557eeee70614b02bf190602090a290565b60405162461bcd60e51b815260206004820152602e60248201527f636f6465206d7573742062652076616c696461746564206265666f726520707260448201526d37b3b930b69031b932b0ba34b7b760911b6064820152608490fd5b5f6040805161229e81611d47565b82815282602082015201526040516122b581611d47565b5f815263ffffffff4316602082015265ffffffffffff4216604082015290565b90600882019081546123b8579091600901905f5b815181101561232a576001906001600160a01b036123078285611e8a565b5116828060a01b03165f528360205260405f208260ff19825416179055016122e9565b5080519291506001600160401b038311611d3357680100000000000000008311611d33578154838355808410612392575b50602001905f5260205f205f5b8381106123755750505050565b82516001600160a01b031681830155602090920191600101612368565b825f528360205f2091820191015b8181106123ad575061235b565b5f81556001016123a0565b606460405162461bcd60e51b815260206004820152602060248201527f72656d6f76652070726576696f75732076616c696461746f72732066697273746044820152fd5b61ffff600182015491541690818102918183041490151715611f475761270f8101809111611f4757612710900490565b905f194301438111611f4757805b612445575b505f9150565b804083810361245657506001925050565b1561246a578015611f47575f19018061243a565b61243f565b35906001600160801b03821682036112c657565b60ff5f51602061266e5f395f51905f525460401c161561249f57565b631afcd79f60e31b5f5260045ffd5b81519190604183036124de576124d79250602082015190606060408401519301515f1a906125ab565b9192909190565b50505f9160029190565b600481101561144657806124fa575050565b600181036125115763f645eedf60e01b5f5260045ffd5b6002810361252c575063fce698f760e01b5f5260045260245ffd5b6003146125365750565b6335e2f38360e21b5f5260045260245ffd5b6e5af43d82803e903d91602b57fd5bf390763d602d80600a3d3981f3363d3d373d3d3d363d7300000062ffffff8260881c16175f5260781b17602052603760095ff5906001600160a01b0382161561259c57565b63b06ebf3d60e01b5f5260045ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411612622579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156112bb575f516001600160a01b0381161561261857905f905f90565b505f906001905f90565b5050505f916003919056fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005c09ca1b9b8127a4fd9f3c384aac59b661441e820e17733753ff5f2e86e1e000f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220e9a483acd9d0e5bc802a7a40d304ef919fc2d99f2eaefd0c5911639d8942e10b64736f6c634300081c0033f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00","sourceMap":"632:13273:159:-:0;;;;;;;-1:-1:-1;;;;;;;;;;;632:13273:159;;;;;;7896:76:26;;-1:-1:-1;;;;;;;;;;;632:13273:159;;7985:34:26;7981:146;;-1:-1:-1;632:13273:159;;;;;;;;;7981:146:26;-1:-1:-1;;;;;;632:13273:159;-1:-1:-1;;;;;632:13273:159;;;-1:-1:-1;;;;;;;;;;;632:13273:159;;;8087:29:26;;632:13273:159;;8087:29:26;7981:146;;;;7896:76;7938:23;;;-1:-1:-1;7938:23:26;;-1:-1:-1;7938:23:26;632:13273:159;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080806040526004361015610012575f80fd5b5f905f3560e01c9081627a32e714611bff5750806301b1d1561461149f5780631c149d8a1461134657806328e24b3d1461131c5780633d43b418146112ca578063527de0f91461124857806365ecfea21461120f5780636c2eb35014610f62578063715018a614610ef957806382bdeaad14610de157806384d22a4f14610d7857806388f50cf014610d3f5780638b1edf1e14610c785780638da5cb5b14610c435780638f381dbe14610bfd5780639067088e14610bb457806396a2ddfa14610b86578063baaf020114610a89578063c13911e814610a45578063c9f16a1114610a17578063ca1e78191461099e578063e6fabc0914610965578063e7006a741461084c578063e97d3eb31461061d578063ed612f8c146105ef578063edc87225146105ba578063efd81abc14610588578063f2fde38b14610560578063f8453e7c146101b75763facd743b14610167575f80fd5b346101b45760203660031901126101b457610180611c6f565b60095f51602061264e5f395f51905f5254019060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b80fd5b50346101b45760a03660031901126101b4576101d1611c6f565b6024356001600160a01b038116919082900361055c576044356001600160a01b0381169290839003610558576064356001600160a01b03811690819003610554576084356001600160401b03811161055057610231903690600401611c29565b915f51602061266e5f395f51905f52549460ff8660401c1615956001600160401b03811680159081610548575b600114908161053e575b159081610535575b506105265767ffffffffffffffff1981166001175f51602061266e5f395f51905f52556102b49190876104fa575b506102a7612483565b6102af612483565b611f5b565b60409586516102c38882611d62565b6017815260208101907f726f757465722e73746f726167652e526f75746572563100000000000000000082526102f7612129565b5190205f1981019081116104e657875190602082019081526020825261031d8983611d62565b60ff19915190201694855f51602061264e5f395f51905f525561033e612290565b80518755600187019063ffffffff60208201511669ffffffffffff000000008b845493015160201b169169ffffffffffffffffffff1916171790558288805161038681611d47565b8381526020810185905201526004860180546001600160a01b03199081166001600160a01b0393841617909155600587018054821693831693909317909255600686018054909216921691909117905560078301805461ffff1916611a0a1790556103f082611e4f565b916103fd86519384611d62565b808352602083019060051b8201913683116104e257905b8282106104ca575050509061042b600a92826122d5565b610433611e9e565b506509184e72a0006020855161044881611d18565b639502f900815201520180546001600160c01b0319166d09184e72a000000000009502f900179055610478575080f35b60207fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29160ff60401b195f51602061266e5f395f51905f5254165f51602061266e5f395f51905f52555160018152a180f35b602080916104d784611c85565b815201910190610414565b8780fd5b634e487b7160e01b89526011600452602489fd5b68ffffffffffffffffff191668010000000000000001175f51602061266e5f395f51905f52555f61029e565b63f92ee8a960e01b8952600489fd5b9050155f610270565b303b159150610268565b88915061025e565b8580fd5b8480fd5b8380fd5b8280fd5b50346101b45760203660031901126101b45761058561057d611c6f565b6102af612129565b80f35b50346101b457806003193601126101b457602061ffff60075f51602061264e5f395f51905f5254015416604051908152f35b50346101b457806003193601126101b45760206105e760075f51602061264e5f395f51905f5254016123fc565b604051908152f35b50346101b457806003193601126101b457602060085f51602061264e5f395f51905f52540154604051908152f35b50346101b45760403660031901126101b457600435906001600160401b0382116101b457366023830112156101b4578160040135916001600160401b038311610848573660248460061b83010111610848576024356001600160401b03811161055c579061069084923690600401611c29565b935f51602061264e5f395f51905f5254926106ad84541515611ca6565b6060958293600b8601975b8786101561082b578560061b84016024810135918287528a60205260ff6040882054166003811015610817576001036107b4576001926107676044610794940161070181611f2c565b1561079c57828a528d60205260408a20600260ff19825416179055600e8c0161072a8154611f39565b90555b61073681611f2c565b15157f460119a8f69a33ed127de517d5ea464e958ce23ef19e4420a8b92bf780bbc2c96020604051868152a2611f2c565b6040519060208201928352151560f81b60408201526021815261078b604182611d62565b51902090611d83565b9501946106b8565b828a528d60205260408a2060ff19815416905561072d565b60405162461bcd60e51b815260206004820152603560248201527f636f6465206d7573742062652072657175657374656420666f722076616c6964604482015274185d1a5bdb881d1bc818994818dbdb5b5a5d1d1959605a1b6064820152608490fd5b634e487b7160e01b88526021600452602488fd5b84926105859288610843936020815191012090611fdf565b611db2565b5080fd5b50346101b45760603660031901126101b457610866611c6f565b602435906108ae6044359161087b838561215c565b93604051936020850191825260408501526040845261089b606085611d62565b92519092206001600160a01b0392612548565b1690813b1561055c5760405163204a7f0760e21b81528390818160048183885af1801561095a57610945575b50506001600160a01b031690813b1561055c576040519063485cc95560e01b82523360048301526024820152828160448183865af1801561093a57610925575b602082604051908152f35b610930838092611d62565b610848578161091a565b6040513d85823e3d90fd5b8161094f91611d62565b61055c57825f6108da565b6040513d84823e3d90fd5b50346101b457806003193601126101b4575f51602061264e5f395f51905f5254600401546040516001600160a01b039091168152602090f35b50346101b457806003193601126101b4576109c960085f51602061264e5f395f51905f525401611dfe565b90604051918291602083016020845282518091526020604085019301915b8181106109f5575050500390f35b82516001600160a01b03168452859450602093840193909201916001016109e7565b50346101b457806003193601126101b457602060025f51602061264e5f395f51905f52540154604051908152f35b50346101b45760203660031901126101b45760ff6040602092600b5f51602061264e5f395f51905f52540160043582528452205416610a876040518092611c99565bf35b50346101b45760203660031901126101b4576004356001600160401b03811161084857610aba903690600401611c29565b905f51602061264e5f395f51905f525490610ad483611e4f565b91610ae26040519384611d62565b838352610aee84611e4f565b602084019490601f1901368637600c869201915b818110610b4d57868587604051928392602084019060208552518091526040840192915b818110610b34575050500390f35b8251845285945060209384019390920191600101610b26565b80610b63610b5e6001938588611e66565b611eb6565b828060a01b03165f528360205260405f2054610b7f8288611e8a565b5201610b02565b50346101b457806003193601126101b4576020600d5f51602061264e5f395f51905f52540154604051908152f35b50346101b45760203660031901126101b457610bce611c6f565b600c5f51602061264e5f395f51905f5254019060018060a01b03165f52602052602060405f2054604051908152f35b50346101b45760203660031901126101b457600435906001600160401b0382116101b4576020610c39610c333660048601611c29565b90611eca565b6040519015158152f35b50346101b457806003193601126101b4575f51602061262e5f395f51905f52546040516001600160a01b039091168152602090f35b50346101b457806003193601126101b4575f51602061264e5f395f51905f52548054610cfa5763ffffffff60018201541640908115610cb5575580f35b60405162461bcd60e51b815260206004820152601d60248201527f756e61626c6520746f206c6f6f6b75702067656e6573697320686173680000006044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527f67656e65736973206861736820616c72656164792073657400000000000000006044820152606490fd5b50346101b457806003193601126101b4575f51602061264e5f395f51905f5254600601546040516001600160a01b039091168152602090f35b50346101b457806003193601126101b457610d91611e9e565b506040600a5f51602061264e5f395f51905f5254016001600160801b03825191610dba83611d18565b548160206001600160401b038316948581520191851c168152835192835251166020820152f35b50346101b45760203660031901126101b4576004356001600160401b03811161084857610e12903690600401611c29565b905f51602061264e5f395f51905f525490610e2c83611e4f565b91610e3a6040519384611d62565b838352610e4684611e4f565b602084019490601f1901368637600b869201915b818110610eaf57868587604051928392602084019060208552518091526040840192915b818110610e8c575050500390f35b9193509160208082610ea16001948851611c99565b019401910191849392610e7e565b610eba818386611e66565b3587528260205260ff604088205416610ed38287611e8a565b6003821015610ee55752600101610e5a565b634e487b7160e01b89526021600452602489fd5b50346101b457806003193601126101b457610f12612129565b5f51602061262e5f395f51905f5280546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346101b457806003193601126101b457610f7b612129565b5f51602061266e5f395f51905f525460ff8160401c1680156111fb575b6111ec57680100000000000000029068ffffffffffffffffff1916175f51602061266e5f395f51905f52555f51602061264e5f395f51905f52546040908151610fe18382611d62565b6017815260208101907f726f757465722e73746f726167652e526f7574657256320000000000000000008252611015612129565b5190205f1981019081116111d85791602091600a807fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2958451908682019081528682526110628683611d62565b60ff19915190201692835f51602061264e5f395f51905f5255611083612290565b80518555600185019063ffffffff888201511669ffffffffffff000000008884549301518a1b169169ffffffffffffffffffff19161717905560048101600485019080820361118a575b505061ffff600782015416600785019061ffff198254161790556110fc6110f660088301611dfe565b856122d5565b01910190808203611138575b505060ff60401b195f51602061266e5f395f51905f5254165f51602061266e5f395f51905f52555160028152a180f35b806001600160401b03806001600160801b03935416166001600160401b031984541617835554831c16600160401b600160c01b03825491841b1690600160401b600160c01b0319161790555f80611108565b5481546001600160a01b03199081166001600160a01b039283161790925560058381015490870180548416918316919091179055600680840154908701805490931691161790555f806110cd565b634e487b7160e01b84526011600452602484fd5b63f92ee8a960e01b8252600482fd5b5060026001600160401b0382161015610f98565b50346101b457806003193601126101b4575f51602061264e5f395f51905f5254600501546040516001600160a01b039091168152602090f35b346112c65761126861125936611c59565b6001600160a01b03929161215c565b16803b156112c6576040519063485cc95560e01b82523360048301525f60248301525f8260448183855af19182156112bb576020926112ab575b50604051908152f35b5f6112b591611d62565b5f6112a2565b6040513d5f823e3d90fd5b5f80fd5b346112c65760203660031901126112c6576112e3611c6f565b6112eb612129565b5f51602061264e5f395f51905f525460040180546001600160a01b0319166001600160a01b03909216919091179055005b346112c6575f3660031901126112c65760205f51602061264e5f395f51905f525454604051908152f35b346112c65761135436611c59565b908115801590611495575b1561145a57600b5f51602061264e5f395f51905f525461138181541515611ca6565b0190805f528160205260ff60405f2054166003811015611446576113e5577f65672eaf4ff8b823ea29ae013fef437d1fa9ed431125263a7a1f0ac49eada39692604092825f52602052825f20600160ff1982541617905582519182526020820152a1005b60405162461bcd60e51b815260206004820152603360248201527f676976656e20636f646520696420697320616c7265616479206f6e2076616c6960448201527219185d1a5bdb881bdc881d985b1a59185d1959606a1b6064820152608490fd5b634e487b7160e01b5f52602160045260245ffd5b60405162461bcd60e51b8152602060048201526013602482015272189b1bd88818d85b89dd08189948199bdd5b99606a1b6044820152606490fd5b505f49151561135f565b346112c65760403660031901126112c6576004356001600160401b0381116112c6576114cf903690600401611c29565b906024356001600160401b0381116112c6576114ef903690600401611c29565b90917f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c611bf0578360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d5f51602061264e5f395f51905f52549161155883541515611ca6565b6060935f905b83821015611bb4578160051b830135609e19843603018112156112c6578301936002860154604086013503611b615761159a606086013561242c565b15611b0d5760206115ac818701611fcc565b65ffffffffffff604051916115c083611d18565b883583521691829101528535600288015565ffffffffffff19600388015416176003870155608085013593601e19863603018512156112c6576001600160401b0385870135116112c6578486013560051b3603602086880101136112c6579597955f9260605b86880135851015611a6957878701600586901b81016020013590360360de19018112156112c65787890101602081019061165f82611eb6565b6001600160a01b03165f908152600c8e01602052604090205415611a0c5760068d01546001600160a01b03169161169581611eb6565b92608083019384356001600160801b0381168091036112c65760405163a9059cbb60e01b81526001600160a01b039092166004830152602482015290602090829060449082905f905af180156112bb576119d6575b506001600160a01b036116fc82611eb6565b16916001600160801b03611762604051956309ed323560e41b87526020600488015260e487019461173360018060a01b0391611c85565b166024880152604084013560448801526001600160a01b0361175760608601611c85565b16606488015261246f565b166084850152603e1936829003019060a0810135828112156112c657816020910101602081359101936001600160401b0382116112c65760608202360385136112c657819060c060a489015252610104860193905f905b80821061198c575050509d9e9c9d60c0810135918212156112c657602091010190813560208301926001600160401b0382116112c6578160051b9182360385136112c65792906023198783030160c488015283825260208083019383010194935f9260de1983360301925b8285106118995750505050505050602091839d9e9d5f81809403925af19081156112bb575f91611867575b5061185c90600192611d83565b940193999799611626565b90506020813d8211611891575b8161188160209383611d62565b810103126112c65751600161184f565b3d9150611874565b90919293949596601f198382030187528735858112156112c657820160208101358252906001600160a01b036118d160408401611c85565b1660208201526060820135603e1936849003018112156112c65782602091010191602083359301906001600160401b0384116112c65783360382136112c6578360c092836040860152818486015260e08501375f60e085850101526001600160801b036119406080830161246f565b16606084015260a0810135608084015201359163ffffffff60e01b83168093036112c65760e0826020939260019560a086950152601f8019910116010199019701950193929190611824565b90919460608060019288358152838060a01b036119ab60208b01611c85565b1660208201526001600160801b036119c560408b0161246f565b1660408201520196019201906117b9565b6020813d8211611a04575b816119ee60209383611d62565b810103126112c6575180151581146116ea575f80fd5b3d91506119e1565b60405162461bcd60e51b815260206004820152602f60248201527f636f756c646e277420706572666f726d207472616e736974696f6e20666f722060448201526e756e6b6e6f776e2070726f6772616d60881b6064820152608490fd5b611b02939a98959992979196506001945060208151910120907fd756eca21e02cb0dbde1e44a4d9c6921b5c8aa4668cfa0752784b3dc855bce1e602060405183358152a1611ab960208201611fcc565b9160606040519260208401948135865265ffffffffffff60d01b9060d01b166040850152604081013560468501520135606683015260868201526086815261078b60a682611d62565b95019095929161155e565b60405162461bcd60e51b815260206004820152602660248201527f616c6c6f776564207072656465636573736f7220626c6f636b207761736e277460448201526508199bdd5b9960d21b6064820152608490fd5b60405162461bcd60e51b815260206004820152602560248201527f696e76616c69642070726576696f757320636f6d6d697474656420626c6f636b604482015264040d0c2e6d60db1b6064820152608490fd5b610843611bcb918887896020815191012090611fdf565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d005b633ee5aeb560e01b5f5260045ffd5b346112c6575f3660031901126112c657602090600e5f51602061264e5f395f51905f525401548152f35b9181601f840112156112c6578235916001600160401b0383116112c6576020808501948460051b0101116112c657565b60409060031901126112c6576004359060243590565b600435906001600160a01b03821682036112c657565b35906001600160a01b03821682036112c657565b9060038210156114465752565b15611cad57565b60405162461bcd60e51b815260206004820152603860248201527f726f757465722067656e65736973206973207a65726f3b2063616c6c20606c6f60448201527f6f6b757047656e657369734861736828296020666972737400000000000000006064820152608490fd5b604081019081106001600160401b03821117611d3357604052565b634e487b7160e01b5f52604160045260245ffd5b606081019081106001600160401b03821117611d3357604052565b90601f801991011681019081106001600160401b03821117611d3357604052565b602080611db0928195946040519682889351918291018585015e8201908382015203018085520183611d62565b565b15611db957565b60405162461bcd60e51b815260206004820152601e60248201527f7369676e61747572657320766572696669636174696f6e206661696c656400006044820152606490fd5b90604051918281549182825260208201905f5260205f20925f5b818110611e2d575050611db092500383611d62565b84546001600160a01b0316835260019485019487945060209093019201611e18565b6001600160401b038111611d335760051b60200190565b9190811015611e765760051b0190565b634e487b7160e01b5f52603260045260245ffd5b8051821015611e765760209160051b010190565b60405190611eab82611d18565b5f6020838281520152565b356001600160a01b03811681036112c65790565b5f51602061264e5f395f51905f5254600901905f5b838110611eef5750505050600190565b611efd610b5e828685611e66565b6001600160a01b03165f9081526020849052604090205460ff1615611f2457600101611edf565b505050505f90565b3580151581036112c65790565b5f198114611f475760010190565b634e487b7160e01b5f52601160045260245ffd5b6001600160a01b03168015611fb9575f51602061262e5f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b3565ffffffffffff811681036112c65790565b919091611fee600782016123fc565b92604051906020820190815260208252612009604083611d62565b612045603660405180936020820195601960f81b87523060601b60228401525180918484015e81015f838201520301601f198101835282611d62565b5190205f9260095f9301925b8681101561211e578060051b820135601e19833603018112156112c65782018035906001600160401b0382116112c657602081019082360382136112c657604051906120a7601f8501601f191660200183611d62565b83825260208436920101116112c6575f6020846120d9956120d0958386013783010152856124ae565b909291926124e8565b6001600160a01b03165f9081526020859052604090205460ff16612100575b600101612051565b9361210a90611f39565b938585036120f85750505050505050600190565b505050505050505f90565b5f51602061262e5f395f51905f52546001600160a01b0316330361214957565b63118cdaa760e01b5f523360045260245ffd5b5f51602061264e5f395f51905f52549161217883541515611ca6565b815f52600b830160205260ff60405f205416600381101561144657600203612234576121d6600d9160018060a01b036005860154169060405160208101918683526040820152604081526121cd606082611d62565b51902090612548565b9260018060a01b0384165f52600c81016020528260405f2055016121fa8154611f39565b90556040516001600160a01b03831681527f8008ec1d8798725ebfa0f2d128d52e8e717dcba6e0f786557eeee70614b02bf190602090a290565b60405162461bcd60e51b815260206004820152602e60248201527f636f6465206d7573742062652076616c696461746564206265666f726520707260448201526d37b3b930b69031b932b0ba34b7b760911b6064820152608490fd5b5f6040805161229e81611d47565b82815282602082015201526040516122b581611d47565b5f815263ffffffff4316602082015265ffffffffffff4216604082015290565b90600882019081546123b8579091600901905f5b815181101561232a576001906001600160a01b036123078285611e8a565b5116828060a01b03165f528360205260405f208260ff19825416179055016122e9565b5080519291506001600160401b038311611d3357680100000000000000008311611d33578154838355808410612392575b50602001905f5260205f205f5b8381106123755750505050565b82516001600160a01b031681830155602090920191600101612368565b825f528360205f2091820191015b8181106123ad575061235b565b5f81556001016123a0565b606460405162461bcd60e51b815260206004820152602060248201527f72656d6f76652070726576696f75732076616c696461746f72732066697273746044820152fd5b61ffff600182015491541690818102918183041490151715611f475761270f8101809111611f4757612710900490565b905f194301438111611f4757805b612445575b505f9150565b804083810361245657506001925050565b1561246a578015611f47575f19018061243a565b61243f565b35906001600160801b03821682036112c657565b60ff5f51602061266e5f395f51905f525460401c161561249f57565b631afcd79f60e31b5f5260045ffd5b81519190604183036124de576124d79250602082015190606060408401519301515f1a906125ab565b9192909190565b50505f9160029190565b600481101561144657806124fa575050565b600181036125115763f645eedf60e01b5f5260045ffd5b6002810361252c575063fce698f760e01b5f5260045260245ffd5b6003146125365750565b6335e2f38360e21b5f5260045260245ffd5b6e5af43d82803e903d91602b57fd5bf390763d602d80600a3d3981f3363d3d373d3d3d363d7300000062ffffff8260881c16175f5260781b17602052603760095ff5906001600160a01b0382161561259c57565b63b06ebf3d60e01b5f5260045ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411612622579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156112bb575f516001600160a01b0381161561261857905f905f90565b505f906001905f90565b5050505f916003919056fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005c09ca1b9b8127a4fd9f3c384aac59b661441e820e17733753ff5f2e86e1e000f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220e9a483acd9d0e5bc802a7a40d304ef919fc2d99f2eaefd0c5911639d8942e10b64736f6c634300081c0033","sourceMap":"632:13273:159:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:13273:159;;;;;;:::i;:::-;3380:45;-1:-1:-1;;;;;;;;;;;632:13273:159;3380:45;:57;632:13273;;;;;;-1:-1:-1;632:13273:159;;;;;;-1:-1:-1;632:13273:159;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:13273:159;;;;;;:::i;:::-;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;632:13273:159;;;;;;;4301:16:26;632:13273:159;-1:-1:-1;;;;;632:13273:159;;4726:16:26;;:34;;;;632:13273:159;4805:1:26;4790:16;:50;;;;632:13273:159;4855:13:26;:30;;;;632:13273:159;4851:91:26;;;-1:-1:-1;;632:13273:159;;4805:1:26;632:13273:159;-1:-1:-1;;;;;;;;;;;632:13273:159;6961:1:26;;632:13273:159;;4979:67:26;;632:13273:159;6893:76:26;;;:::i;:::-;;;:::i;:::-;6961:1;:::i;:::-;632:13273:159;;;;;;;;:::i;:::-;;;;;;;;;;;2303:62:25;;:::i;:::-;632:13273:159;13773:27;;-1:-1:-1;;632:13273:159;;;;;;;;;13754:52;632:13273;13754:52;;632:13273;;;;13754:52;;;;;;:::i;:::-;632:13273;;;;13744:63;;:89;632:13273;;-1:-1:-1;;;;;;;;;;;632:13273:159;1394:17;;:::i;:::-;632:13273;;;;4805:1:26;632:13273:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;1444:53;;632:13273;;;1444:53;632:13273;;1421:20;;632:13273;;-1:-1:-1;;;;;;632:13273:159;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1507:25;;;632:13273;;-1:-1:-1;;632:13273:159;;;;;577:4:161;;;:::i;:::-;632:13273:159;;;;;;;:::i;:::-;577:4:161;;;632:13273:159;577:4:161;;;632:13273:159;577:4:161;;;632:13273:159;;577:4:161;;;;;;;;;;;1605:35:159;;;;;1650:22;1605:35;;;:::i;:::-;632:13273;;:::i;:::-;;674:18:161;632:13273:159;;;;;;:::i;:::-;447:13:161;632:13273:159;;3489:60:161;632:13273:159;1650:22;632:13273;;-1:-1:-1;;;;;;632:13273:159;;;;;5066:101:26;;632:13273:159;;;5066:101:26;632:13273:159;5142:14:26;632:13273:159;-1:-1:-1;;;632:13273:159;-1:-1:-1;;;;;;;;;;;632:13273:159;;-1:-1:-1;;;;;;;;;;;632:13273:159;;4805:1:26;632:13273:159;;5142:14:26;632:13273:159;;577:4:161;632:13273:159;;;;;;:::i;:::-;577:4:161;;;;;;;;;632:13273:159;;;;-1:-1:-1;;;632:13273:159;;;;;;;;4979:67:26;-1:-1:-1;;632:13273:159;;;-1:-1:-1;;;;;;;;;;;632:13273:159;4979:67:26;;;4851:91;-1:-1:-1;;;4908:23:26;;632:13273:159;6498:23:26;4908;4855:30;4872:13;;;4855:30;;;4790:50;4818:4;4810:25;:30;;-1:-1:-1;4790:50:26;;4726:34;;;-1:-1:-1;4726:34:26;;632:13273:159;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:13273:159;;;;2357:1:25;632:13273:159;;:::i;:::-;2303:62:25;;:::i;2357:1::-;632:13273:159;;;;;;;;;;;;;;;;;3534:28;-1:-1:-1;;;;;;;;;;;632:13273:159;3534:28;632:13273;;;;;;;;;;;;;;;;;;;;;;3943:56;3970:28;-1:-1:-1;;;;;;;;;;;632:13273:159;3970:28;3943:56;:::i;:::-;632:13273;;;;;;;;;;;;;;;;;;;;3806:39;-1:-1:-1;;;;;;;;;;;632:13273:159;3806:39;632:13273;;;;;;;;;;;;;;-1:-1:-1;;632:13273:159;;;;;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;632:13273:159;;7474:107;632:13273;;7482:38;;7474:107;:::i;:::-;632:13273;7642:13;;7810:19;;;;7637:838;7686:3;7657:27;;;;;;632:13273;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7810:82;632:13273;;;7998:20;3348::161;7998::159;8388:76;7998:20;;;;;:::i;:::-;;;;632:13273;;;;;;;;;8085:24;632:13273;;;;;;;;8127:39;;;:41;632:13273;;8127:41;:::i;:::-;632:13273;;7994:279;8328:20;;;:::i;:::-;632:13273;;8292:57;632:13273;;;;;;8292:57;3348:20:161;:::i;:::-;632:13273:159;;3312:57:161;632:13273:159;3312:57:161;;632:13273:159;;;;;;;;;;;;3312:57:161;;;;;;:::i;:::-;632:13273:159;3302:68:161;;8388:76:159;;:::i;:::-;7686:3;632:13273;7642:13;;;7994:279;632:13273;;;;;;;;;;;;;;;;7994:279;;632:13273;;;-1:-1:-1;;;632:13273:159;;;;;;;;;;;;;;;;;-1:-1:-1;;;632:13273:159;;;;;;;;-1:-1:-1;;;632:13273:159;;;;;;;;7657:27;;;8485:155;7657:27;;8506:78;7657:27;632:13273;;;;;8538:32;8506:78;;:::i;:::-;8485:155;:::i;632:13273::-;;;;;;;;;;;-1:-1:-1;;632:13273:159;;;;;;:::i;:::-;;;;2935:43:44;632:13273:159;;7058:30;;;;;:::i;:::-;632:13273;;;7155:32;632:13273;7155:32;;632:13273;;;;;;;;7155:32;;;632:13273;7155:32;;:::i;:::-;632:13273;;7145:43;;;-1:-1:-1;;;;;632:13273:159;2935:43:44;:::i;:::-;632:13273:159;10564:36;;;;;;632:13273;;-1:-1:-1;;;10564:36:159;;632:13273;;;;;;;10564:36;;;;;;;;;632:13273;-1:-1:-1;;;;;;;632:13273:159;;7200:47;;;;;632:13273;;;;;;7200:47;;7227:10;632:13273;7200:47;;632:13273;;;;;7200:47;;632:13273;7200:47;;;;;;;;;;;632:13273;;;;;;;;;7200:47;;;;;;:::i;:::-;632:13273;;7200:47;;;;632:13273;;;;;;;;;10564:36;;;;;:::i;:::-;632:13273;;10564:36;;;;;632:13273;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:13273:159;;2658:23;632:13273;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;;;;;;;;;;;;3680:39;-1:-1:-1;;;;;;;;;;;632:13273:159;3680:39;632:13273;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;632:13273:159;;;;;-1:-1:-1;632:13273:159;;;;;;;;;3680:39;632:13273;;;;;;;;;;;;;;;;;2541:30;-1:-1:-1;;;;;;;;;;;632:13273:159;2541:30;632:13273;;;;;;;;;;;;;;-1:-1:-1;;632:13273:159;;;;;;;;4238:22;-1:-1:-1;;;;;;;;;;;632:13273:159;4238:22;632:13273;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;632:13273:159;;;;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;632:13273:159;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;632:13273:159;;;;5111:28;5043:13;5111:28;;5038:129;5058:23;;;;;;632:13273;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;632:13273:159;;;;;;;;;5111:28;632:13273;;;5083:3;5140:15;;;5111:28;5140:15;;;;:::i;:::-;;:::i;:::-;632:13273;;;;;;-1:-1:-1;632:13273:159;;;;;-1:-1:-1;632:13273:159;;5102:54;;;;:::i;:::-;632:13273;;5043:13;;632:13273;;;;;;;;;;;;;;5272:36;-1:-1:-1;;;;;;;;;;;632:13273:159;5272:36;632:13273;;;;;;;;;;;;;;-1:-1:-1;;632:13273:159;;;;;;:::i;:::-;4762:31;-1:-1:-1;;;;;;;;;;;632:13273:159;4762:31;:43;632:13273;;;;;;-1:-1:-1;632:13273:159;;;;;-1:-1:-1;632:13273:159;;;;;;;;;;;;;;;-1:-1:-1;;632:13273:159;;;;;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:13273:159;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:13273:159;;;;;;5823:26;;;632:13273;;5813:37;5869:25;;;632:13273;;;;;;;;-1:-1:-1;;;632:13273:159;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;632:13273:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:13273:159;2893:35;;632:13273;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;4110:25;-1:-1:-1;;;;;;;;;;;632:13273:159;4110:25;-1:-1:-1;;;;;632:13273:159;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:13273:159;;;;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;632:13273:159;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;632:13273:159;;;;4589:19;4524:13;4589:19;;4519:120;4539:20;;;;;;632:13273;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;4561:3;4615:12;;;;;:::i;:::-;632:13273;;;;;;;;;;;;4580:48;;;;:::i;:::-;632:13273;;;;;;;;;4524:13;;632:13273;-1:-1:-1;;;632:13273:159;;;;;;;;;;;;;;;;;;;;;2303:62:25;;:::i;:::-;-1:-1:-1;;;;;;;;;;;632:13273:159;;-1:-1:-1;;;;;;632:13273:159;;;;;;;-1:-1:-1;;;;;632:13273:159;3975:40:25;632:13273:159;;3975:40:25;632:13273:159;;;;;;;;;;;;;;;2303:62:25;;:::i;:::-;-1:-1:-1;;;;;;;;;;;632:13273:159;;;;;;6431:44:26;;;;632:13273:159;6427:105:26;;632:13273:159;;;;;;-1:-1:-1;;;;;;;;;;;632:13273:159;-1:-1:-1;;;;;;;;;;;632:13273:159;;;;;;;;;:::i;:::-;;;;;;;;;;;2303:62:25;;:::i;:::-;632:13273:159;13773:27;;-1:-1:-1;;632:13273:159;;;;;;;;;;2289:25;632:13273;6656:20:26;632:13273:159;;;13754:52;;;;632:13273;;;13754:52;;;;;;;:::i;:::-;632:13273;;;;13744:63;;:89;632:13273;;-1:-1:-1;;;;;;;;;;;632:13273:159;1962:17;;:::i;:::-;632:13273;;;;6593:4:26;632:13273:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;2015:23;;632:13273;1989:23;;632:13273;;;;;;;2119:28;;632:13273;2119:28;;;632:13273;;2119:28;2049;;632:13273;;;;;;;;;2184:66;632:13273;2210:39;;;632:13273;:::i;:::-;2184:66;;:::i;:::-;2289:25;2261;;632:13273;;;;;;;;;-1:-1:-1;;;632:13273:159;-1:-1:-1;;;;;;;;;;;632:13273:159;;-1:-1:-1;;;;;;;;;;;632:13273:159;;1776:1;632:13273;;6656:20:26;632:13273:159;;;;-1:-1:-1;;;;;632:13273:159;-1:-1:-1;;;;;632:13273:159;;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;-1:-1:-1;;;;;;;632:13273:159;;;;;;;-1:-1:-1;;;;;;;632:13273:159;;;;;;;;;;;;;-1:-1:-1;;;;;;632:13273:159;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:13273:159;;;-1:-1:-1;;;632:13273:159;;;;;;;;6427:105:26;-1:-1:-1;;;6498:23:26;;632:13273:159;6498:23:26;;6431:44;632:13273:159;1776:1;-1:-1:-1;;;;;632:13273:159;;6450:25:26;;6431:44;;632:13273:159;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:13273:159;2775:35;;632:13273;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;;6768:30;632:13273;;;:::i;:::-;-1:-1:-1;;;;;632:13273:159;;6768:30;:::i;:::-;632:13273;6809:50;;;;;632:13273;;;;;;6809:50;;6836:10;632:13273;6809:50;;632:13273;;;;;;;6809:50;;;;;;;;;;;;632:13273;6809:50;;;632:13273;;;;;;;;6809:50;632:13273;6809:50;;;:::i;:::-;632:13273;6809:50;;;632:13273;;;;;;;;;6809:50;632:13273;;;;;;;;;-1:-1:-1;;632:13273:159;;;;;;:::i;:::-;2303:62:25;;:::i;:::-;-1:-1:-1;;;;;;;;;;;632:13273:159;;5541:23;632:13273;;-1:-1:-1;;;;;;632:13273:159;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;;;;;;-1:-1:-1;;632:13273:159;;;;;-1:-1:-1;;;;;;;;;;;632:13273:159;;;;;;;;;;;;;;;:::i;:::-;6112:16;;;;;:36;;;632:13273;;;;6366:19;-1:-1:-1;;;;;;;;;;;632:13273:159;6227:107;632:13273;;6235:38;;6227:107;:::i;:::-;6366:19;632:13273;;;;;;;;;;;;;;;;;;;;;6601:45;632:13273;;;;;;;;;;;6551:34;632:13273;;;;;;;;;;;;;;;;;6601:45;632:13273;;;;-1:-1:-1;;;632:13273:159;;;;;;;;;;;;;;;;;-1:-1:-1;;;632:13273:159;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;632:13273:159;;;;;;;;;;;;-1:-1:-1;;;632:13273:159;;;;;;;6112:36;6132:11;632:13273;6132:11;:16;;6112:36;;632:13273;;;;;;-1:-1:-1;;632:13273:159;;;;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;:::i;:::-;7368:53:64;;516:66:62;7368:53:64;1292:93:62;;7628:52:64;1503:4:62;516:66;7628:52:64;-1:-1:-1;;;;;;;;;;;632:13273:159;;8852:107;632:13273;;8860:38;;8852:107;:::i;:::-;632:13273;9021:13;632:13273;9016:262;9066:3;9036:28;;;;;;632:13273;;;;;;;;;;;;;;;;;;;10809:27;;;;632:13273;;10845:39;;632:13273;10809:75;632:13273;;10966:58;632:13273;10990:33;;632:13273;10966:58;:::i;:::-;632:13273;;;;11284:26;;;;;:::i;:::-;632:13273;;;;;;;:::i;:::-;;;;;;11237:74;;;;632:13273;;;10809:27;;;632:13273;;;;;;;;;;;;;11381:28;;;632:13273;;;;;;;;;;;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;;;;;;;;;;;;;11892:30;;;632:13273;;;11978:3;632:13273;;;;11953:23;;;;;632:13273;;;;;;;;;;;;;;;-1:-1:-1;;632:13273:159;;;;;;;;;;;;;12124:18;;;;:::i;:::-;-1:-1:-1;;;;;632:13273:159;;;;;12095:28;;;632:13273;;;;;;12095:53;632:13273;;12241:32;;;632:13273;-1:-1:-1;;;;;632:13273:159;;12284:18;;;:::i;:::-;12304:25;11381:28;12304:25;;632:13273;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;-1:-1:-1;;;12228:102:159;;-1:-1:-1;;;;;632:13273:159;;;;12228:102;;632:13273;;;;;;;;;;12228:102;;632:13273;;;;12228:102;;;;;;;;11978:3;-1:-1:-1;;;;;;12378:18:159;;;:::i;:::-;632:13273;;-1:-1:-1;;;;;632:13273:159;;;;;;;12370:62;;632:13273;;12370:62;;632:13273;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;12228:102;632:13273;;;-1:-1:-1;;;;;632:13273:159;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;632:13273:159;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12370:62;;;;;;;632:13273;12370:62;;;;;632:13273;12370:62;;;;;;;;;;;;632:13273;12370:62;;;632:13273;12467:47;;;1503:4:62;12467:47:159;;:::i;:::-;11978:3;632:13273;11938:13;;;;;;12370:62;;;632:13273;12370:62;;;;;;;;;632:13273;12370:62;;;:::i;:::-;;;632:13273;;;;;1503:4:62;12370:62:159;;;;;-1:-1:-1;12370:62:159;;632:13273;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;632:13273:159;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;632:13273:159;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;632:13273:159;11381:28;632:13273;;;:::i;:::-;;;;;;;;;;11381:28;632:13273;;;;;;;;;;;;;;;;;;;;;1503:4:62;632:13273:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1503:4:62;632:13273:159;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;632:13273:159;;;;;:::i;:::-;;;;;;;;;;;;;;12228:102;632:13273;12228:102;;;;;;;;;632:13273;12228:102;;;:::i;:::-;;;632:13273;;;;;;;;;;12228:102;632:13273;;;;12228:102;;;-1:-1:-1;12228:102:159;;632:13273;;;-1:-1:-1;;;632:13273:159;;;;;;;;;;;;;12228:102;632:13273;;;-1:-1:-1;;;632:13273:159;;;;;;;11953:23;9192:75;11953:23;;;;;;;;;;1503:4:62;11953:23:159;;632:13273;;;;;12542:28;632:13273;11426:37;632:13273;;;;;;;11426:37;11554:26;632:13273;11284:26;;11554;:::i;:::-;632:13273;;;;2718:98:161;632:13273:159;2718:98:161;;632:13273:159;;;;;;;;;;;;;;;;;10845:39;;632:13273;;;;;10990:33;632:13273;;;;;;;;;;2718:98:161;;;;;;:::i;9192:75:159:-;9066:3;632:13273;9021:13;;;;;;632:13273;;;-1:-1:-1;;;632:13273:159;;;;;;;;;;;;;12228:102;632:13273;;;-1:-1:-1;;;632:13273:159;;;;;;;;;;-1:-1:-1;;;632:13273:159;;;;;;;;;;;;;12228:102;632:13273;;;-1:-1:-1;;;632:13273:159;;;;;;;9036:28;9309:79;9288:156;9036:28;;;;632:13273;;;;;9341:33;9309:79;;:::i;9288:156::-;632:13273;516:66:62;7628:52:64;632:13273:159;1292:93:62;1344:30;;;632:13273:159;1344:30:62;632:13273:159;;1344:30:62;632:13273:159;;;;;;-1:-1:-1;;632:13273:159;;;;;;5399:42;-1:-1:-1;;;;;;;;;;;632:13273:159;5399:42;632:13273;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;632:13273:159;;;;;;:::o;:::-;;;-1:-1:-1;;;;;632:13273:159;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;632:13273:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;632:13273:159;;;;;;;:::o;:::-;;;;-1:-1:-1;632:13273:159;;;;;-1:-1:-1;632:13273:159;;;;;;;;-1:-1:-1;;;;;632:13273:159;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;632:13273:159;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;632:13273:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;632:13273:159;;-1:-1:-1;632:13273:159;;-1:-1:-1;632:13273:159;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;-1:-1:-1;632:13273:159;;;;;;;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;-1:-1:-1;632:13273:159;;;;;;;:::o;:::-;;-1:-1:-1;;;;;632:13273:159;;;;;;;:::o;2941:348::-;-1:-1:-1;;;;;;;;;;;632:13273:159;3146:42;;;632:13273;3098:22;;;;;;3271:11;;;;632:13273;2941:348;:::o;3122:3::-;3189:14;;;;;;:::i;:::-;-1:-1:-1;;;;;632:13273:159;-1:-1:-1;632:13273:159;;;;;;;;;;;;;3145:59;3141:110;;632:13273;;3083:13;;3141:110;3224:12;;;;632:13273;3224:12;:::o;632:13273::-;;;;;;;;;;:::o;:::-;-1:-1:-1;;632:13273:159;;;;;;;:::o;:::-;;;;;;;;;;;;3405:215:25;-1:-1:-1;;;;;632:13273:159;3489:22:25;;3485:91;;-1:-1:-1;;;;;;;;;;;632:13273:159;;-1:-1:-1;;;;;;632:13273:159;;;;;;;-1:-1:-1;;;;;632:13273:159;3975:40:25;-1:-1:-1;;3975:40:25;3405:215::o;3485:91::-;3534:31;;;3509:1;3534:31;3509:1;3534:31;632:13273:159;;3509:1:25;3534:31;632:13273:159;;;;;;;;;;:::o;4532:793:161:-;;;;4728:48;4750:25;;;4728:48;:::i;:::-;632:13273:159;;;4851:27:161;;;;632:13273:159;;;4851:27:161;;;;632:13273:159;4851:27:161;;:::i;:::-;2858:45:68;632:13273:159;;;2858:45:68;;4851:27:161;2858:45:68;;632:13273:159;;;;;;4813:4:161;632:13273:159;;;;;;;;;;;;;;;;;;;;2858:45:68;;632:13273:159;;2858:45:68;;;;;;:::i;:::-;632:13273:159;2848:56:68;;632:13273:159;4932:13:161;5111:42;632:13273:159;5111:42:161;;4927:369;4971:3;4947:22;;;;;;632:13273:159;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;632:13273:159;;;;4851:27:161;632:13273:159;;;;;;;;;;;;;;;;;-1:-1:-1;;632:13273:159;4851:27:161;632:13273:159;;;:::i;:::-;;;;4851:27:161;632:13273:159;;;;;;;;;4851:27:161;632:13273:159;3915:8:66;632:13273:159;3859:27:66;632:13273:159;;;;;;;;;3859:27:66;;:::i;:::-;3915:8;;;;;:::i;:::-;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;;;;;;5107:179:161;;4971:3;632:13273:159;;4932:13:161;;5107:179;5188:17;;;;:::i;:::-;:30;;;;5107:179;5184:88;5242:11;;;;;;;632:13273:159;5242:11:161;:::o;4947:22::-;;;;;;;;632:13273:159;4532:793:161;:::o;2658:162:25:-;-1:-1:-1;;;;;;;;;;;632:13273:159;-1:-1:-1;;;;;632:13273:159;966:10:30;2717:23:25;2713:101;;2658:162::o;2713:101::-;2763:40;;;-1:-1:-1;2763:40:25;966:10:30;2763:40:25;632:13273:159;;-1:-1:-1;2763:40:25;9493:887:159;-1:-1:-1;;;;;;;;;;;632:13273:159;;9629:107;632:13273;;9637:38;;9629:107;:::i;:::-;632:13273;-1:-1:-1;632:13273:159;9768:19;;;632:13273;;;;-1:-1:-1;632:13273:159;;;;;;;;;9806:24;9768:62;632:13273;;2935:43:44;10265:33:159;632:13273;;;;;;10119:32;;;632:13273;;;;;;10163:32;;632:13273;;;;;;;;;10163:32;;;;;;:::i;:::-;632:13273;10153:43;;2935::44;;:::i;:::-;10208:37:159;632:13273;;;;;;;-1:-1:-1;632:13273:159;10208:28;;;632:13273;;;;-1:-1:-1;632:13273:159;;10265:33;:35;632:13273;;10265:35;:::i;:::-;632:13273;;;;-1:-1:-1;;;;;632:13273:159;;;;10316:32;;632:13273;;10316:32;9493:887;:::o;632:13273::-;;;-1:-1:-1;;;632:13273:159;;;;;;;;;;;;;;;;;-1:-1:-1;;;632:13273:159;;;;;;;3945:169:161;-1:-1:-1;632:13273:159;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;632:13273:159;;;4068:12:161;632:13273:159;;4032:75:161;;632:13273:159;;4090:15:161;632:13273:159;;4032:75:161;;632:13273:159;3945:169:161;:::o;12583:406:159:-;;12687:36;;;632:13273;;;;;12788:13;;12846:42;;;12734:1;12827:3;632:13273;;12803:22;;;;;12687:36;;-1:-1:-1;;;;;12889:14:159;632:13273;12889:14;;:::i;:::-;632:13273;;;;;;;;-1:-1:-1;632:13273:159;;;;;-1:-1:-1;632:13273:159;;;;;;;;;;;12788:13;;12803:22;-1:-1:-1;632:13273:159;;;12803:22;-1:-1:-1;;;;;;632:13273:159;;;;;;;;;;;;;;;;;;;12783:139;632:13273;;;;12734:1;632:13273;;12734:1;632:13273;12734:1;632:13273;;;;;;12583:406;;;;:::o;632:13273::-;;;-1:-1:-1;;;;;632:13273:159;;;;;;;;;;12687:36;632:13273;;;;;12734:1;632:13273;;;12734:1;632:13273;;;;;;;;;;;;;;;;12734:1;632:13273;;12687:36;632:13273;;;;;;;;;;;;;;;;;;;;;;;;;;;;5331:268:161;632:13273:159;5503:19:161;;;632:13273:159;;;;;;;;;;;;;;;;;;;5579:4:161;632:13273:159;;;;;;;5587:5:161;632:13273:159;;5331:268:161;:::o;2839:340::-;;632:13273:159;;2937:12:161;632:13273:159;2937:12:161;632:13273:159;;;;2920:230:161;2955:5;;;2920:230;-1:-1:-1;632:13273:159;;-1:-1:-1;2839:340:161:o;2962:3::-;2995:12;;3025:11;;;;;-1:-1:-1;2952:1:161;;-1:-1:-1;;3056:11:161:o;3021:119::-;3092:8;3088:52;;632:13273:159;;;;-1:-1:-1;;632:13273:159;;2925:28:161;;3088:52;3120:5;;632:13273:159;;;-1:-1:-1;;;;;632:13273:159;;;;;;:::o;7084:141:26:-;632:13273:159;-1:-1:-1;;;;;;;;;;;632:13273:159;;;;7150:18:26;7146:73;;7084:141::o;7146:73::-;7191:17;;;-1:-1:-1;7191:17:26;;-1:-1:-1;7191:17:26;2129:766:66;632:13273:159;;;2129:766:66;2276:2;2256:22;;2276:2;;2739:25;2539:180;;;;;;;;;;;;;;;-1:-1:-1;2539:180:66;2739:25;;:::i;:::-;2732:32;;;;;:::o;2252:637::-;2795:83;;2811:1;2795:83;2815:35;2795:83;;:::o;7196:532::-;632:13273:159;;;;;;7282:29:66;;;7327:7;;:::o;7278:444::-;632:13273:159;7378:38:66;;632:13273:159;;7439:23:66;;;7291:20;7439:23;632:13273:159;7291:20:66;7439:23;7374:348;7492:35;7483:44;;7492:35;;7550:46;;;;7291:20;7550:46;632:13273:159;;;7291:20:66;7550:46;7479:243;7626:30;7617:39;7613:109;;7479:243;7196:532::o;7613:109::-;7679:32;;;7291:20;7679:32;632:13273:159;;;7291:20:66;7679:32;3411:1001:44;3743:569;3411:1001;3743:569;;;;;;;-1:-1:-1;3743:569:44;;;;;;;;-1:-1:-1;3743:569:44;632:13273:159;-1:-1:-1;;;;;632:13273:159;;4325:22:44;4321:85;;3411:1001::o;4321:85::-;4370:25;;;-1:-1:-1;4370:25:44;;-1:-1:-1;4370:25:44;5140:1530:66;;;6199:66;6186:79;;6182:164;;632:13273:159;;;;;;-1:-1:-1;632:13273:159;;;;;;;;;;;;;;;;;;;6457:24:66;;;;;;;;;-1:-1:-1;6457:24:66;-1:-1:-1;;;;;632:13273:159;;6495:20:66;6491:113;;6614:49;-1:-1:-1;6614:49:66;-1:-1:-1;5140:1530:66;:::o;6491:113::-;6531:62;-1:-1:-1;6531:62:66;6457:24;6531:62;-1:-1:-1;6531:62:66;:::o;6182:164::-;6281:54;;;6297:1;6281:54;6301:30;6281:54;;:::o","linkReferences":{}},"methodIdentifiers":{"areValidators(address[])":"8f381dbe","codeState(bytes32)":"c13911e8","codesStates(bytes32[])":"82bdeaad","commitBlocks((bytes32,uint48,bytes32,bytes32,(address,bytes32,address,uint128,(bytes32,address,uint128)[],(bytes32,address,bytes,uint128,(bytes32,bytes4))[])[])[],bytes[])":"01b1d156","commitCodes((bytes32,bool)[],bytes[])":"e97d3eb3","computeSettings()":"84d22a4f","createProgram(bytes32,bytes32)":"527de0f9","createProgramWithDecoder(address,bytes32,bytes32)":"e7006a74","genesisBlockHash()":"28e24b3d","initialize(address,address,address,address,address[])":"f8453e7c","isValidator(address)":"facd743b","latestCommittedBlockHash()":"c9f16a11","lookupGenesisHash()":"8b1edf1e","mirrorImpl()":"e6fabc09","mirrorProxyImpl()":"65ecfea2","owner()":"8da5cb5b","programCodeId(address)":"9067088e","programsCodeIds(address[])":"baaf0201","programsCount()":"96a2ddfa","reinitialize()":"6c2eb350","renounceOwnership()":"715018a6","requestCodeValidation(bytes32,bytes32)":"1c149d8a","setMirror(address)":"3d43b418","signingThresholdPercentage()":"efd81abc","transferOwnership(address)":"f2fde38b","validatedCodesCount()":"007a32e7","validators()":"ca1e7819","validatorsCount()":"ed612f8c","validatorsThreshold()":"edc87225","wrappedVara()":"88f50cf0"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"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\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"name\":\"BlockCommitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"codeId\",\"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\":\"threshold\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"wvaraPerSecond\",\"type\":\"uint128\"}],\"name\":\"ComputationSettingsChanged\",\"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\":\"ValidatorsChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_validators\",\"type\":\"address[]\"}],\"name\":\"areValidators\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_codeId\",\"type\":\"bytes32\"}],\"name\":\"codeState\",\"outputs\":[{\"internalType\":\"enum Gear.CodeState\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"_codesIds\",\"type\":\"bytes32[]\"}],\"name\":\"codesStates\",\"outputs\":[{\"internalType\":\"enum Gear.CodeState[]\",\"name\":\"\",\"type\":\"uint8[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes32\",\"name\":\"previousCommittedBlock\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"predecessorBlock\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"actorId\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"newStateHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"inheritor\",\"type\":\"address\"},{\"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 Gear.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 Gear.ReplyDetails\",\"name\":\"replyDetails\",\"type\":\"tuple\"}],\"internalType\":\"struct Gear.Message[]\",\"name\":\"messages\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Gear.StateTransition[]\",\"name\":\"transitions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Gear.BlockCommitment[]\",\"name\":\"_blockCommitments\",\"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 Gear.CodeCommitment[]\",\"name\":\"_codeCommitments\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes[]\",\"name\":\"_signatures\",\"type\":\"bytes[]\"}],\"name\":\"commitCodes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"computeSettings\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"threshold\",\"type\":\"uint64\"},{\"internalType\":\"uint128\",\"name\":\"wvaraPerSecond\",\"type\":\"uint128\"}],\"internalType\":\"struct Gear.ComputationSettings\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_codeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_salt\",\"type\":\"bytes32\"}],\"name\":\"createProgram\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_decoderImpl\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_codeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_salt\",\"type\":\"bytes32\"}],\"name\":\"createProgramWithDecoder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"genesisBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_mirror\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_mirrorProxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_wrappedVara\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"_validators\",\"type\":\"address[]\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_validator\",\"type\":\"address\"}],\"name\":\"isValidator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestCommittedBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lookupGenesisHash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mirrorImpl\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mirrorProxyImpl\",\"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\":\"_programId\",\"type\":\"address\"}],\"name\":\"programCodeId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_programsIds\",\"type\":\"address[]\"}],\"name\":\"programsCodeIds\",\"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\":\"address\",\"name\":\"newMirror\",\"type\":\"address\"}],\"name\":\"setMirror\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"signingThresholdPercentage\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatedCodesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"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\":\"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\":{\"BlockCommitted(bytes32)\":{\"details\":\"This is an *informational* event, signaling that the block outcome has been committed.\",\"params\":{\"hash\":\"The block hash that was \\\"finalized\\\" in relation to the necessary transitions.\"}},\"CodeGotValidated(bytes32,bool)\":{\"details\":\"This is an *informational* event, signaling the results of code validation.\",\"params\":{\"codeId\":\"The ID of the code that was validated.\",\"valid\":\"The result of the validation: indicates whether the code ID can be used for program creation.\"}},\"CodeValidationRequested(bytes32,bytes32)\":{\"details\":\"This is a *requesting* event, signaling that validators need to download and validate the code from the transaction blob.\",\"params\":{\"blobTxHash\":\"The transaction hash that contains the WASM blob. Set to zero if applied to the current transaction.\",\"codeId\":\"The expected code ID of the applied WASM blob, represented as a Blake2 hash.\"}},\"ComputationSettingsChanged(uint64,uint128)\":{\"details\":\"This is both an *informational* and *requesting* event, signaling that an authority decided to change the computation settings. Users and program authors may want to adjust their practices, while validators need to apply the changes internally starting from the next block.\",\"params\":{\"threshold\":\"The amount of Gear gas initially allocated for free to allow the program to decide if it wants to process the incoming message.\",\"wvaraPerSecond\":\"The amount of WVara to be charged from the program's execution balance per second of computation.\"}},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"ProgramCreated(address,bytes32)\":{\"details\":\"This is both an *informational* and *requesting* event, signaling the creation of a new program and its Ethereum mirror. Validators need to initialize it with a zeroed hash state internally.\",\"params\":{\"actorId\":\"ID of the actor that was created. It is accessible inside the co-processor and on Ethereum by this identifier.\",\"codeId\":\"The code ID of the WASM implementation of the created program.\"}},\"StorageSlotChanged()\":{\"details\":\"This is both an *informational* and *requesting* event, signaling that an authority decided to wipe the router state, rendering all previously existing codes and programs ineligible. Validators need to wipe their databases immediately.\"},\"ValidatorsChanged()\":{\"details\":\"This is an *informational* event, signaling that only new validators are now able to pass commitment signing verification.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"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\":{\"events\":{\"BlockCommitted(bytes32)\":{\"notice\":\"Emitted when all necessary state transitions have been applied and states have changed.\"},\"CodeGotValidated(bytes32,bool)\":{\"notice\":\"Emitted when a code, previously requested for validation, receives validation results, so its CodeStatus changed.\"},\"CodeValidationRequested(bytes32,bytes32)\":{\"notice\":\"Emitted when a new code validation request is submitted.\"},\"ComputationSettingsChanged(uint64,uint128)\":{\"notice\":\"Emitted when the computation settings have been changed.\"},\"ProgramCreated(address,bytes32)\":{\"notice\":\"Emitted when a new program within the co-processor is created and is now available on-chain.\"},\"StorageSlotChanged()\":{\"notice\":\"Emitted when the router's storage slot has been changed.\"},\"ValidatorsChanged()\":{\"notice\":\"Emitted when the election mechanism forces the validator set to be changed.\"}},\"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/\",\":symbiotic-core/=lib/symbiotic-core/\"],\"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\":\"0x1899463c32e174ebde503846dd1b40ddb6d6ba15e21d68b21b8151e97af35a5e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://3c91227968491548c006b70f1de87bb1b67a83d72d05faf19ba09ddfe27de3f6\",\"dweb:/ipfs/QmeXXQd2Wk1Jp1rvbysD1hZb3QVXR3sPxkU8UKBfwrKmkm\"]},\"src/IMirrorDecoder.sol\":{\"keccak256\":\"0x95bfe42461bd03e726f894679f4b4133034a405672fe8343c3343d0964cf9072\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://a0907d84596ed62b9ea222fd841fc0259e87b17dd0b5af3f6d0d8a8f4726994d\",\"dweb:/ipfs/QmTkumKh7DBJNXrark6NBqBxCtnYmbRMGYkRyxxzpW9wKr\"]},\"src/IRouter.sol\":{\"keccak256\":\"0x924f9a3927e943beba5f83107a8b206ab64c6a8f31deed543b923007bb49b9b8\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8775b64fab00cc3b3a87c6e980d8dfc32a851ea668c7d719d7074bd8a56d0f17\",\"dweb:/ipfs/QmRofDymj9HH3ePviV6yUiweCb8dfKKwbBF6ChwZabYGFi\"]},\"src/IWrappedVara.sol\":{\"keccak256\":\"0xfc2f9955b1d8f74a98a087b490a03b86933c423eb58b840f1e3eb4cd58eac175\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://5942f66657786636ddb832587404810bf65fc757e12ddaa07393a0b3f885840f\",\"dweb:/ipfs/QmTEP15EF9zrA7bCj8cesNd8QyUPHM3XgtKJecCUjsA5Jf\"]},\"src/Router.sol\":{\"keccak256\":\"0x098f1f85d1d0e06e941a21185d66c71f3b3ed9b32e3eb397f1f2675690d36a85\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://adb2450142d1c647273e63863755943f46e42ad13817ababcd29526dc218cc72\",\"dweb:/ipfs/QmdUvHEPWzcWLY99cK9X14uuthML4ESjJ4WKqMYXuXF7De\"]},\"src/libraries/Gear.sol\":{\"keccak256\":\"0xa543913342b4408d07fe4d884280b5c1d2430e8386713e9b6e1a5924e3e2bfbc\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://9e466d986795dab2d942984fcbf03e8e8995cd17e4221f1dfca715af091d03ec\",\"dweb:/ipfs/QmWo16RoqKERSYornA8qPqL32rYveeEHxiHmDHongS6uzy\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"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":"bytes32","name":"hash","type":"bytes32","indexed":false}],"type":"event","name":"BlockCommitted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"codeId","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":"threshold","type":"uint64","indexed":false},{"internalType":"uint128","name":"wvaraPerSecond","type":"uint128","indexed":false}],"type":"event","name":"ComputationSettingsChanged","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":"ValidatorsChanged","anonymous":false},{"inputs":[{"internalType":"address[]","name":"_validators","type":"address[]"}],"stateMutability":"view","type":"function","name":"areValidators","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"_codeId","type":"bytes32"}],"stateMutability":"view","type":"function","name":"codeState","outputs":[{"internalType":"enum Gear.CodeState","name":"","type":"uint8"}]},{"inputs":[{"internalType":"bytes32[]","name":"_codesIds","type":"bytes32[]"}],"stateMutability":"view","type":"function","name":"codesStates","outputs":[{"internalType":"enum Gear.CodeState[]","name":"","type":"uint8[]"}]},{"inputs":[{"internalType":"struct Gear.BlockCommitment[]","name":"_blockCommitments","type":"tuple[]","components":[{"internalType":"bytes32","name":"hash","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"},{"internalType":"bytes32","name":"previousCommittedBlock","type":"bytes32"},{"internalType":"bytes32","name":"predecessorBlock","type":"bytes32"},{"internalType":"struct Gear.StateTransition[]","name":"transitions","type":"tuple[]","components":[{"internalType":"address","name":"actorId","type":"address"},{"internalType":"bytes32","name":"newStateHash","type":"bytes32"},{"internalType":"address","name":"inheritor","type":"address"},{"internalType":"uint128","name":"valueToReceive","type":"uint128"},{"internalType":"struct Gear.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 Gear.Message[]","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 Gear.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 Gear.CodeCommitment[]","name":"_codeCommitments","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":[],"stateMutability":"view","type":"function","name":"computeSettings","outputs":[{"internalType":"struct Gear.ComputationSettings","name":"","type":"tuple","components":[{"internalType":"uint64","name":"threshold","type":"uint64"},{"internalType":"uint128","name":"wvaraPerSecond","type":"uint128"}]}]},{"inputs":[{"internalType":"bytes32","name":"_codeId","type":"bytes32"},{"internalType":"bytes32","name":"_salt","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"createProgram","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_decoderImpl","type":"address"},{"internalType":"bytes32","name":"_codeId","type":"bytes32"},{"internalType":"bytes32","name":"_salt","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"createProgramWithDecoder","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"genesisBlockHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_mirror","type":"address"},{"internalType":"address","name":"_mirrorProxy","type":"address"},{"internalType":"address","name":"_wrappedVara","type":"address"},{"internalType":"address[]","name":"_validators","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"address","name":"_validator","type":"address"}],"stateMutability":"view","type":"function","name":"isValidator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"latestCommittedBlockHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"lookupGenesisHash"},{"inputs":[],"stateMutability":"view","type":"function","name":"mirrorImpl","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"mirrorProxyImpl","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_programId","type":"address"}],"stateMutability":"view","type":"function","name":"programCodeId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address[]","name":"_programsIds","type":"address[]"}],"stateMutability":"view","type":"function","name":"programsCodeIds","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":"address","name":"newMirror","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMirror"},{"inputs":[],"stateMutability":"view","type":"function","name":"signingThresholdPercentage","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"validatedCodesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"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":"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."},"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/","symbiotic-core/=lib/symbiotic-core/"],"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":"0x1899463c32e174ebde503846dd1b40ddb6d6ba15e21d68b21b8151e97af35a5e","urls":["bzz-raw://3c91227968491548c006b70f1de87bb1b67a83d72d05faf19ba09ddfe27de3f6","dweb:/ipfs/QmeXXQd2Wk1Jp1rvbysD1hZb3QVXR3sPxkU8UKBfwrKmkm"],"license":"UNLICENSED"},"src/IMirrorDecoder.sol":{"keccak256":"0x95bfe42461bd03e726f894679f4b4133034a405672fe8343c3343d0964cf9072","urls":["bzz-raw://a0907d84596ed62b9ea222fd841fc0259e87b17dd0b5af3f6d0d8a8f4726994d","dweb:/ipfs/QmTkumKh7DBJNXrark6NBqBxCtnYmbRMGYkRyxxzpW9wKr"],"license":"UNLICENSED"},"src/IRouter.sol":{"keccak256":"0x924f9a3927e943beba5f83107a8b206ab64c6a8f31deed543b923007bb49b9b8","urls":["bzz-raw://8775b64fab00cc3b3a87c6e980d8dfc32a851ea668c7d719d7074bd8a56d0f17","dweb:/ipfs/QmRofDymj9HH3ePviV6yUiweCb8dfKKwbBF6ChwZabYGFi"],"license":"UNLICENSED"},"src/IWrappedVara.sol":{"keccak256":"0xfc2f9955b1d8f74a98a087b490a03b86933c423eb58b840f1e3eb4cd58eac175","urls":["bzz-raw://5942f66657786636ddb832587404810bf65fc757e12ddaa07393a0b3f885840f","dweb:/ipfs/QmTEP15EF9zrA7bCj8cesNd8QyUPHM3XgtKJecCUjsA5Jf"],"license":"UNLICENSED"},"src/Router.sol":{"keccak256":"0x098f1f85d1d0e06e941a21185d66c71f3b3ed9b32e3eb397f1f2675690d36a85","urls":["bzz-raw://adb2450142d1c647273e63863755943f46e42ad13817ababcd29526dc218cc72","dweb:/ipfs/QmdUvHEPWzcWLY99cK9X14uuthML4ESjJ4WKqMYXuXF7De"],"license":"UNLICENSED"},"src/libraries/Gear.sol":{"keccak256":"0xa543913342b4408d07fe4d884280b5c1d2430e8386713e9b6e1a5924e3e2bfbc","urls":["bzz-raw://9e466d986795dab2d942984fcbf03e8e8995cd17e4221f1dfca715af091d03ec","dweb:/ipfs/QmWo16RoqKERSYornA8qPqL32rYveeEHxiHmDHongS6uzy"],"license":"UNLICENSED"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"src/Router.sol","id":76725,"exportedSymbols":{"Clones":[41840],"Gear":[77275],"IMirror":[73559],"IMirrorDecoder":[73594],"IRouter":[73844],"IWrappedVara":[73855],"OwnableUpgradeable":[39387],"ReentrancyGuardTransient":[44045],"Router":[76724],"StorageSlot":[44581]},"nodeType":"SourceUnit","src":"39:13867:159","nodes":[{"id":75371,"nodeType":"PragmaDirective","src":"39:24:159","nodes":[],"literals":["solidity","^","0.8",".26"]},{"id":75373,"nodeType":"ImportDirective","src":"65:64:159","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/Clones.sol","file":"@openzeppelin/contracts/proxy/Clones.sol","nameLocation":"-1:-1:-1","scope":76725,"sourceUnit":41841,"symbolAliases":[{"foreign":{"id":75372,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41840,"src":"73:6:159","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75375,"nodeType":"ImportDirective","src":"130:42:159","nodes":[],"absolutePath":"src/libraries/Gear.sol","file":"./libraries/Gear.sol","nameLocation":"-1:-1:-1","scope":76725,"sourceUnit":77276,"symbolAliases":[{"foreign":{"id":75374,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77275,"src":"138:4:159","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75377,"nodeType":"ImportDirective","src":"173:38:159","nodes":[],"absolutePath":"src/IMirror.sol","file":"./IMirror.sol","nameLocation":"-1:-1:-1","scope":76725,"sourceUnit":73560,"symbolAliases":[{"foreign":{"id":75376,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73559,"src":"181:7:159","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75379,"nodeType":"ImportDirective","src":"212:52:159","nodes":[],"absolutePath":"src/IMirrorDecoder.sol","file":"./IMirrorDecoder.sol","nameLocation":"-1:-1:-1","scope":76725,"sourceUnit":73595,"symbolAliases":[{"foreign":{"id":75378,"name":"IMirrorDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73594,"src":"220:14:159","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75381,"nodeType":"ImportDirective","src":"265:38:159","nodes":[],"absolutePath":"src/IRouter.sol","file":"./IRouter.sol","nameLocation":"-1:-1:-1","scope":76725,"sourceUnit":73845,"symbolAliases":[{"foreign":{"id":75380,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73844,"src":"273:7:159","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75383,"nodeType":"ImportDirective","src":"304:48:159","nodes":[],"absolutePath":"src/IWrappedVara.sol","file":"./IWrappedVara.sol","nameLocation":"-1:-1:-1","scope":76725,"sourceUnit":73856,"symbolAliases":[{"foreign":{"id":75382,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73855,"src":"312:12:159","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75385,"nodeType":"ImportDirective","src":"353:101:159","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":76725,"sourceUnit":39388,"symbolAliases":[{"foreign":{"id":75384,"name":"OwnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39387,"src":"361:18:159","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75387,"nodeType":"ImportDirective","src":"455:100:159","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuardTransient.sol","file":"@openzeppelin/contracts/utils/ReentrancyGuardTransient.sol","nameLocation":"-1:-1:-1","scope":76725,"sourceUnit":44046,"symbolAliases":[{"foreign":{"id":75386,"name":"ReentrancyGuardTransient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44045,"src":"463:24:159","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75389,"nodeType":"ImportDirective","src":"556:74:159","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol","file":"@openzeppelin/contracts/utils/StorageSlot.sol","nameLocation":"-1:-1:-1","scope":76725,"sourceUnit":44582,"symbolAliases":[{"foreign":{"id":75388,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44581,"src":"564:11:159","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":76724,"nodeType":"ContractDefinition","src":"632:13273:159","nodes":[{"id":75398,"nodeType":"VariableDeclaration","src":"813:106:159","nodes":[],"constant":true,"mutability":"constant","name":"SLOT_STORAGE","nameLocation":"838:12:159","scope":76724,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75396,"name":"bytes32","nodeType":"ElementaryTypeName","src":"813:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307835633039636131623962383132376134666439663363333834616163353962363631343431653832306531373733333735336666356632653836653165303030","id":75397,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"853:66:159","typeDescriptions":{"typeIdentifier":"t_rational_41630078590300661333111585883568696735413380457407274925697692750148467286016_by_1","typeString":"int_const 4163...(69 digits omitted)...6016"},"value":"0x5c09ca1b9b8127a4fd9f3c384aac59b661441e820e17733753ff5f2e86e1e000"},"visibility":"private"},{"id":75406,"nodeType":"FunctionDefinition","src":"979:53:159","nodes":[],"body":{"id":75405,"nodeType":"Block","src":"993:39:159","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75402,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39609,"src":"1003:20:159","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":75403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1003:22:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75404,"nodeType":"ExpressionStatement","src":"1003:22:159"}]},"documentation":{"id":75399,"nodeType":"StructuredDocumentation","src":"926:48:159","text":"@custom:oz-upgrades-unsafe-allow constructor"},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":75400,"nodeType":"ParameterList","parameters":[],"src":"990:2:159"},"returnParameters":{"id":75401,"nodeType":"ParameterList","parameters":[],"src":"993:0:159"},"scope":76724,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":75478,"nodeType":"FunctionDefinition","src":"1038:677:159","nodes":[],"body":{"id":75477,"nodeType":"Block","src":"1232:483:159","nodes":[],"statements":[{"expression":{"arguments":[{"id":75423,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75408,"src":"1257:6:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":75422,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39247,"src":"1242:14:159","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":75424,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1242:22:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75425,"nodeType":"ExpressionStatement","src":"1242:22:159"},{"expression":{"arguments":[{"hexValue":"726f757465722e73746f726167652e526f757465725631","id":75427,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1291:25:159","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":75426,"name":"_setStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76723,"src":"1275:15:159","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":75428,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1275:42:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75429,"nodeType":"ExpressionStatement","src":"1275:42:159"},{"assignments":[75432],"declarations":[{"constant":false,"id":75432,"mutability":"mutable","name":"router","nameLocation":"1343:6:159","nodeType":"VariableDeclaration","scope":75477,"src":"1327:22:159","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":75431,"nodeType":"UserDefinedTypeName","pathNode":{"id":75430,"name":"Storage","nameLocations":["1327:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73633,"src":"1327:7:159"},"referencedDeclaration":73633,"src":"1327:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":75435,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":75433,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"1352:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1352:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"1327:34:159"},{"expression":{"id":75442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75436,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75432,"src":"1372:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75438,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1379:12:159","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":73612,"src":"1372:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$76900_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":75439,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77275,"src":"1394:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77275_$","typeString":"type(library Gear)"}},"id":75440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1399:10:159","memberName":"newGenesis","nodeType":"MemberAccess","referencedDeclaration":77120,"src":"1394:15:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_GenesisBlockInfo_$76900_memory_ptr_$","typeString":"function () view returns (struct Gear.GenesisBlockInfo memory)"}},"id":75441,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1394:17:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$76900_memory_ptr","typeString":"struct Gear.GenesisBlockInfo memory"}},"src":"1372:39:159","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$76900_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":75443,"nodeType":"ExpressionStatement","src":"1372:39:159"},{"expression":{"id":75453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75444,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75432,"src":"1421:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75446,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1428:13:159","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":73620,"src":"1421:20:159","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$76861_storage","typeString":"struct Gear.AddressBook storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":75449,"name":"_mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75410,"src":"1461:7:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":75450,"name":"_mirrorProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75412,"src":"1470:12:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":75451,"name":"_wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75414,"src":"1484:12:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":75447,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77275,"src":"1444:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77275_$","typeString":"type(library Gear)"}},"id":75448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1449:11:159","memberName":"AddressBook","nodeType":"MemberAccess","referencedDeclaration":76861,"src":"1444:16:159","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_AddressBook_$76861_storage_ptr_$","typeString":"type(struct Gear.AddressBook storage pointer)"}},"id":75452,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1444:53:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$76861_memory_ptr","typeString":"struct Gear.AddressBook memory"}},"src":"1421:76:159","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$76861_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":75454,"nodeType":"ExpressionStatement","src":"1421:76:159"},{"expression":{"id":75462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":75455,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75432,"src":"1507:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75458,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1514:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73624,"src":"1507:25:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$76958_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":75459,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1533:26:159","memberName":"signingThresholdPercentage","nodeType":"MemberAccess","referencedDeclaration":76950,"src":"1507:52:159","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75460,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77275,"src":"1562:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77275_$","typeString":"type(library Gear)"}},"id":75461,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1567:28:159","memberName":"SIGNING_THRESHOLD_PERCENTAGE","nodeType":"MemberAccess","referencedDeclaration":76851,"src":"1562:33:159","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"1507:88:159","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":75463,"nodeType":"ExpressionStatement","src":"1507:88:159"},{"expression":{"arguments":[{"id":75465,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75432,"src":"1620:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"id":75466,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75417,"src":"1628:11:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"id":75464,"name":"_setValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76615,"src":"1605:14:159","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Storage_$73633_storage_ptr_$_t_array$_t_address_$dyn_memory_ptr_$returns$__$","typeString":"function (struct IRouter.Storage storage pointer,address[] memory)"}},"id":75467,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1605:35:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75468,"nodeType":"ExpressionStatement","src":"1605:35:159"},{"expression":{"id":75475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75469,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75432,"src":"1650:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75471,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1657:15:159","memberName":"computeSettings","nodeType":"MemberAccess","referencedDeclaration":73628,"src":"1650:22:159","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$76893_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":75472,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77275,"src":"1675:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77275_$","typeString":"type(library Gear)"}},"id":75473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1680:26:159","memberName":"defaultComputationSettings","nodeType":"MemberAccess","referencedDeclaration":77067,"src":"1675:31:159","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ComputationSettings_$76893_memory_ptr_$","typeString":"function () pure returns (struct Gear.ComputationSettings memory)"}},"id":75474,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1675:33:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$76893_memory_ptr","typeString":"struct Gear.ComputationSettings memory"}},"src":"1650:58:159","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$76893_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"id":75476,"nodeType":"ExpressionStatement","src":"1650:58:159"}]},"functionSelector":"f8453e7c","implemented":true,"kind":"function","modifiers":[{"id":75420,"kind":"modifierInvocation","modifierName":{"id":75419,"name":"initializer","nameLocations":["1220:11:159"],"nodeType":"IdentifierPath","referencedDeclaration":39495,"src":"1220:11:159"},"nodeType":"ModifierInvocation","src":"1220:11:159"}],"name":"initialize","nameLocation":"1047:10:159","parameters":{"id":75418,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75408,"mutability":"mutable","name":"_owner","nameLocation":"1075:6:159","nodeType":"VariableDeclaration","scope":75478,"src":"1067:14:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75407,"name":"address","nodeType":"ElementaryTypeName","src":"1067:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":75410,"mutability":"mutable","name":"_mirror","nameLocation":"1099:7:159","nodeType":"VariableDeclaration","scope":75478,"src":"1091:15:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75409,"name":"address","nodeType":"ElementaryTypeName","src":"1091:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":75412,"mutability":"mutable","name":"_mirrorProxy","nameLocation":"1124:12:159","nodeType":"VariableDeclaration","scope":75478,"src":"1116:20:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75411,"name":"address","nodeType":"ElementaryTypeName","src":"1116:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":75414,"mutability":"mutable","name":"_wrappedVara","nameLocation":"1154:12:159","nodeType":"VariableDeclaration","scope":75478,"src":"1146:20:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75413,"name":"address","nodeType":"ElementaryTypeName","src":"1146:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":75417,"mutability":"mutable","name":"_validators","nameLocation":"1195:11:159","nodeType":"VariableDeclaration","scope":75478,"src":"1176:30:159","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":75415,"name":"address","nodeType":"ElementaryTypeName","src":"1176:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":75416,"nodeType":"ArrayTypeName","src":"1176:9:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"1057:155:159"},"returnParameters":{"id":75421,"nodeType":"ParameterList","parameters":[],"src":"1232:0:159"},"scope":76724,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":75542,"nodeType":"FunctionDefinition","src":"1721:600:159","nodes":[],"body":{"id":75541,"nodeType":"Block","src":"1779:542:159","nodes":[],"statements":[{"assignments":[75488],"declarations":[{"constant":false,"id":75488,"mutability":"mutable","name":"oldRouter","nameLocation":"1805:9:159","nodeType":"VariableDeclaration","scope":75541,"src":"1789:25:159","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":75487,"nodeType":"UserDefinedTypeName","pathNode":{"id":75486,"name":"Storage","nameLocations":["1789:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73633,"src":"1789:7:159"},"referencedDeclaration":73633,"src":"1789:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":75491,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":75489,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"1817:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75490,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1817:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"1789:37:159"},{"expression":{"arguments":[{"hexValue":"726f757465722e73746f726167652e526f757465725632","id":75493,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1853:25:159","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":75492,"name":"_setStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76723,"src":"1837:15:159","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":75494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1837:42:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75495,"nodeType":"ExpressionStatement","src":"1837:42:159"},{"assignments":[75498],"declarations":[{"constant":false,"id":75498,"mutability":"mutable","name":"newRouter","nameLocation":"1905:9:159","nodeType":"VariableDeclaration","scope":75541,"src":"1889:25:159","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":75497,"nodeType":"UserDefinedTypeName","pathNode":{"id":75496,"name":"Storage","nameLocations":["1889:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73633,"src":"1889:7:159"},"referencedDeclaration":73633,"src":"1889:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":75501,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":75499,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"1917:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1917:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"1889:37:159"},{"expression":{"id":75508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75502,"name":"newRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75498,"src":"1937:9:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75504,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1947:12:159","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":73612,"src":"1937:22:159","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$76900_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":75505,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77275,"src":"1962:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77275_$","typeString":"type(library Gear)"}},"id":75506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1967:10:159","memberName":"newGenesis","nodeType":"MemberAccess","referencedDeclaration":77120,"src":"1962:15:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_GenesisBlockInfo_$76900_memory_ptr_$","typeString":"function () view returns (struct Gear.GenesisBlockInfo memory)"}},"id":75507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1962:17:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$76900_memory_ptr","typeString":"struct Gear.GenesisBlockInfo memory"}},"src":"1937:42:159","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$76900_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":75509,"nodeType":"ExpressionStatement","src":"1937:42:159"},{"expression":{"id":75515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75510,"name":"newRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75498,"src":"1989:9:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75512,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1999:13:159","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":73620,"src":"1989:23:159","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$76861_storage","typeString":"struct Gear.AddressBook storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75513,"name":"oldRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75488,"src":"2015:9:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75514,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2025:13:159","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":73620,"src":"2015:23:159","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$76861_storage","typeString":"struct Gear.AddressBook storage ref"}},"src":"1989:49:159","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$76861_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":75516,"nodeType":"ExpressionStatement","src":"1989:49:159"},{"expression":{"id":75525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":75517,"name":"newRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75498,"src":"2049:9:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75520,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2059:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73624,"src":"2049:28:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$76958_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":75521,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2078:26:159","memberName":"signingThresholdPercentage","nodeType":"MemberAccess","referencedDeclaration":76950,"src":"2049:55:159","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":75522,"name":"oldRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75488,"src":"2119:9:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75523,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2129:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73624,"src":"2119:28:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$76958_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":75524,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2148:26:159","memberName":"signingThresholdPercentage","nodeType":"MemberAccess","referencedDeclaration":76950,"src":"2119:55:159","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"2049:125:159","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":75526,"nodeType":"ExpressionStatement","src":"2049:125:159"},{"expression":{"arguments":[{"id":75528,"name":"newRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75498,"src":"2199:9:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"expression":{"expression":{"id":75529,"name":"oldRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75488,"src":"2210:9:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75530,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2220:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73624,"src":"2210:28:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$76958_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":75531,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2239:10:159","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":76953,"src":"2210:39:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"id":75527,"name":"_setValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76615,"src":"2184:14:159","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Storage_$73633_storage_ptr_$_t_array$_t_address_$dyn_memory_ptr_$returns$__$","typeString":"function (struct IRouter.Storage storage pointer,address[] memory)"}},"id":75532,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2184:66:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75533,"nodeType":"ExpressionStatement","src":"2184:66:159"},{"expression":{"id":75539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75534,"name":"newRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75498,"src":"2261:9:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75536,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2271:15:159","memberName":"computeSettings","nodeType":"MemberAccess","referencedDeclaration":73628,"src":"2261:25:159","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$76893_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75537,"name":"oldRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75488,"src":"2289:9:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75538,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2299:15:159","memberName":"computeSettings","nodeType":"MemberAccess","referencedDeclaration":73628,"src":"2289:25:159","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$76893_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"src":"2261:53:159","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$76893_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"id":75540,"nodeType":"ExpressionStatement","src":"2261:53:159"}]},"functionSelector":"6c2eb350","implemented":true,"kind":"function","modifiers":[{"id":75481,"kind":"modifierInvocation","modifierName":{"id":75480,"name":"onlyOwner","nameLocations":["1752:9:159"],"nodeType":"IdentifierPath","referencedDeclaration":39282,"src":"1752:9:159"},"nodeType":"ModifierInvocation","src":"1752:9:159"},{"arguments":[{"hexValue":"32","id":75483,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1776:1:159","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"id":75484,"kind":"modifierInvocation","modifierName":{"id":75482,"name":"reinitializer","nameLocations":["1762:13:159"],"nodeType":"IdentifierPath","referencedDeclaration":39542,"src":"1762:13:159"},"nodeType":"ModifierInvocation","src":"1762:16:159"}],"name":"reinitialize","nameLocation":"1730:12:159","parameters":{"id":75479,"nodeType":"ParameterList","parameters":[],"src":"1742:2:159"},"returnParameters":{"id":75485,"nodeType":"ParameterList","parameters":[],"src":"1779:0:159"},"scope":76724,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":75553,"nodeType":"FunctionDefinition","src":"2343:109:159","nodes":[],"body":{"id":75552,"nodeType":"Block","src":"2401:51:159","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75547,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"2418:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2418:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75549,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2428:12:159","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":73612,"src":"2418:22:159","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$76900_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":75550,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2441:4:159","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":76895,"src":"2418:27:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":75546,"id":75551,"nodeType":"Return","src":"2411:34:159"}]},"baseFunctions":[73677],"functionSelector":"28e24b3d","implemented":true,"kind":"function","modifiers":[],"name":"genesisBlockHash","nameLocation":"2352:16:159","parameters":{"id":75543,"nodeType":"ParameterList","parameters":[],"src":"2368:2:159"},"returnParameters":{"id":75546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75545,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75553,"src":"2392:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75544,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2392:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2391:9:159"},"scope":76724,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75564,"nodeType":"FunctionDefinition","src":"2458:125:159","nodes":[],"body":{"id":75563,"nodeType":"Block","src":"2524:59:159","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75558,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"2541:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75559,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2541:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75560,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2551:20:159","memberName":"latestCommittedBlock","nodeType":"MemberAccess","referencedDeclaration":73616,"src":"2541:30:159","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBlockInfo_$76888_storage","typeString":"struct Gear.CommittedBlockInfo storage ref"}},"id":75561,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2572:4:159","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":76885,"src":"2541:35:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":75557,"id":75562,"nodeType":"Return","src":"2534:42:159"}]},"baseFunctions":[73682],"functionSelector":"c9f16a11","implemented":true,"kind":"function","modifiers":[],"name":"latestCommittedBlockHash","nameLocation":"2467:24:159","parameters":{"id":75554,"nodeType":"ParameterList","parameters":[],"src":"2491:2:159"},"returnParameters":{"id":75557,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75556,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75564,"src":"2515:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75555,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2515:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2514:9:159"},"scope":76724,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75575,"nodeType":"FunctionDefinition","src":"2589:106:159","nodes":[],"body":{"id":75574,"nodeType":"Block","src":"2641:54:159","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75569,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"2658:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2658:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75571,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2668:13:159","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":73620,"src":"2658:23:159","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$76861_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":75572,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2682:6:159","memberName":"mirror","nodeType":"MemberAccess","referencedDeclaration":76856,"src":"2658:30:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":75568,"id":75573,"nodeType":"Return","src":"2651:37:159"}]},"baseFunctions":[73687],"functionSelector":"e6fabc09","implemented":true,"kind":"function","modifiers":[],"name":"mirrorImpl","nameLocation":"2598:10:159","parameters":{"id":75565,"nodeType":"ParameterList","parameters":[],"src":"2608:2:159"},"returnParameters":{"id":75568,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75567,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75575,"src":"2632:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75566,"name":"address","nodeType":"ElementaryTypeName","src":"2632:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2631:9:159"},"scope":76724,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75586,"nodeType":"FunctionDefinition","src":"2701:116:159","nodes":[],"body":{"id":75585,"nodeType":"Block","src":"2758:59:159","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75580,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"2775:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2775:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75582,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2785:13:159","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":73620,"src":"2775:23:159","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$76861_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":75583,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2799:11:159","memberName":"mirrorProxy","nodeType":"MemberAccess","referencedDeclaration":76858,"src":"2775:35:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":75579,"id":75584,"nodeType":"Return","src":"2768:42:159"}]},"baseFunctions":[73692],"functionSelector":"65ecfea2","implemented":true,"kind":"function","modifiers":[],"name":"mirrorProxyImpl","nameLocation":"2710:15:159","parameters":{"id":75576,"nodeType":"ParameterList","parameters":[],"src":"2725:2:159"},"returnParameters":{"id":75579,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75578,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75586,"src":"2749:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75577,"name":"address","nodeType":"ElementaryTypeName","src":"2749:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2748:9:159"},"scope":76724,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75597,"nodeType":"FunctionDefinition","src":"2823:112:159","nodes":[],"body":{"id":75596,"nodeType":"Block","src":"2876:59:159","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75591,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"2893:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2893:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75593,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2903:13:159","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":73620,"src":"2893:23:159","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$76861_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":75594,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2917:11:159","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":76860,"src":"2893:35:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":75590,"id":75595,"nodeType":"Return","src":"2886:42:159"}]},"baseFunctions":[73697],"functionSelector":"88f50cf0","implemented":true,"kind":"function","modifiers":[],"name":"wrappedVara","nameLocation":"2832:11:159","parameters":{"id":75587,"nodeType":"ParameterList","parameters":[],"src":"2843:2:159"},"returnParameters":{"id":75590,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75589,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75597,"src":"2867:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75588,"name":"address","nodeType":"ElementaryTypeName","src":"2867:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2866:9:159"},"scope":76724,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75639,"nodeType":"FunctionDefinition","src":"2941:348:159","nodes":[],"body":{"id":75638,"nodeType":"Block","src":"3023:266:159","nodes":[],"statements":[{"assignments":[75607],"declarations":[{"constant":false,"id":75607,"mutability":"mutable","name":"router","nameLocation":"3049:6:159","nodeType":"VariableDeclaration","scope":75638,"src":"3033:22:159","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":75606,"nodeType":"UserDefinedTypeName","pathNode":{"id":75605,"name":"Storage","nameLocations":["3033:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73633,"src":"3033:7:159"},"referencedDeclaration":73633,"src":"3033:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":75610,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":75608,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"3058:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3058:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3033:34:159"},{"body":{"id":75634,"nodeType":"Block","src":"3127:134:159","statements":[{"condition":{"id":75629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3145:59:159","subExpression":{"baseExpression":{"expression":{"expression":{"id":75622,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75607,"src":"3146:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75623,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3153:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73624,"src":"3146:25:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$76958_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":75624,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3172:16:159","memberName":"validatorsKeyMap","nodeType":"MemberAccess","referencedDeclaration":76957,"src":"3146:42:159","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":75628,"indexExpression":{"baseExpression":{"id":75625,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75600,"src":"3189:11:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":75627,"indexExpression":{"id":75626,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75612,"src":"3201:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3189:14:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3146:58:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75633,"nodeType":"IfStatement","src":"3141:110:159","trueBody":{"id":75632,"nodeType":"Block","src":"3206:45:159","statements":[{"expression":{"hexValue":"66616c7365","id":75630,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3231:5:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":75604,"id":75631,"nodeType":"Return","src":"3224:12:159"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75615,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75612,"src":"3098:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":75616,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75600,"src":"3102:11:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":75617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3114:6:159","memberName":"length","nodeType":"MemberAccess","src":"3102:18:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3098:22:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75635,"initializationExpression":{"assignments":[75612],"declarations":[{"constant":false,"id":75612,"mutability":"mutable","name":"i","nameLocation":"3091:1:159","nodeType":"VariableDeclaration","scope":75635,"src":"3083:9:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75611,"name":"uint256","nodeType":"ElementaryTypeName","src":"3083:7:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":75614,"initialValue":{"hexValue":"30","id":75613,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3095:1:159","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"3083:13:159"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":75620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3122:3:159","subExpression":{"id":75619,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75612,"src":"3122:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":75621,"nodeType":"ExpressionStatement","src":"3122:3:159"},"nodeType":"ForStatement","src":"3078:183:159"},{"expression":{"hexValue":"74727565","id":75636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3278:4:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":75604,"id":75637,"nodeType":"Return","src":"3271:11:159"}]},"baseFunctions":[73705],"functionSelector":"8f381dbe","implemented":true,"kind":"function","modifiers":[],"name":"areValidators","nameLocation":"2950:13:159","parameters":{"id":75601,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75600,"mutability":"mutable","name":"_validators","nameLocation":"2983:11:159","nodeType":"VariableDeclaration","scope":75639,"src":"2964:30:159","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":75598,"name":"address","nodeType":"ElementaryTypeName","src":"2964:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":75599,"nodeType":"ArrayTypeName","src":"2964:9:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"2963:32:159"},"returnParameters":{"id":75604,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75603,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75639,"src":"3017:4:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":75602,"name":"bool","nodeType":"ElementaryTypeName","src":"3017:4:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3016:6:159"},"scope":76724,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75654,"nodeType":"FunctionDefinition","src":"3295:149:159","nodes":[],"body":{"id":75653,"nodeType":"Block","src":"3363:81:159","nodes":[],"statements":[{"expression":{"baseExpression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75646,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"3380:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75647,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3380:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75648,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3390:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73624,"src":"3380:28:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$76958_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":75649,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3409:16:159","memberName":"validatorsKeyMap","nodeType":"MemberAccess","referencedDeclaration":76957,"src":"3380:45:159","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":75651,"indexExpression":{"id":75650,"name":"_validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75641,"src":"3426:10:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3380:57:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":75645,"id":75652,"nodeType":"Return","src":"3373:64:159"}]},"baseFunctions":[73712],"functionSelector":"facd743b","implemented":true,"kind":"function","modifiers":[],"name":"isValidator","nameLocation":"3304:11:159","parameters":{"id":75642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75641,"mutability":"mutable","name":"_validator","nameLocation":"3324:10:159","nodeType":"VariableDeclaration","scope":75654,"src":"3316:18:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75640,"name":"address","nodeType":"ElementaryTypeName","src":"3316:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3315:20:159"},"returnParameters":{"id":75645,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75644,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75654,"src":"3357:4:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":75643,"name":"bool","nodeType":"ElementaryTypeName","src":"3357:4:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3356:6:159"},"scope":76724,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75665,"nodeType":"FunctionDefinition","src":"3450:146:159","nodes":[],"body":{"id":75664,"nodeType":"Block","src":"3517:79:159","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75659,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"3534:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3534:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75661,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3544:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73624,"src":"3534:28:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$76958_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":75662,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3563:26:159","memberName":"signingThresholdPercentage","nodeType":"MemberAccess","referencedDeclaration":76950,"src":"3534:55:159","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"functionReturnParameters":75658,"id":75663,"nodeType":"Return","src":"3527:62:159"}]},"baseFunctions":[73717],"functionSelector":"efd81abc","implemented":true,"kind":"function","modifiers":[],"name":"signingThresholdPercentage","nameLocation":"3459:26:159","parameters":{"id":75655,"nodeType":"ParameterList","parameters":[],"src":"3485:2:159"},"returnParameters":{"id":75658,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75657,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75665,"src":"3509:6:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":75656,"name":"uint16","nodeType":"ElementaryTypeName","src":"3509:6:159","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"3508:8:159"},"scope":76724,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75677,"nodeType":"FunctionDefinition","src":"3602:124:159","nodes":[],"body":{"id":75676,"nodeType":"Block","src":"3663:63:159","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75671,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"3680:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75672,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3680:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75673,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3690:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73624,"src":"3680:28:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$76958_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":75674,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3709:10:159","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":76953,"src":"3680:39:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"functionReturnParameters":75670,"id":75675,"nodeType":"Return","src":"3673:46:159"}]},"baseFunctions":[73723],"functionSelector":"ca1e7819","implemented":true,"kind":"function","modifiers":[],"name":"validators","nameLocation":"3611:10:159","parameters":{"id":75666,"nodeType":"ParameterList","parameters":[],"src":"3621:2:159"},"returnParameters":{"id":75670,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75669,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75677,"src":"3645:16:159","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":75667,"name":"address","nodeType":"ElementaryTypeName","src":"3645:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":75668,"nodeType":"ArrayTypeName","src":"3645:9:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"3644:18:159"},"scope":76724,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75689,"nodeType":"FunctionDefinition","src":"3732:127:159","nodes":[],"body":{"id":75688,"nodeType":"Block","src":"3789:70:159","nodes":[],"statements":[{"expression":{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75682,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"3806:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3806:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75684,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3816:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73624,"src":"3806:28:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$76958_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":75685,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3835:10:159","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":76953,"src":"3806:39:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":75686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3846:6:159","memberName":"length","nodeType":"MemberAccess","src":"3806:46:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":75681,"id":75687,"nodeType":"Return","src":"3799:53:159"}]},"baseFunctions":[73728],"functionSelector":"ed612f8c","implemented":true,"kind":"function","modifiers":[],"name":"validatorsCount","nameLocation":"3741:15:159","parameters":{"id":75678,"nodeType":"ParameterList","parameters":[],"src":"3756:2:159"},"returnParameters":{"id":75681,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75680,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75689,"src":"3780:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75679,"name":"uint256","nodeType":"ElementaryTypeName","src":"3780:7:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3779:9:159"},"scope":76724,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75702,"nodeType":"FunctionDefinition","src":"3865:141:159","nodes":[],"body":{"id":75701,"nodeType":"Block","src":"3926:80:159","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75696,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"3970:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3970:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75698,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3980:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73624,"src":"3970:28:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$76958_storage","typeString":"struct Gear.ValidationSettings storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_ValidationSettings_$76958_storage","typeString":"struct Gear.ValidationSettings storage ref"}],"expression":{"id":75694,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77275,"src":"3943:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77275_$","typeString":"type(library Gear)"}},"id":75695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3948:21:159","memberName":"validatorsThresholdOf","nodeType":"MemberAccess","referencedDeclaration":77255,"src":"3943:26:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_ValidationSettings_$76958_storage_ptr_$returns$_t_uint256_$","typeString":"function (struct Gear.ValidationSettings storage pointer) view returns (uint256)"}},"id":75699,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3943:56:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":75693,"id":75700,"nodeType":"Return","src":"3936:63:159"}]},"baseFunctions":[73733],"functionSelector":"edc87225","implemented":true,"kind":"function","modifiers":[],"name":"validatorsThreshold","nameLocation":"3874:19:159","parameters":{"id":75690,"nodeType":"ParameterList","parameters":[],"src":"3893:2:159"},"returnParameters":{"id":75693,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75692,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75702,"src":"3917:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75691,"name":"uint256","nodeType":"ElementaryTypeName","src":"3917:7:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3916:9:159"},"scope":76724,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75713,"nodeType":"FunctionDefinition","src":"4012:130:159","nodes":[],"body":{"id":75712,"nodeType":"Block","src":"4093:49:159","nodes":[],"statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75708,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"4110:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75709,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4110:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75710,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4120:15:159","memberName":"computeSettings","nodeType":"MemberAccess","referencedDeclaration":73628,"src":"4110:25:159","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$76893_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"functionReturnParameters":75707,"id":75711,"nodeType":"Return","src":"4103:32:159"}]},"baseFunctions":[73739],"functionSelector":"84d22a4f","implemented":true,"kind":"function","modifiers":[],"name":"computeSettings","nameLocation":"4021:15:159","parameters":{"id":75703,"nodeType":"ParameterList","parameters":[],"src":"4036:2:159"},"returnParameters":{"id":75707,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75706,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75713,"src":"4060:31:159","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$76893_memory_ptr","typeString":"struct Gear.ComputationSettings"},"typeName":{"id":75705,"nodeType":"UserDefinedTypeName","pathNode":{"id":75704,"name":"Gear.ComputationSettings","nameLocations":["4060:4:159","4065:19:159"],"nodeType":"IdentifierPath","referencedDeclaration":76893,"src":"4060:24:159"},"referencedDeclaration":76893,"src":"4060:24:159","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$76893_storage_ptr","typeString":"struct Gear.ComputationSettings"}},"visibility":"internal"}],"src":"4059:33:159"},"scope":76724,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75729,"nodeType":"FunctionDefinition","src":"4148:134:159","nodes":[],"body":{"id":75728,"nodeType":"Block","src":"4221:61:159","nodes":[],"statements":[{"expression":{"baseExpression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75721,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"4238:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4238:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75723,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4248:12:159","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":73632,"src":"4238:22:159","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$76926_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":75724,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4261:5:159","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":76917,"src":"4238:28:159","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$76883_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":75726,"indexExpression":{"id":75725,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75715,"src":"4267:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4238:37:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76883","typeString":"enum Gear.CodeState"}},"functionReturnParameters":75720,"id":75727,"nodeType":"Return","src":"4231:44:159"}]},"baseFunctions":[73747],"functionSelector":"c13911e8","implemented":true,"kind":"function","modifiers":[],"name":"codeState","nameLocation":"4157:9:159","parameters":{"id":75716,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75715,"mutability":"mutable","name":"_codeId","nameLocation":"4175:7:159","nodeType":"VariableDeclaration","scope":75729,"src":"4167:15:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75714,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4167:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4166:17:159"},"returnParameters":{"id":75720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75719,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75729,"src":"4205:14:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76883","typeString":"enum Gear.CodeState"},"typeName":{"id":75718,"nodeType":"UserDefinedTypeName","pathNode":{"id":75717,"name":"Gear.CodeState","nameLocations":["4205:4:159","4210:9:159"],"nodeType":"IdentifierPath","referencedDeclaration":76883,"src":"4205:14:159"},"referencedDeclaration":76883,"src":"4205:14:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76883","typeString":"enum Gear.CodeState"}},"visibility":"internal"}],"src":"4204:16:159"},"scope":76724,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75787,"nodeType":"FunctionDefinition","src":"4288:378:159","nodes":[],"body":{"id":75786,"nodeType":"Block","src":"4385:281:159","nodes":[],"statements":[{"assignments":[75741],"declarations":[{"constant":false,"id":75741,"mutability":"mutable","name":"router","nameLocation":"4411:6:159","nodeType":"VariableDeclaration","scope":75786,"src":"4395:22:159","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":75740,"nodeType":"UserDefinedTypeName","pathNode":{"id":75739,"name":"Storage","nameLocations":["4395:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73633,"src":"4395:7:159"},"referencedDeclaration":73633,"src":"4395:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":75744,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":75742,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"4420:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75743,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4420:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4395:34:159"},{"assignments":[75750],"declarations":[{"constant":false,"id":75750,"mutability":"mutable","name":"res","nameLocation":"4464:3:159","nodeType":"VariableDeclaration","scope":75786,"src":"4440:27:159","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$76883_$dyn_memory_ptr","typeString":"enum Gear.CodeState[]"},"typeName":{"baseType":{"id":75748,"nodeType":"UserDefinedTypeName","pathNode":{"id":75747,"name":"Gear.CodeState","nameLocations":["4440:4:159","4445:9:159"],"nodeType":"IdentifierPath","referencedDeclaration":76883,"src":"4440:14:159"},"referencedDeclaration":76883,"src":"4440:14:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76883","typeString":"enum Gear.CodeState"}},"id":75749,"nodeType":"ArrayTypeName","src":"4440:16:159","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$76883_$dyn_storage_ptr","typeString":"enum Gear.CodeState[]"}},"visibility":"internal"}],"id":75758,"initialValue":{"arguments":[{"expression":{"id":75755,"name":"_codesIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75732,"src":"4491:9:159","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}},"id":75756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4501:6:159","memberName":"length","nodeType":"MemberAccess","src":"4491:16:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":75754,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4470:20:159","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_enum$_CodeState_$76883_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (enum Gear.CodeState[] memory)"},"typeName":{"baseType":{"id":75752,"nodeType":"UserDefinedTypeName","pathNode":{"id":75751,"name":"Gear.CodeState","nameLocations":["4474:4:159","4479:9:159"],"nodeType":"IdentifierPath","referencedDeclaration":76883,"src":"4474:14:159"},"referencedDeclaration":76883,"src":"4474:14:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76883","typeString":"enum Gear.CodeState"}},"id":75753,"nodeType":"ArrayTypeName","src":"4474:16:159","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$76883_$dyn_storage_ptr","typeString":"enum Gear.CodeState[]"}}},"id":75757,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4470:38:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$76883_$dyn_memory_ptr","typeString":"enum Gear.CodeState[] memory"}},"nodeType":"VariableDeclarationStatement","src":"4440:68:159"},{"body":{"id":75782,"nodeType":"Block","src":"4566:73:159","statements":[{"expression":{"id":75780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":75770,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75750,"src":"4580:3:159","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$76883_$dyn_memory_ptr","typeString":"enum Gear.CodeState[] memory"}},"id":75772,"indexExpression":{"id":75771,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75760,"src":"4584:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4580:6:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76883","typeString":"enum Gear.CodeState"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"expression":{"expression":{"id":75773,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75741,"src":"4589:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75774,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4596:12:159","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":73632,"src":"4589:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$76926_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":75775,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4609:5:159","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":76917,"src":"4589:25:159","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$76883_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":75779,"indexExpression":{"baseExpression":{"id":75776,"name":"_codesIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75732,"src":"4615:9:159","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}},"id":75778,"indexExpression":{"id":75777,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75760,"src":"4625:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4615:12:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4589:39:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76883","typeString":"enum Gear.CodeState"}},"src":"4580:48:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76883","typeString":"enum Gear.CodeState"}},"id":75781,"nodeType":"ExpressionStatement","src":"4580:48:159"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75763,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75760,"src":"4539:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":75764,"name":"_codesIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75732,"src":"4543:9:159","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}},"id":75765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4553:6:159","memberName":"length","nodeType":"MemberAccess","src":"4543:16:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4539:20:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75783,"initializationExpression":{"assignments":[75760],"declarations":[{"constant":false,"id":75760,"mutability":"mutable","name":"i","nameLocation":"4532:1:159","nodeType":"VariableDeclaration","scope":75783,"src":"4524:9:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75759,"name":"uint256","nodeType":"ElementaryTypeName","src":"4524:7:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":75762,"initialValue":{"hexValue":"30","id":75761,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4536:1:159","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4524:13:159"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":75768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4561:3:159","subExpression":{"id":75767,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75760,"src":"4561:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":75769,"nodeType":"ExpressionStatement","src":"4561:3:159"},"nodeType":"ForStatement","src":"4519:120:159"},{"expression":{"id":75784,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75750,"src":"4656:3:159","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$76883_$dyn_memory_ptr","typeString":"enum Gear.CodeState[] memory"}},"functionReturnParameters":75738,"id":75785,"nodeType":"Return","src":"4649:10:159"}]},"baseFunctions":[73757],"functionSelector":"82bdeaad","implemented":true,"kind":"function","modifiers":[],"name":"codesStates","nameLocation":"4297:11:159","parameters":{"id":75733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75732,"mutability":"mutable","name":"_codesIds","nameLocation":"4328:9:159","nodeType":"VariableDeclaration","scope":75787,"src":"4309:28:159","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":75730,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4309:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":75731,"nodeType":"ArrayTypeName","src":"4309:9:159","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"4308:30:159"},"returnParameters":{"id":75738,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75737,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75787,"src":"4360:23:159","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$76883_$dyn_memory_ptr","typeString":"enum Gear.CodeState[]"},"typeName":{"baseType":{"id":75735,"nodeType":"UserDefinedTypeName","pathNode":{"id":75734,"name":"Gear.CodeState","nameLocations":["4360:4:159","4365:9:159"],"nodeType":"IdentifierPath","referencedDeclaration":76883,"src":"4360:14:159"},"referencedDeclaration":76883,"src":"4360:14:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76883","typeString":"enum Gear.CodeState"}},"id":75736,"nodeType":"ArrayTypeName","src":"4360:16:159","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$76883_$dyn_storage_ptr","typeString":"enum Gear.CodeState[]"}},"visibility":"internal"}],"src":"4359:25:159"},"scope":76724,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75802,"nodeType":"FunctionDefinition","src":"4672:140:159","nodes":[],"body":{"id":75801,"nodeType":"Block","src":"4745:67:159","nodes":[],"statements":[{"expression":{"baseExpression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75794,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"4762:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4762:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75796,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4772:12:159","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":73632,"src":"4762:22:159","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$76926_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":75797,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4785:8:159","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":76921,"src":"4762:31:159","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":75799,"indexExpression":{"id":75798,"name":"_programId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75789,"src":"4794:10:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4762:43:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":75793,"id":75800,"nodeType":"Return","src":"4755:50:159"}]},"baseFunctions":[73764],"functionSelector":"9067088e","implemented":true,"kind":"function","modifiers":[],"name":"programCodeId","nameLocation":"4681:13:159","parameters":{"id":75790,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75789,"mutability":"mutable","name":"_programId","nameLocation":"4703:10:159","nodeType":"VariableDeclaration","scope":75802,"src":"4695:18:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75788,"name":"address","nodeType":"ElementaryTypeName","src":"4695:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4694:20:159"},"returnParameters":{"id":75793,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75792,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75802,"src":"4736:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75791,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4736:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4735:9:159"},"scope":76724,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75857,"nodeType":"FunctionDefinition","src":"4818:376:159","nodes":[],"body":{"id":75856,"nodeType":"Block","src":"4915:279:159","nodes":[],"statements":[{"assignments":[75813],"declarations":[{"constant":false,"id":75813,"mutability":"mutable","name":"router","nameLocation":"4941:6:159","nodeType":"VariableDeclaration","scope":75856,"src":"4925:22:159","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":75812,"nodeType":"UserDefinedTypeName","pathNode":{"id":75811,"name":"Storage","nameLocations":["4925:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73633,"src":"4925:7:159"},"referencedDeclaration":73633,"src":"4925:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":75816,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":75814,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"4950:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4950:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4925:34:159"},{"assignments":[75821],"declarations":[{"constant":false,"id":75821,"mutability":"mutable","name":"res","nameLocation":"4987:3:159","nodeType":"VariableDeclaration","scope":75856,"src":"4970:20:159","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":75819,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4970:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":75820,"nodeType":"ArrayTypeName","src":"4970:9:159","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"id":75828,"initialValue":{"arguments":[{"expression":{"id":75825,"name":"_programsIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75805,"src":"5007:12:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":75826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5020:6:159","memberName":"length","nodeType":"MemberAccess","src":"5007:19:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":75824,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4993:13:159","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (bytes32[] memory)"},"typeName":{"baseType":{"id":75822,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4997:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":75823,"nodeType":"ArrayTypeName","src":"4997:9:159","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}}},"id":75827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4993:34:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"nodeType":"VariableDeclarationStatement","src":"4970:57:159"},{"body":{"id":75852,"nodeType":"Block","src":"5088:79:159","statements":[{"expression":{"id":75850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":75840,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75821,"src":"5102:3:159","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":75842,"indexExpression":{"id":75841,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75830,"src":"5106:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5102:6:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"expression":{"expression":{"id":75843,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75813,"src":"5111:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75844,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5118:12:159","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":73632,"src":"5111:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$76926_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":75845,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5131:8:159","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":76921,"src":"5111:28:159","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":75849,"indexExpression":{"baseExpression":{"id":75846,"name":"_programsIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75805,"src":"5140:12:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":75848,"indexExpression":{"id":75847,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75830,"src":"5153:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5140:15:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5111:45:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"5102:54:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":75851,"nodeType":"ExpressionStatement","src":"5102:54:159"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75833,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75830,"src":"5058:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":75834,"name":"_programsIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75805,"src":"5062:12:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":75835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5075:6:159","memberName":"length","nodeType":"MemberAccess","src":"5062:19:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5058:23:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75853,"initializationExpression":{"assignments":[75830],"declarations":[{"constant":false,"id":75830,"mutability":"mutable","name":"i","nameLocation":"5051:1:159","nodeType":"VariableDeclaration","scope":75853,"src":"5043:9:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75829,"name":"uint256","nodeType":"ElementaryTypeName","src":"5043:7:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":75832,"initialValue":{"hexValue":"30","id":75831,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5055:1:159","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5043:13:159"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":75838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5083:3:159","subExpression":{"id":75837,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75830,"src":"5083:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":75839,"nodeType":"ExpressionStatement","src":"5083:3:159"},"nodeType":"ForStatement","src":"5038:129:159"},{"expression":{"id":75854,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75821,"src":"5184:3:159","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"functionReturnParameters":75810,"id":75855,"nodeType":"Return","src":"5177:10:159"}]},"baseFunctions":[73773],"functionSelector":"baaf0201","implemented":true,"kind":"function","modifiers":[],"name":"programsCodeIds","nameLocation":"4827:15:159","parameters":{"id":75806,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75805,"mutability":"mutable","name":"_programsIds","nameLocation":"4862:12:159","nodeType":"VariableDeclaration","scope":75857,"src":"4843:31:159","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":75803,"name":"address","nodeType":"ElementaryTypeName","src":"4843:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":75804,"nodeType":"ArrayTypeName","src":"4843:9:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"4842:33:159"},"returnParameters":{"id":75810,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75809,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75857,"src":"4897:16:159","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":75807,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4897:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":75808,"nodeType":"ArrayTypeName","src":"4897:9:159","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"4896:18:159"},"scope":76724,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75868,"nodeType":"FunctionDefinition","src":"5200:115:159","nodes":[],"body":{"id":75867,"nodeType":"Block","src":"5255:60:159","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75862,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"5272:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75863,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5272:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75864,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5282:12:159","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":73632,"src":"5272:22:159","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$76926_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":75865,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5295:13:159","memberName":"programsCount","nodeType":"MemberAccess","referencedDeclaration":76923,"src":"5272:36:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":75861,"id":75866,"nodeType":"Return","src":"5265:43:159"}]},"baseFunctions":[73778],"functionSelector":"96a2ddfa","implemented":true,"kind":"function","modifiers":[],"name":"programsCount","nameLocation":"5209:13:159","parameters":{"id":75858,"nodeType":"ParameterList","parameters":[],"src":"5222:2:159"},"returnParameters":{"id":75861,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75860,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75868,"src":"5246:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75859,"name":"uint256","nodeType":"ElementaryTypeName","src":"5246:7:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5245:9:159"},"scope":76724,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75879,"nodeType":"FunctionDefinition","src":"5321:127:159","nodes":[],"body":{"id":75878,"nodeType":"Block","src":"5382:66:159","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75873,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"5399:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5399:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75875,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5409:12:159","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":73632,"src":"5399:22:159","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$76926_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":75876,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5422:19:159","memberName":"validatedCodesCount","nodeType":"MemberAccess","referencedDeclaration":76925,"src":"5399:42:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":75872,"id":75877,"nodeType":"Return","src":"5392:49:159"}]},"baseFunctions":[73783],"functionSelector":"007a32e7","implemented":true,"kind":"function","modifiers":[],"name":"validatedCodesCount","nameLocation":"5330:19:159","parameters":{"id":75869,"nodeType":"ParameterList","parameters":[],"src":"5349:2:159"},"returnParameters":{"id":75872,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75871,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75879,"src":"5373:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75870,"name":"uint256","nodeType":"ElementaryTypeName","src":"5373:7:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5372:9:159"},"scope":76724,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75894,"nodeType":"FunctionDefinition","src":"5474:116:159","nodes":[],"body":{"id":75893,"nodeType":"Block","src":"5531:59:159","nodes":[],"statements":[{"expression":{"id":75891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75886,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"5541:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75887,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5541:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75888,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5551:13:159","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":73620,"src":"5541:23:159","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$76861_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":75889,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5565:6:159","memberName":"mirror","nodeType":"MemberAccess","referencedDeclaration":76856,"src":"5541:30:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":75890,"name":"newMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75881,"src":"5574:9:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5541:42:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":75892,"nodeType":"ExpressionStatement","src":"5541:42:159"}]},"baseFunctions":[73788],"functionSelector":"3d43b418","implemented":true,"kind":"function","modifiers":[{"id":75884,"kind":"modifierInvocation","modifierName":{"id":75883,"name":"onlyOwner","nameLocations":["5521:9:159"],"nodeType":"IdentifierPath","referencedDeclaration":39282,"src":"5521:9:159"},"nodeType":"ModifierInvocation","src":"5521:9:159"}],"name":"setMirror","nameLocation":"5483:9:159","parameters":{"id":75882,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75881,"mutability":"mutable","name":"newMirror","nameLocation":"5501:9:159","nodeType":"VariableDeclaration","scope":75894,"src":"5493:17:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75880,"name":"address","nodeType":"ElementaryTypeName","src":"5493:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5492:19:159"},"returnParameters":{"id":75885,"nodeType":"ParameterList","parameters":[],"src":"5531:0:159"},"scope":76724,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":75946,"nodeType":"FunctionDefinition","src":"5612:398:159","nodes":[],"body":{"id":75945,"nodeType":"Block","src":"5650:360:159","nodes":[],"statements":[{"assignments":[75899],"declarations":[{"constant":false,"id":75899,"mutability":"mutable","name":"router","nameLocation":"5676:6:159","nodeType":"VariableDeclaration","scope":75945,"src":"5660:22:159","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":75898,"nodeType":"UserDefinedTypeName","pathNode":{"id":75897,"name":"Storage","nameLocations":["5660:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73633,"src":"5660:7:159"},"referencedDeclaration":73633,"src":"5660:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":75902,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":75900,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"5685:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5685:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"5660:34:159"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":75911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":75904,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75899,"src":"5713:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75905,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5720:12:159","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":73612,"src":"5713:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$76900_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":75906,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5733:4:159","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":76895,"src":"5713:24:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":75909,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5749:1:159","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":75908,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5741:7:159","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":75907,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5741:7:159","typeDescriptions":{}}},"id":75910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5741:10:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"5713:38:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"67656e65736973206861736820616c726561647920736574","id":75912,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5753:26:159","typeDescriptions":{"typeIdentifier":"t_stringliteral_5ec654a5a6e0b043639db348d1557e0acfcdb8bbf2c9de24c4983866c0ccfa21","typeString":"literal_string \"genesis hash already set\""},"value":"genesis hash already set"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5ec654a5a6e0b043639db348d1557e0acfcdb8bbf2c9de24c4983866c0ccfa21","typeString":"literal_string \"genesis hash already set\""}],"id":75903,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"5705:7:159","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":75913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5705:75:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75914,"nodeType":"ExpressionStatement","src":"5705:75:159"},{"assignments":[75916],"declarations":[{"constant":false,"id":75916,"mutability":"mutable","name":"genesisHash","nameLocation":"5799:11:159","nodeType":"VariableDeclaration","scope":75945,"src":"5791:19:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75915,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5791:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":75922,"initialValue":{"arguments":[{"expression":{"expression":{"id":75918,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75899,"src":"5823:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75919,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5830:12:159","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":73612,"src":"5823:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$76900_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":75920,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5843:6:159","memberName":"number","nodeType":"MemberAccess","referencedDeclaration":76897,"src":"5823:26:159","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":75917,"name":"blockhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-5,"src":"5813:9:159","typeDescriptions":{"typeIdentifier":"t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":75921,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5813:37:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"5791:59:159"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":75929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75924,"name":"genesisHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75916,"src":"5869:11:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":75927,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5892:1:159","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":75926,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5884:7:159","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":75925,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5884:7:159","typeDescriptions":{}}},"id":75928,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5884:10:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"5869:25:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"756e61626c6520746f206c6f6f6b75702067656e657369732068617368","id":75930,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5896:31:159","typeDescriptions":{"typeIdentifier":"t_stringliteral_983585e130902c48e8b21c3e7ab53cd0d7f3ffc3109244b201330c039df8ce4e","typeString":"literal_string \"unable to lookup genesis hash\""},"value":"unable to lookup genesis hash"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_983585e130902c48e8b21c3e7ab53cd0d7f3ffc3109244b201330c039df8ce4e","typeString":"literal_string \"unable to lookup genesis hash\""}],"id":75923,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"5861:7:159","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":75931,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5861:67:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75932,"nodeType":"ExpressionStatement","src":"5861:67:159"},{"expression":{"id":75943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":75933,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75899,"src":"5939:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75936,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5946:12:159","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":73612,"src":"5939:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$76900_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":75937,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5959:4:159","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":76895,"src":"5939:24:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"expression":{"id":75939,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75899,"src":"5976:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75940,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5983:12:159","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":73612,"src":"5976:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$76900_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":75941,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5996:6:159","memberName":"number","nodeType":"MemberAccess","referencedDeclaration":76897,"src":"5976:26:159","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":75938,"name":"blockhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-5,"src":"5966:9:159","typeDescriptions":{"typeIdentifier":"t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":75942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5966:37:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"5939:64:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":75944,"nodeType":"ExpressionStatement","src":"5939:64:159"}]},"baseFunctions":[73791],"functionSelector":"8b1edf1e","implemented":true,"kind":"function","modifiers":[],"name":"lookupGenesisHash","nameLocation":"5621:17:159","parameters":{"id":75895,"nodeType":"ParameterList","parameters":[],"src":"5638:2:159"},"returnParameters":{"id":75896,"nodeType":"ParameterList","parameters":[],"src":"5650:0:159"},"scope":76724,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":76015,"nodeType":"FunctionDefinition","src":"6016:637:159","nodes":[],"body":{"id":76014,"nodeType":"Block","src":"6094:559:159","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":75962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":75956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75954,"name":"_blobTxHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75950,"src":"6112:11:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":75955,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6127:1:159","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6112:16:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":75961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"hexValue":"30","id":75958,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6141:1:159","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":75957,"name":"blobhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-29,"src":"6132:8:159","typeDescriptions":{"typeIdentifier":"t_function_blobhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":75959,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6132:11:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":75960,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6147:1:159","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6132:16:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6112:36:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"626c6f622063616e277420626520666f756e64","id":75963,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6150:21:159","typeDescriptions":{"typeIdentifier":"t_stringliteral_50f679c075644435e0dfad2beb36f786441d5cb0c0dd08ea9c9aa80169c123d2","typeString":"literal_string \"blob can't be found\""},"value":"blob can't be found"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_50f679c075644435e0dfad2beb36f786441d5cb0c0dd08ea9c9aa80169c123d2","typeString":"literal_string \"blob can't be found\""}],"id":75953,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"6104:7:159","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":75964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6104:68:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75965,"nodeType":"ExpressionStatement","src":"6104:68:159"},{"assignments":[75968],"declarations":[{"constant":false,"id":75968,"mutability":"mutable","name":"router","nameLocation":"6199:6:159","nodeType":"VariableDeclaration","scope":76014,"src":"6183:22:159","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":75967,"nodeType":"UserDefinedTypeName","pathNode":{"id":75966,"name":"Storage","nameLocations":["6183:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73633,"src":"6183:7:159"},"referencedDeclaration":73633,"src":"6183:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":75971,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":75969,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"6208:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":75970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6208:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6183:34:159"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":75980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":75973,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75968,"src":"6235:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75974,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6242:12:159","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":73612,"src":"6235:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$76900_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":75975,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6255:4:159","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":76895,"src":"6235:24:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":75978,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6271:1:159","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":75977,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6263:7:159","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":75976,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6263:7:159","typeDescriptions":{}}},"id":75979,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6263:10:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"6235:38:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"726f757465722067656e65736973206973207a65726f3b2063616c6c20606c6f6f6b757047656e6573697348617368282960206669727374","id":75981,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6275:58:159","typeDescriptions":{"typeIdentifier":"t_stringliteral_5fec8ede65c0caef3899b3174f258c732d5616cc4144b82fcdbac009109d42dc","typeString":"literal_string \"router genesis is zero; call `lookupGenesisHash()` first\""},"value":"router genesis is zero; call `lookupGenesisHash()` first"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5fec8ede65c0caef3899b3174f258c732d5616cc4144b82fcdbac009109d42dc","typeString":"literal_string \"router genesis is zero; call `lookupGenesisHash()` first\""}],"id":75972,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"6227:7:159","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":75982,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6227:107:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75983,"nodeType":"ExpressionStatement","src":"6227:107:159"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_CodeState_$76883","typeString":"enum Gear.CodeState"},"id":75993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":75985,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75968,"src":"6366:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":75986,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6373:12:159","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":73632,"src":"6366:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$76926_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":75987,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6386:5:159","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":76917,"src":"6366:25:159","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$76883_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":75989,"indexExpression":{"id":75988,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75948,"src":"6392:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6366:34:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76883","typeString":"enum Gear.CodeState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":75990,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77275,"src":"6404:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77275_$","typeString":"type(library Gear)"}},"id":75991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6409:9:159","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":76883,"src":"6404:14:159","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$76883_$","typeString":"type(enum Gear.CodeState)"}},"id":75992,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6419:7:159","memberName":"Unknown","nodeType":"MemberAccess","referencedDeclaration":76880,"src":"6404:22:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76883","typeString":"enum Gear.CodeState"}},"src":"6366:60:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"676976656e20636f646520696420697320616c7265616479206f6e2076616c69646174696f6e206f722076616c696461746564","id":75994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6440:53:159","typeDescriptions":{"typeIdentifier":"t_stringliteral_6767c8b133cc7e7263c64dbd155947c93c4fdbe1adf907d9d3428673190ae536","typeString":"literal_string \"given code id is already on validation or validated\""},"value":"given code id is already on validation or validated"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6767c8b133cc7e7263c64dbd155947c93c4fdbe1adf907d9d3428673190ae536","typeString":"literal_string \"given code id is already on validation or validated\""}],"id":75984,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"6345:7:159","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":75995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6345:158:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75996,"nodeType":"ExpressionStatement","src":"6345:158:159"},{"expression":{"id":76007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"expression":{"id":75997,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75968,"src":"6514:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76001,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6521:12:159","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":73632,"src":"6514:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$76926_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":76002,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6534:5:159","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":76917,"src":"6514:25:159","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$76883_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":76003,"indexExpression":{"id":76000,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75948,"src":"6540:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6514:34:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76883","typeString":"enum Gear.CodeState"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":76004,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77275,"src":"6551:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77275_$","typeString":"type(library Gear)"}},"id":76005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6556:9:159","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":76883,"src":"6551:14:159","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$76883_$","typeString":"type(enum Gear.CodeState)"}},"id":76006,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6566:19:159","memberName":"ValidationRequested","nodeType":"MemberAccess","referencedDeclaration":76881,"src":"6551:34:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76883","typeString":"enum Gear.CodeState"}},"src":"6514:71:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76883","typeString":"enum Gear.CodeState"}},"id":76008,"nodeType":"ExpressionStatement","src":"6514:71:159"},{"eventCall":{"arguments":[{"id":76010,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75948,"src":"6625:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":76011,"name":"_blobTxHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75950,"src":"6634:11:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":76009,"name":"CodeValidationRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73652,"src":"6601:23:159","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32)"}},"id":76012,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6601:45:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76013,"nodeType":"EmitStatement","src":"6596:50:159"}]},"baseFunctions":[73799],"functionSelector":"1c149d8a","implemented":true,"kind":"function","modifiers":[],"name":"requestCodeValidation","nameLocation":"6025:21:159","parameters":{"id":75951,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75948,"mutability":"mutable","name":"_codeId","nameLocation":"6055:7:159","nodeType":"VariableDeclaration","scope":76015,"src":"6047:15:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75947,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6047:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":75950,"mutability":"mutable","name":"_blobTxHash","nameLocation":"6072:11:159","nodeType":"VariableDeclaration","scope":76015,"src":"6064:19:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75949,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6064:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6046:38:159"},"returnParameters":{"id":75952,"nodeType":"ParameterList","parameters":[],"src":"6094:0:159"},"scope":76724,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":76046,"nodeType":"FunctionDefinition","src":"6659:231:159","nodes":[],"body":{"id":76045,"nodeType":"Block","src":"6741:149:159","nodes":[],"statements":[{"assignments":[76025],"declarations":[{"constant":false,"id":76025,"mutability":"mutable","name":"mirror","nameLocation":"6759:6:159","nodeType":"VariableDeclaration","scope":76045,"src":"6751:14:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76024,"name":"address","nodeType":"ElementaryTypeName","src":"6751:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":76030,"initialValue":{"arguments":[{"id":76027,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76017,"src":"6783:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":76028,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76019,"src":"6792:5:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":76026,"name":"_createProgram","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76382,"src":"6768:14:159","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,bytes32) returns (address)"}},"id":76029,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6768:30:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6751:47:159"},{"expression":{"arguments":[{"expression":{"id":76035,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6836:3:159","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":76036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6840:6:159","memberName":"sender","nodeType":"MemberAccess","src":"6836:10:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":76039,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6856:1:159","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":76038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6848:7:159","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":76037,"name":"address","nodeType":"ElementaryTypeName","src":"6848:7:159","typeDescriptions":{}}},"id":76040,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6848:10:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":76032,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76025,"src":"6817:6:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76031,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73559,"src":"6809:7:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$73559_$","typeString":"type(contract IMirror)"}},"id":76033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6809:15:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$73559","typeString":"contract IMirror"}},"id":76034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6825:10:159","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":73550,"src":"6809:26:159","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address) external"}},"id":76041,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6809:50:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76042,"nodeType":"ExpressionStatement","src":"6809:50:159"},{"expression":{"id":76043,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76025,"src":"6877:6:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":76023,"id":76044,"nodeType":"Return","src":"6870:13:159"}]},"baseFunctions":[73809],"functionSelector":"527de0f9","implemented":true,"kind":"function","modifiers":[],"name":"createProgram","nameLocation":"6668:13:159","parameters":{"id":76020,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76017,"mutability":"mutable","name":"_codeId","nameLocation":"6690:7:159","nodeType":"VariableDeclaration","scope":76046,"src":"6682:15:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":76016,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6682:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":76019,"mutability":"mutable","name":"_salt","nameLocation":"6707:5:159","nodeType":"VariableDeclaration","scope":76046,"src":"6699:13:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":76018,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6699:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6681:32:159"},"returnParameters":{"id":76023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76022,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":76046,"src":"6732:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76021,"name":"address","nodeType":"ElementaryTypeName","src":"6732:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6731:9:159"},"scope":76724,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":76089,"nodeType":"FunctionDefinition","src":"6896:382:159","nodes":[],"body":{"id":76088,"nodeType":"Block","src":"7031:247:159","nodes":[],"statements":[{"assignments":[76058],"declarations":[{"constant":false,"id":76058,"mutability":"mutable","name":"mirror","nameLocation":"7049:6:159","nodeType":"VariableDeclaration","scope":76088,"src":"7041:14:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76057,"name":"address","nodeType":"ElementaryTypeName","src":"7041:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":76063,"initialValue":{"arguments":[{"id":76060,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76050,"src":"7073:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":76061,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76052,"src":"7082:5:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":76059,"name":"_createProgram","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76382,"src":"7058:14:159","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,bytes32) returns (address)"}},"id":76062,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7058:30:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"7041:47:159"},{"assignments":[76065],"declarations":[{"constant":false,"id":76065,"mutability":"mutable","name":"decoder","nameLocation":"7106:7:159","nodeType":"VariableDeclaration","scope":76088,"src":"7098:15:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76064,"name":"address","nodeType":"ElementaryTypeName","src":"7098:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":76076,"initialValue":{"arguments":[{"id":76067,"name":"_decoderImpl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76048,"src":"7131:12:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[{"id":76071,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76050,"src":"7172:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":76072,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76052,"src":"7181:5:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":76069,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7155:3:159","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":76070,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7159:12:159","memberName":"encodePacked","nodeType":"MemberAccess","src":"7155:16:159","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":76073,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7155:32:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":76068,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"7145:9:159","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":76074,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7145:43:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":76066,"name":"_createDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76408,"src":"7116:14:159","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$_t_address_$","typeString":"function (address,bytes32) returns (address)"}},"id":76075,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7116:73:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"7098:91:159"},{"expression":{"arguments":[{"expression":{"id":76081,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7227:3:159","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":76082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7231:6:159","memberName":"sender","nodeType":"MemberAccess","src":"7227:10:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":76083,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76065,"src":"7239:7:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":76078,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76058,"src":"7208:6:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76077,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73559,"src":"7200:7:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$73559_$","typeString":"type(contract IMirror)"}},"id":76079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7200:15:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$73559","typeString":"contract IMirror"}},"id":76080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7216:10:159","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":73550,"src":"7200:26:159","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address) external"}},"id":76084,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7200:47:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76085,"nodeType":"ExpressionStatement","src":"7200:47:159"},{"expression":{"id":76086,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76058,"src":"7265:6:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":76056,"id":76087,"nodeType":"Return","src":"7258:13:159"}]},"baseFunctions":[73821],"functionSelector":"e7006a74","implemented":true,"kind":"function","modifiers":[],"name":"createProgramWithDecoder","nameLocation":"6905:24:159","parameters":{"id":76053,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76048,"mutability":"mutable","name":"_decoderImpl","nameLocation":"6938:12:159","nodeType":"VariableDeclaration","scope":76089,"src":"6930:20:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76047,"name":"address","nodeType":"ElementaryTypeName","src":"6930:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76050,"mutability":"mutable","name":"_codeId","nameLocation":"6960:7:159","nodeType":"VariableDeclaration","scope":76089,"src":"6952:15:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":76049,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6952:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":76052,"mutability":"mutable","name":"_salt","nameLocation":"6977:5:159","nodeType":"VariableDeclaration","scope":76089,"src":"6969:13:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":76051,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6969:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6929:54:159"},"returnParameters":{"id":76056,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76055,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":76089,"src":"7018:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76054,"name":"address","nodeType":"ElementaryTypeName","src":"7018:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7017:9:159"},"scope":76724,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":76221,"nodeType":"FunctionDefinition","src":"7311:1336:159","nodes":[],"body":{"id":76220,"nodeType":"Block","src":"7420:1227:159","nodes":[],"statements":[{"assignments":[76101],"declarations":[{"constant":false,"id":76101,"mutability":"mutable","name":"router","nameLocation":"7446:6:159","nodeType":"VariableDeclaration","scope":76220,"src":"7430:22:159","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":76100,"nodeType":"UserDefinedTypeName","pathNode":{"id":76099,"name":"Storage","nameLocations":["7430:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73633,"src":"7430:7:159"},"referencedDeclaration":73633,"src":"7430:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":76104,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":76102,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"7455:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":76103,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7455:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7430:34:159"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":76113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":76106,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76101,"src":"7482:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76107,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7489:12:159","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":73612,"src":"7482:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$76900_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":76108,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7502:4:159","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":76895,"src":"7482:24:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":76111,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7518:1:159","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":76110,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7510:7:159","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":76109,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7510:7:159","typeDescriptions":{}}},"id":76112,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7510:10:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"7482:38:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"726f757465722067656e65736973206973207a65726f3b2063616c6c20606c6f6f6b757047656e6573697348617368282960206669727374","id":76114,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7522:58:159","typeDescriptions":{"typeIdentifier":"t_stringliteral_5fec8ede65c0caef3899b3174f258c732d5616cc4144b82fcdbac009109d42dc","typeString":"literal_string \"router genesis is zero; call `lookupGenesisHash()` first\""},"value":"router genesis is zero; call `lookupGenesisHash()` first"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5fec8ede65c0caef3899b3174f258c732d5616cc4144b82fcdbac009109d42dc","typeString":"literal_string \"router genesis is zero; call `lookupGenesisHash()` first\""}],"id":76105,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"7474:7:159","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":76115,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7474:107:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76116,"nodeType":"ExpressionStatement","src":"7474:107:159"},{"assignments":[76118],"declarations":[{"constant":false,"id":76118,"mutability":"mutable","name":"codeCommitmentsHashes","nameLocation":"7605:21:159","nodeType":"VariableDeclaration","scope":76220,"src":"7592:34:159","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":76117,"name":"bytes","nodeType":"ElementaryTypeName","src":"7592:5:159","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":76119,"nodeType":"VariableDeclarationStatement","src":"7592:34:159"},{"body":{"id":76206,"nodeType":"Block","src":"7691:784:159","statements":[{"assignments":[76135],"declarations":[{"constant":false,"id":76135,"mutability":"mutable","name":"codeCommitment","nameLocation":"7734:14:159","nodeType":"VariableDeclaration","scope":76206,"src":"7705:43:159","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$76879_calldata_ptr","typeString":"struct Gear.CodeCommitment"},"typeName":{"id":76134,"nodeType":"UserDefinedTypeName","pathNode":{"id":76133,"name":"Gear.CodeCommitment","nameLocations":["7705:4:159","7710:14:159"],"nodeType":"IdentifierPath","referencedDeclaration":76879,"src":"7705:19:159"},"referencedDeclaration":76879,"src":"7705:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$76879_storage_ptr","typeString":"struct Gear.CodeCommitment"}},"visibility":"internal"}],"id":76139,"initialValue":{"baseExpression":{"id":76136,"name":"_codeCommitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76093,"src":"7751:16:159","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$76879_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata[] calldata"}},"id":76138,"indexExpression":{"id":76137,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76121,"src":"7768:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7751:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$76879_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"nodeType":"VariableDeclarationStatement","src":"7705:65:159"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_CodeState_$76883","typeString":"enum Gear.CodeState"},"id":76150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":76141,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76101,"src":"7810:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76142,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7817:12:159","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":73632,"src":"7810:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$76926_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":76143,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7830:5:159","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":76917,"src":"7810:25:159","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$76883_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":76146,"indexExpression":{"expression":{"id":76144,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76135,"src":"7836:14:159","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$76879_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":76145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7851:2:159","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":76876,"src":"7836:17:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7810:44:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76883","typeString":"enum Gear.CodeState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":76147,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77275,"src":"7858:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77275_$","typeString":"type(library Gear)"}},"id":76148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7863:9:159","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":76883,"src":"7858:14:159","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$76883_$","typeString":"type(enum Gear.CodeState)"}},"id":76149,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7873:19:159","memberName":"ValidationRequested","nodeType":"MemberAccess","referencedDeclaration":76881,"src":"7858:34:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76883","typeString":"enum Gear.CodeState"}},"src":"7810:82:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"636f6465206d7573742062652072657175657374656420666f722076616c69646174696f6e20746f20626520636f6d6d6974746564","id":76151,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7910:55:159","typeDescriptions":{"typeIdentifier":"t_stringliteral_5641fde195ef857639d9de420cb3fc56957be6957a3c8a5e78a2243186a510e8","typeString":"literal_string \"code must be requested for validation to be committed\""},"value":"code must be requested for validation to be committed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5641fde195ef857639d9de420cb3fc56957be6957a3c8a5e78a2243186a510e8","typeString":"literal_string \"code must be requested for validation to be committed\""}],"id":76140,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"7785:7:159","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":76152,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7785:194:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76153,"nodeType":"ExpressionStatement","src":"7785:194:159"},{"condition":{"expression":{"id":76154,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76135,"src":"7998:14:159","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$76879_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":76155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8013:5:159","memberName":"valid","nodeType":"MemberAccess","referencedDeclaration":76878,"src":"7998:20:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":76185,"nodeType":"Block","src":"8189:84:159","statements":[{"expression":{"id":76183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"8207:51:159","subExpression":{"baseExpression":{"expression":{"expression":{"id":76177,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76101,"src":"8214:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76178,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8221:12:159","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":73632,"src":"8214:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$76926_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":76179,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8234:5:159","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":76917,"src":"8214:25:159","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$76883_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":76182,"indexExpression":{"expression":{"id":76180,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76135,"src":"8240:14:159","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$76879_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":76181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8255:2:159","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":76876,"src":"8240:17:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8214:44:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76883","typeString":"enum Gear.CodeState"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76184,"nodeType":"ExpressionStatement","src":"8207:51:159"}]},"id":76186,"nodeType":"IfStatement","src":"7994:279:159","trueBody":{"id":76176,"nodeType":"Block","src":"8020:163:159","statements":[{"expression":{"id":76167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"expression":{"id":76156,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76101,"src":"8038:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76161,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8045:12:159","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":73632,"src":"8038:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$76926_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":76162,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8058:5:159","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":76917,"src":"8038:25:159","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$76883_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":76163,"indexExpression":{"expression":{"id":76159,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76135,"src":"8064:14:159","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$76879_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":76160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8079:2:159","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":76876,"src":"8064:17:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8038:44:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76883","typeString":"enum Gear.CodeState"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":76164,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77275,"src":"8085:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77275_$","typeString":"type(library Gear)"}},"id":76165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8090:9:159","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":76883,"src":"8085:14:159","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$76883_$","typeString":"type(enum Gear.CodeState)"}},"id":76166,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8100:9:159","memberName":"Validated","nodeType":"MemberAccess","referencedDeclaration":76882,"src":"8085:24:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76883","typeString":"enum Gear.CodeState"}},"src":"8038:71:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76883","typeString":"enum Gear.CodeState"}},"id":76168,"nodeType":"ExpressionStatement","src":"8038:71:159"},{"expression":{"id":76174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"8127:41:159","subExpression":{"expression":{"expression":{"id":76169,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76101,"src":"8127:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76172,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8134:12:159","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":73632,"src":"8127:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$76926_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":76173,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8147:19:159","memberName":"validatedCodesCount","nodeType":"MemberAccess","referencedDeclaration":76925,"src":"8127:39:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76175,"nodeType":"ExpressionStatement","src":"8127:41:159"}]}},{"eventCall":{"arguments":[{"expression":{"id":76188,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76135,"src":"8309:14:159","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$76879_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":76189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8324:2:159","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":76876,"src":"8309:17:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":76190,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76135,"src":"8328:14:159","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$76879_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":76191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8343:5:159","memberName":"valid","nodeType":"MemberAccess","referencedDeclaration":76878,"src":"8328:20:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":76187,"name":"CodeGotValidated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73645,"src":"8292:16:159","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bool_$returns$__$","typeString":"function (bytes32,bool)"}},"id":76192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8292:57:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76193,"nodeType":"EmitStatement","src":"8287:62:159"},{"expression":{"id":76204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":76194,"name":"codeCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76118,"src":"8364:21:159","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":76198,"name":"codeCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76118,"src":"8401:21:159","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":76201,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76135,"src":"8448:14:159","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$76879_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_CodeCommitment_$76879_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}],"expression":{"id":76199,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77275,"src":"8424:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77275_$","typeString":"type(library Gear)"}},"id":76200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8429:18:159","memberName":"codeCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":77055,"src":"8424:23:159","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_CodeCommitment_$76879_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.CodeCommitment calldata) pure returns (bytes32)"}},"id":76202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8424:39:159","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":76196,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8388:5:159","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":76195,"name":"bytes","nodeType":"ElementaryTypeName","src":"8388:5:159","typeDescriptions":{}}},"id":76197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8394:6:159","memberName":"concat","nodeType":"MemberAccess","src":"8388:12:159","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":76203,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8388:76:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"8364:100:159","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":76205,"nodeType":"ExpressionStatement","src":"8364:100:159"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76124,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76121,"src":"7657:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":76125,"name":"_codeCommitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76093,"src":"7661:16:159","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$76879_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata[] calldata"}},"id":76126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7678:6:159","memberName":"length","nodeType":"MemberAccess","src":"7661:23:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7657:27:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76207,"initializationExpression":{"assignments":[76121],"declarations":[{"constant":false,"id":76121,"mutability":"mutable","name":"i","nameLocation":"7650:1:159","nodeType":"VariableDeclaration","scope":76207,"src":"7642:9:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76120,"name":"uint256","nodeType":"ElementaryTypeName","src":"7642:7:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":76123,"initialValue":{"hexValue":"30","id":76122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7654:1:159","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"7642:13:159"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":76129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"7686:3:159","subExpression":{"id":76128,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76121,"src":"7686:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76130,"nodeType":"ExpressionStatement","src":"7686:3:159"},"nodeType":"ForStatement","src":"7637:838:159"},{"expression":{"arguments":[{"arguments":[{"id":76211,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76101,"src":"8530:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"arguments":[{"id":76213,"name":"codeCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76118,"src":"8548:21:159","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":76212,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"8538:9:159","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":76214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8538:32:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":76215,"name":"_signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76096,"src":"8572:11:159","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}],"expression":{"id":76209,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77275,"src":"8506:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77275_$","typeString":"type(library Gear)"}},"id":76210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8511:18:159","memberName":"validateSignatures","nodeType":"MemberAccess","referencedDeclaration":77231,"src":"8506:23:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$73633_storage_ptr_$_t_bytes32_$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bool_$","typeString":"function (struct IRouter.Storage storage pointer,bytes32,bytes calldata[] calldata) view returns (bool)"}},"id":76216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8506:78:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"7369676e61747572657320766572696669636174696f6e206661696c6564","id":76217,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8598:32:159","typeDescriptions":{"typeIdentifier":"t_stringliteral_42f70f68087ddd2ea90e0adc36eeb88121bbdb06c88480a0c6a87e4a00dde3b2","typeString":"literal_string \"signatures verification failed\""},"value":"signatures verification failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_42f70f68087ddd2ea90e0adc36eeb88121bbdb06c88480a0c6a87e4a00dde3b2","typeString":"literal_string \"signatures verification failed\""}],"id":76208,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"8485:7:159","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":76218,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8485:155:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76219,"nodeType":"ExpressionStatement","src":"8485:155:159"}]},"baseFunctions":[73832],"functionSelector":"e97d3eb3","implemented":true,"kind":"function","modifiers":[],"name":"commitCodes","nameLocation":"7320:11:159","parameters":{"id":76097,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76093,"mutability":"mutable","name":"_codeCommitments","nameLocation":"7363:16:159","nodeType":"VariableDeclaration","scope":76221,"src":"7332:47:159","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$76879_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.CodeCommitment[]"},"typeName":{"baseType":{"id":76091,"nodeType":"UserDefinedTypeName","pathNode":{"id":76090,"name":"Gear.CodeCommitment","nameLocations":["7332:4:159","7337:14:159"],"nodeType":"IdentifierPath","referencedDeclaration":76879,"src":"7332:19:159"},"referencedDeclaration":76879,"src":"7332:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$76879_storage_ptr","typeString":"struct Gear.CodeCommitment"}},"id":76092,"nodeType":"ArrayTypeName","src":"7332:21:159","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$76879_storage_$dyn_storage_ptr","typeString":"struct Gear.CodeCommitment[]"}},"visibility":"internal"},{"constant":false,"id":76096,"mutability":"mutable","name":"_signatures","nameLocation":"7398:11:159","nodeType":"VariableDeclaration","scope":76221,"src":"7381:28:159","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":76094,"name":"bytes","nodeType":"ElementaryTypeName","src":"7381:5:159","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":76095,"nodeType":"ArrayTypeName","src":"7381:7:159","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"7331:79:159"},"returnParameters":{"id":76098,"nodeType":"ParameterList","parameters":[],"src":"7420:0:159"},"scope":76724,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":76301,"nodeType":"FunctionDefinition","src":"8653:798:159","nodes":[],"body":{"id":76300,"nodeType":"Block","src":"8798:653:159","nodes":[],"statements":[{"assignments":[76235],"declarations":[{"constant":false,"id":76235,"mutability":"mutable","name":"router","nameLocation":"8824:6:159","nodeType":"VariableDeclaration","scope":76300,"src":"8808:22:159","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":76234,"nodeType":"UserDefinedTypeName","pathNode":{"id":76233,"name":"Storage","nameLocations":["8808:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73633,"src":"8808:7:159"},"referencedDeclaration":73633,"src":"8808:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":76238,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":76236,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"8833:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":76237,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8833:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"8808:34:159"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":76247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":76240,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76235,"src":"8860:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76241,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8867:12:159","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":73612,"src":"8860:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$76900_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":76242,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8880:4:159","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":76895,"src":"8860:24:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":76245,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8896:1:159","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":76244,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8888:7:159","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":76243,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8888:7:159","typeDescriptions":{}}},"id":76246,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8888:10:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"8860:38:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"726f757465722067656e65736973206973207a65726f3b2063616c6c20606c6f6f6b757047656e6573697348617368282960206669727374","id":76248,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8900:58:159","typeDescriptions":{"typeIdentifier":"t_stringliteral_5fec8ede65c0caef3899b3174f258c732d5616cc4144b82fcdbac009109d42dc","typeString":"literal_string \"router genesis is zero; call `lookupGenesisHash()` first\""},"value":"router genesis is zero; call `lookupGenesisHash()` first"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5fec8ede65c0caef3899b3174f258c732d5616cc4144b82fcdbac009109d42dc","typeString":"literal_string \"router genesis is zero; call `lookupGenesisHash()` first\""}],"id":76239,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"8852:7:159","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":76249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8852:107:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76250,"nodeType":"ExpressionStatement","src":"8852:107:159"},{"assignments":[76252],"declarations":[{"constant":false,"id":76252,"mutability":"mutable","name":"blockCommitmentsHashes","nameLocation":"8983:22:159","nodeType":"VariableDeclaration","scope":76300,"src":"8970:35:159","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":76251,"name":"bytes","nodeType":"ElementaryTypeName","src":"8970:5:159","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":76253,"nodeType":"VariableDeclarationStatement","src":"8970:35:159"},{"body":{"id":76286,"nodeType":"Block","src":"9071:207:159","statements":[{"assignments":[76269],"declarations":[{"constant":false,"id":76269,"mutability":"mutable","name":"blockCommitment","nameLocation":"9115:15:159","nodeType":"VariableDeclaration","scope":76286,"src":"9085:45:159","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76874_calldata_ptr","typeString":"struct Gear.BlockCommitment"},"typeName":{"id":76268,"nodeType":"UserDefinedTypeName","pathNode":{"id":76267,"name":"Gear.BlockCommitment","nameLocations":["9085:4:159","9090:15:159"],"nodeType":"IdentifierPath","referencedDeclaration":76874,"src":"9085:20:159"},"referencedDeclaration":76874,"src":"9085:20:159","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76874_storage_ptr","typeString":"struct Gear.BlockCommitment"}},"visibility":"internal"}],"id":76273,"initialValue":{"baseExpression":{"id":76270,"name":"_blockCommitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76225,"src":"9133:17:159","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$76874_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata[] calldata"}},"id":76272,"indexExpression":{"id":76271,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76255,"src":"9151:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9133:20:159","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76874_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"nodeType":"VariableDeclarationStatement","src":"9085:68:159"},{"expression":{"id":76284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":76274,"name":"blockCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76252,"src":"9167:22:159","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":76278,"name":"blockCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76252,"src":"9205:22:159","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":76280,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76235,"src":"9242:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"id":76281,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76269,"src":"9250:15:159","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76874_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_struct$_BlockCommitment_$76874_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}],"id":76279,"name":"_commitBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76477,"src":"9229:12:159","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Storage_$73633_storage_ptr_$_t_struct$_BlockCommitment_$76874_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct IRouter.Storage storage pointer,struct Gear.BlockCommitment calldata) returns (bytes32)"}},"id":76282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9229:37:159","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":76276,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9192:5:159","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":76275,"name":"bytes","nodeType":"ElementaryTypeName","src":"9192:5:159","typeDescriptions":{}}},"id":76277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9198:6:159","memberName":"concat","nodeType":"MemberAccess","src":"9192:12:159","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":76283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9192:75:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"9167:100:159","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":76285,"nodeType":"ExpressionStatement","src":"9167:100:159"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76258,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76255,"src":"9036:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":76259,"name":"_blockCommitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76225,"src":"9040:17:159","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$76874_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata[] calldata"}},"id":76260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9058:6:159","memberName":"length","nodeType":"MemberAccess","src":"9040:24:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9036:28:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76287,"initializationExpression":{"assignments":[76255],"declarations":[{"constant":false,"id":76255,"mutability":"mutable","name":"i","nameLocation":"9029:1:159","nodeType":"VariableDeclaration","scope":76287,"src":"9021:9:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76254,"name":"uint256","nodeType":"ElementaryTypeName","src":"9021:7:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":76257,"initialValue":{"hexValue":"30","id":76256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9033:1:159","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9021:13:159"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":76263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"9066:3:159","subExpression":{"id":76262,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76255,"src":"9066:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76264,"nodeType":"ExpressionStatement","src":"9066:3:159"},"nodeType":"ForStatement","src":"9016:262:159"},{"expression":{"arguments":[{"arguments":[{"id":76291,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76235,"src":"9333:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"arguments":[{"id":76293,"name":"blockCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76252,"src":"9351:22:159","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":76292,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"9341:9:159","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":76294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9341:33:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":76295,"name":"_signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76228,"src":"9376:11:159","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}],"expression":{"id":76289,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77275,"src":"9309:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77275_$","typeString":"type(library Gear)"}},"id":76290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9314:18:159","memberName":"validateSignatures","nodeType":"MemberAccess","referencedDeclaration":77231,"src":"9309:23:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$73633_storage_ptr_$_t_bytes32_$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bool_$","typeString":"function (struct IRouter.Storage storage pointer,bytes32,bytes calldata[] calldata) view returns (bool)"}},"id":76296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9309:79:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"7369676e61747572657320766572696669636174696f6e206661696c6564","id":76297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9402:32:159","typeDescriptions":{"typeIdentifier":"t_stringliteral_42f70f68087ddd2ea90e0adc36eeb88121bbdb06c88480a0c6a87e4a00dde3b2","typeString":"literal_string \"signatures verification failed\""},"value":"signatures verification failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_42f70f68087ddd2ea90e0adc36eeb88121bbdb06c88480a0c6a87e4a00dde3b2","typeString":"literal_string \"signatures verification failed\""}],"id":76288,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"9288:7:159","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":76298,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9288:156:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76299,"nodeType":"ExpressionStatement","src":"9288:156:159"}]},"baseFunctions":[73843],"functionSelector":"01b1d156","implemented":true,"kind":"function","modifiers":[{"id":76231,"kind":"modifierInvocation","modifierName":{"id":76230,"name":"nonReentrant","nameLocations":["8781:12:159"],"nodeType":"IdentifierPath","referencedDeclaration":44000,"src":"8781:12:159"},"nodeType":"ModifierInvocation","src":"8781:12:159"}],"name":"commitBlocks","nameLocation":"8662:12:159","parameters":{"id":76229,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76225,"mutability":"mutable","name":"_blockCommitments","nameLocation":"8707:17:159","nodeType":"VariableDeclaration","scope":76301,"src":"8675:49:159","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$76874_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.BlockCommitment[]"},"typeName":{"baseType":{"id":76223,"nodeType":"UserDefinedTypeName","pathNode":{"id":76222,"name":"Gear.BlockCommitment","nameLocations":["8675:4:159","8680:15:159"],"nodeType":"IdentifierPath","referencedDeclaration":76874,"src":"8675:20:159"},"referencedDeclaration":76874,"src":"8675:20:159","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76874_storage_ptr","typeString":"struct Gear.BlockCommitment"}},"id":76224,"nodeType":"ArrayTypeName","src":"8675:22:159","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$76874_storage_$dyn_storage_ptr","typeString":"struct Gear.BlockCommitment[]"}},"visibility":"internal"},{"constant":false,"id":76228,"mutability":"mutable","name":"_signatures","nameLocation":"8743:11:159","nodeType":"VariableDeclaration","scope":76301,"src":"8726:28:159","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":76226,"name":"bytes","nodeType":"ElementaryTypeName","src":"8726:5:159","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":76227,"nodeType":"ArrayTypeName","src":"8726:7:159","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"8674:81:159"},"returnParameters":{"id":76232,"nodeType":"ParameterList","parameters":[],"src":"8798:0:159"},"scope":76724,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":76382,"nodeType":"FunctionDefinition","src":"9493:887:159","nodes":[],"body":{"id":76381,"nodeType":"Block","src":"9575:805:159","nodes":[],"statements":[{"assignments":[76312],"declarations":[{"constant":false,"id":76312,"mutability":"mutable","name":"router","nameLocation":"9601:6:159","nodeType":"VariableDeclaration","scope":76381,"src":"9585:22:159","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":76311,"nodeType":"UserDefinedTypeName","pathNode":{"id":76310,"name":"Storage","nameLocations":["9585:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73633,"src":"9585:7:159"},"referencedDeclaration":73633,"src":"9585:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":76315,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":76313,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76666,"src":"9610:7:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73633_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":76314,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9610:9:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"9585:34:159"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":76324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":76317,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76312,"src":"9637:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76318,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9644:12:159","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":73612,"src":"9637:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$76900_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":76319,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9657:4:159","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":76895,"src":"9637:24:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":76322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9673:1:159","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":76321,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9665:7:159","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":76320,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9665:7:159","typeDescriptions":{}}},"id":76323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9665:10:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"9637:38:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"726f757465722067656e65736973206973207a65726f3b2063616c6c20606c6f6f6b757047656e6573697348617368282960206669727374","id":76325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9677:58:159","typeDescriptions":{"typeIdentifier":"t_stringliteral_5fec8ede65c0caef3899b3174f258c732d5616cc4144b82fcdbac009109d42dc","typeString":"literal_string \"router genesis is zero; call `lookupGenesisHash()` first\""},"value":"router genesis is zero; call `lookupGenesisHash()` first"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5fec8ede65c0caef3899b3174f258c732d5616cc4144b82fcdbac009109d42dc","typeString":"literal_string \"router genesis is zero; call `lookupGenesisHash()` first\""}],"id":76316,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"9629:7:159","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":76326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9629:107:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76327,"nodeType":"ExpressionStatement","src":"9629:107:159"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_CodeState_$76883","typeString":"enum Gear.CodeState"},"id":76337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":76329,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76312,"src":"9768:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76330,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9775:12:159","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":73632,"src":"9768:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$76926_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":76331,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9788:5:159","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":76917,"src":"9768:25:159","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$76883_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":76333,"indexExpression":{"id":76332,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76303,"src":"9794:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9768:34:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76883","typeString":"enum Gear.CodeState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":76334,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77275,"src":"9806:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77275_$","typeString":"type(library Gear)"}},"id":76335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9811:9:159","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":76883,"src":"9806:14:159","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$76883_$","typeString":"type(enum Gear.CodeState)"}},"id":76336,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9821:9:159","memberName":"Validated","nodeType":"MemberAccess","referencedDeclaration":76882,"src":"9806:24:159","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$76883","typeString":"enum Gear.CodeState"}},"src":"9768:62:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"636f6465206d7573742062652076616c696461746564206265666f72652070726f6772616d206372656174696f6e","id":76338,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9844:48:159","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":76328,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"9747:7:159","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":76339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9747:155:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76340,"nodeType":"ExpressionStatement","src":"9747:155:159"},{"assignments":[76342],"declarations":[{"constant":false,"id":76342,"mutability":"mutable","name":"actorId","nameLocation":"10071:7:159","nodeType":"VariableDeclaration","scope":76381,"src":"10063:15:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76341,"name":"address","nodeType":"ElementaryTypeName","src":"10063:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":76356,"initialValue":{"arguments":[{"expression":{"expression":{"id":76345,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76312,"src":"10119:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76346,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10126:13:159","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":73620,"src":"10119:20:159","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$76861_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":76347,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10140:11:159","memberName":"mirrorProxy","nodeType":"MemberAccess","referencedDeclaration":76858,"src":"10119:32:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[{"id":76351,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76303,"src":"10180:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":76352,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76305,"src":"10189:5:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":76349,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"10163:3:159","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":76350,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10167:12:159","memberName":"encodePacked","nodeType":"MemberAccess","src":"10163:16:159","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":76353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10163:32:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":76348,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"10153:9:159","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":76354,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10153:43:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":76343,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41840,"src":"10093:6:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Clones_$41840_$","typeString":"type(library Clones)"}},"id":76344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10100:18:159","memberName":"cloneDeterministic","nodeType":"MemberAccess","referencedDeclaration":41758,"src":"10093:25:159","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$_t_address_$","typeString":"function (address,bytes32) returns (address)"}},"id":76355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10093:104:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"10063:134:159"},{"expression":{"id":76365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"expression":{"id":76357,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76312,"src":"10208:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76361,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10215:12:159","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":73632,"src":"10208:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$76926_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":76362,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10228:8:159","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":76921,"src":"10208:28:159","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":76363,"indexExpression":{"id":76360,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76342,"src":"10237:7:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10208:37:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":76364,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76303,"src":"10248:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"10208:47:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":76366,"nodeType":"ExpressionStatement","src":"10208:47:159"},{"expression":{"id":76372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"10265:35:159","subExpression":{"expression":{"expression":{"id":76367,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76312,"src":"10265:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76370,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10272:12:159","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":73632,"src":"10265:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$76926_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":76371,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"10285:13:159","memberName":"programsCount","nodeType":"MemberAccess","referencedDeclaration":76923,"src":"10265:33:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76373,"nodeType":"ExpressionStatement","src":"10265:35:159"},{"eventCall":{"arguments":[{"id":76375,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76342,"src":"10331:7:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":76376,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76303,"src":"10340:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":76374,"name":"ProgramCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73666,"src":"10316:14:159","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_bytes32_$returns$__$","typeString":"function (address,bytes32)"}},"id":76377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10316:32:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76378,"nodeType":"EmitStatement","src":"10311:37:159"},{"expression":{"id":76379,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76342,"src":"10366:7:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":76309,"id":76380,"nodeType":"Return","src":"10359:14:159"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_createProgram","nameLocation":"9502:14:159","parameters":{"id":76306,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76303,"mutability":"mutable","name":"_codeId","nameLocation":"9525:7:159","nodeType":"VariableDeclaration","scope":76382,"src":"9517:15:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":76302,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9517:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":76305,"mutability":"mutable","name":"_salt","nameLocation":"9542:5:159","nodeType":"VariableDeclaration","scope":76382,"src":"9534:13:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":76304,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9534:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"9516:32:159"},"returnParameters":{"id":76309,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76308,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":76382,"src":"9566:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76307,"name":"address","nodeType":"ElementaryTypeName","src":"9566:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9565:9:159"},"scope":76724,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":76408,"nodeType":"FunctionDefinition","src":"10386:246:159","nodes":[],"body":{"id":76407,"nodeType":"Block","src":"10476:156:159","nodes":[],"statements":[{"assignments":[76392],"declarations":[{"constant":false,"id":76392,"mutability":"mutable","name":"decoder","nameLocation":"10494:7:159","nodeType":"VariableDeclaration","scope":76407,"src":"10486:15:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76391,"name":"address","nodeType":"ElementaryTypeName","src":"10486:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":76398,"initialValue":{"arguments":[{"id":76395,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76384,"src":"10530:15:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":76396,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76386,"src":"10547:5:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":76393,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41840,"src":"10504:6:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Clones_$41840_$","typeString":"type(library Clones)"}},"id":76394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10511:18:159","memberName":"cloneDeterministic","nodeType":"MemberAccess","referencedDeclaration":41758,"src":"10504:25:159","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$_t_address_$","typeString":"function (address,bytes32) returns (address)"}},"id":76397,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10504:49:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"10486:67:159"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":76400,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76392,"src":"10579:7:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76399,"name":"IMirrorDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73594,"src":"10564:14:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirrorDecoder_$73594_$","typeString":"type(contract IMirrorDecoder)"}},"id":76401,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10564:23:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirrorDecoder_$73594","typeString":"contract IMirrorDecoder"}},"id":76402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10588:10:159","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":73564,"src":"10564:34:159","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$__$","typeString":"function () external"}},"id":76403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10564:36:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76404,"nodeType":"ExpressionStatement","src":"10564:36:159"},{"expression":{"id":76405,"name":"decoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76392,"src":"10618:7:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":76390,"id":76406,"nodeType":"Return","src":"10611:14:159"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_createDecoder","nameLocation":"10395:14:159","parameters":{"id":76387,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76384,"mutability":"mutable","name":"_implementation","nameLocation":"10418:15:159","nodeType":"VariableDeclaration","scope":76408,"src":"10410:23:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76383,"name":"address","nodeType":"ElementaryTypeName","src":"10410:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76386,"mutability":"mutable","name":"_salt","nameLocation":"10443:5:159","nodeType":"VariableDeclaration","scope":76408,"src":"10435:13:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":76385,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10435:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"10409:40:159"},"returnParameters":{"id":76390,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76389,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":76408,"src":"10467:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76388,"name":"address","nodeType":"ElementaryTypeName","src":"10467:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10466:9:159"},"scope":76724,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":76477,"nodeType":"FunctionDefinition","src":"10638:1094:159","nodes":[],"body":{"id":76476,"nodeType":"Block","src":"10778:954:159","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":76425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":76420,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76411,"src":"10809:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76421,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10816:20:159","memberName":"latestCommittedBlock","nodeType":"MemberAccess","referencedDeclaration":73616,"src":"10809:27:159","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBlockInfo_$76888_storage","typeString":"struct Gear.CommittedBlockInfo storage ref"}},"id":76422,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10837:4:159","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":76885,"src":"10809:32:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":76423,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76414,"src":"10845:16:159","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76874_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":76424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10862:22:159","memberName":"previousCommittedBlock","nodeType":"MemberAccess","referencedDeclaration":76867,"src":"10845:39:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"10809:75:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e76616c69642070726576696f757320636f6d6d697474656420626c6f636b2068617368","id":76426,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10898:39:159","typeDescriptions":{"typeIdentifier":"t_stringliteral_4a13fb2485de3ac50aa69e9cf88b3994102e3ec72af73005448c8624cb4f1ed7","typeString":"literal_string \"invalid previous committed block hash\""},"value":"invalid previous committed block hash"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4a13fb2485de3ac50aa69e9cf88b3994102e3ec72af73005448c8624cb4f1ed7","typeString":"literal_string \"invalid previous committed block hash\""}],"id":76419,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"10788:7:159","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":76427,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10788:159:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76428,"nodeType":"ExpressionStatement","src":"10788:159:159"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":76432,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76414,"src":"10990:16:159","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76874_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":76433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11007:16:159","memberName":"predecessorBlock","nodeType":"MemberAccess","referencedDeclaration":76869,"src":"10990:33:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":76430,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77275,"src":"10966:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77275_$","typeString":"type(library Gear)"}},"id":76431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10971:18:159","memberName":"blockIsPredecessor","nodeType":"MemberAccess","referencedDeclaration":77036,"src":"10966:23:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bool_$","typeString":"function (bytes32) view returns (bool)"}},"id":76434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10966:58:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"616c6c6f776564207072656465636573736f7220626c6f636b207761736e277420666f756e64","id":76435,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11026:40:159","typeDescriptions":{"typeIdentifier":"t_stringliteral_b3ebb0be53d5bf46a2d46be11aa5ba444a61071a9171c96feb964b4bc5f6539a","typeString":"literal_string \"allowed predecessor block wasn't found\""},"value":"allowed predecessor block wasn't found"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b3ebb0be53d5bf46a2d46be11aa5ba444a61071a9171c96feb964b4bc5f6539a","typeString":"literal_string \"allowed predecessor block wasn't found\""}],"id":76429,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"10958:7:159","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":76436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10958:109:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76437,"nodeType":"ExpressionStatement","src":"10958:109:159"},{"expression":{"id":76448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":76438,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76411,"src":"11207:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76440,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"11214:20:159","memberName":"latestCommittedBlock","nodeType":"MemberAccess","referencedDeclaration":73616,"src":"11207:27:159","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBlockInfo_$76888_storage","typeString":"struct Gear.CommittedBlockInfo storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":76443,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76414,"src":"11261:16:159","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76874_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":76444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11278:4:159","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":76863,"src":"11261:21:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":76445,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76414,"src":"11284:16:159","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76874_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":76446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11301:9:159","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":76865,"src":"11284:26:159","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"expression":{"id":76441,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77275,"src":"11237:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77275_$","typeString":"type(library Gear)"}},"id":76442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11242:18:159","memberName":"CommittedBlockInfo","nodeType":"MemberAccess","referencedDeclaration":76888,"src":"11237:23:159","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_CommittedBlockInfo_$76888_storage_ptr_$","typeString":"type(struct Gear.CommittedBlockInfo storage pointer)"}},"id":76447,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11237:74:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBlockInfo_$76888_memory_ptr","typeString":"struct Gear.CommittedBlockInfo memory"}},"src":"11207:104:159","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBlockInfo_$76888_storage","typeString":"struct Gear.CommittedBlockInfo storage ref"}},"id":76449,"nodeType":"ExpressionStatement","src":"11207:104:159"},{"assignments":[76451],"declarations":[{"constant":false,"id":76451,"mutability":"mutable","name":"transitionsHashesHash","nameLocation":"11330:21:159","nodeType":"VariableDeclaration","scope":76476,"src":"11322:29:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":76450,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11322:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":76457,"initialValue":{"arguments":[{"id":76453,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76411,"src":"11373:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"expression":{"id":76454,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76414,"src":"11381:16:159","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76874_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":76455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11398:11:159","memberName":"transitions","nodeType":"MemberAccess","referencedDeclaration":76873,"src":"11381:28:159","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$76948_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_array$_t_struct$_StateTransition_$76948_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition calldata[] calldata"}],"id":76452,"name":"_commitTransitions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76562,"src":"11354:18:159","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Storage_$73633_storage_ptr_$_t_array$_t_struct$_StateTransition_$76948_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct IRouter.Storage storage pointer,struct Gear.StateTransition calldata[] calldata) returns (bytes32)"}},"id":76456,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11354:56:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"11322:88:159"},{"eventCall":{"arguments":[{"expression":{"id":76459,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76414,"src":"11441:16:159","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76874_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":76460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11458:4:159","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":76863,"src":"11441:21:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":76458,"name":"BlockCommitted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73638,"src":"11426:14:159","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":76461,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11426:37:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76462,"nodeType":"EmitStatement","src":"11421:42:159"},{"expression":{"arguments":[{"expression":{"id":76465,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76414,"src":"11519:16:159","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76874_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":76466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11536:4:159","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":76863,"src":"11519:21:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":76467,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76414,"src":"11554:16:159","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76874_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":76468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11571:9:159","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":76865,"src":"11554:26:159","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"expression":{"id":76469,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76414,"src":"11594:16:159","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76874_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":76470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11611:22:159","memberName":"previousCommittedBlock","nodeType":"MemberAccess","referencedDeclaration":76867,"src":"11594:39:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":76471,"name":"_blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76414,"src":"11647:16:159","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76874_calldata_ptr","typeString":"struct Gear.BlockCommitment calldata"}},"id":76472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11664:16:159","memberName":"predecessorBlock","nodeType":"MemberAccess","referencedDeclaration":76869,"src":"11647:33:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":76473,"name":"transitionsHashesHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76451,"src":"11694:21:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":76463,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77275,"src":"11481:4:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$77275_$","typeString":"type(library Gear)"}},"id":76464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11486:19:159","memberName":"blockCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":76992,"src":"11481:24:159","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint48_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,uint48,bytes32,bytes32,bytes32) pure returns (bytes32)"}},"id":76474,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11481:244:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":76418,"id":76475,"nodeType":"Return","src":"11474:251:159"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_commitBlock","nameLocation":"10647:12:159","parameters":{"id":76415,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76411,"mutability":"mutable","name":"router","nameLocation":"10676:6:159","nodeType":"VariableDeclaration","scope":76477,"src":"10660:22:159","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":76410,"nodeType":"UserDefinedTypeName","pathNode":{"id":76409,"name":"Storage","nameLocations":["10660:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73633,"src":"10660:7:159"},"referencedDeclaration":73633,"src":"10660:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"},{"constant":false,"id":76414,"mutability":"mutable","name":"_blockCommitment","nameLocation":"10714:16:159","nodeType":"VariableDeclaration","scope":76477,"src":"10684:46:159","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76874_calldata_ptr","typeString":"struct Gear.BlockCommitment"},"typeName":{"id":76413,"nodeType":"UserDefinedTypeName","pathNode":{"id":76412,"name":"Gear.BlockCommitment","nameLocations":["10684:4:159","10689:15:159"],"nodeType":"IdentifierPath","referencedDeclaration":76874,"src":"10684:20:159"},"referencedDeclaration":76874,"src":"10684:20:159","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$76874_storage_ptr","typeString":"struct Gear.BlockCommitment"}},"visibility":"internal"}],"src":"10659:72:159"},"returnParameters":{"id":76418,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76417,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":76477,"src":"10765:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":76416,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10765:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"10764:9:159"},"scope":76724,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":76562,"nodeType":"FunctionDefinition","src":"11738:839:159","nodes":[],"body":{"id":76561,"nodeType":"Block","src":"11882:695:159","nodes":[],"statements":[{"assignments":[76490],"declarations":[{"constant":false,"id":76490,"mutability":"mutable","name":"transitionsHashes","nameLocation":"11905:17:159","nodeType":"VariableDeclaration","scope":76561,"src":"11892:30:159","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":76489,"name":"bytes","nodeType":"ElementaryTypeName","src":"11892:5:159","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":76491,"nodeType":"VariableDeclarationStatement","src":"11892:30:159"},{"body":{"id":76555,"nodeType":"Block","src":"11983:542:159","statements":[{"assignments":[76507],"declarations":[{"constant":false,"id":76507,"mutability":"mutable","name":"transition","nameLocation":"12027:10:159","nodeType":"VariableDeclaration","scope":76555,"src":"11997:40:159","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$76948_calldata_ptr","typeString":"struct Gear.StateTransition"},"typeName":{"id":76506,"nodeType":"UserDefinedTypeName","pathNode":{"id":76505,"name":"Gear.StateTransition","nameLocations":["11997:4:159","12002:15:159"],"nodeType":"IdentifierPath","referencedDeclaration":76948,"src":"11997:20:159"},"referencedDeclaration":76948,"src":"11997:20:159","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$76948_storage_ptr","typeString":"struct Gear.StateTransition"}},"visibility":"internal"}],"id":76511,"initialValue":{"baseExpression":{"id":76508,"name":"_transitions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76484,"src":"12040:12:159","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$76948_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition calldata[] calldata"}},"id":76510,"indexExpression":{"id":76509,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76493,"src":"12053:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12040:15:159","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$76948_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"nodeType":"VariableDeclarationStatement","src":"11997:58:159"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":76520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":76513,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76480,"src":"12095:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76514,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12102:12:159","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":73632,"src":"12095:19:159","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$76926_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":76515,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12115:8:159","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":76921,"src":"12095:28:159","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":76518,"indexExpression":{"expression":{"id":76516,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76507,"src":"12124:10:159","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$76948_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":76517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12135:7:159","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":76933,"src":"12124:18:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12095:48:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":76519,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12147:1:159","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12095:53:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"636f756c646e277420706572666f726d207472616e736974696f6e20666f7220756e6b6e6f776e2070726f6772616d","id":76521,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12150:49:159","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":76512,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"12070:7:159","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":76522,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12070:143:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76523,"nodeType":"ExpressionStatement","src":"12070:143:159"},{"expression":{"arguments":[{"expression":{"id":76530,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76507,"src":"12284:10:159","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$76948_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":76531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12295:7:159","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":76933,"src":"12284:18:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":76532,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76507,"src":"12304:10:159","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$76948_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":76533,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12315:14:159","memberName":"valueToReceive","nodeType":"MemberAccess","referencedDeclaration":76939,"src":"12304:25:159","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"arguments":[{"expression":{"expression":{"id":76525,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76480,"src":"12241:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76526,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12248:13:159","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":73620,"src":"12241:20:159","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$76861_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":76527,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12262:11:159","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":76860,"src":"12241:32:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76524,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73855,"src":"12228:12:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$73855_$","typeString":"type(contract IWrappedVara)"}},"id":76528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12228:46:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$73855","typeString":"contract IWrappedVara"}},"id":76529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12275:8:159","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":43107,"src":"12228:55:159","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":76534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12228:102:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76535,"nodeType":"ExpressionStatement","src":"12228:102:159"},{"assignments":[76537],"declarations":[{"constant":false,"id":76537,"mutability":"mutable","name":"transitionHash","nameLocation":"12353:14:159","nodeType":"VariableDeclaration","scope":76555,"src":"12345:22:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":76536,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12345:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":76545,"initialValue":{"arguments":[{"id":76543,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76507,"src":"12421:10:159","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$76948_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_StateTransition_$76948_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}],"expression":{"arguments":[{"expression":{"id":76539,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76507,"src":"12378:10:159","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$76948_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":76540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12389:7:159","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":76933,"src":"12378:18:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76538,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73559,"src":"12370:7:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$73559_$","typeString":"type(contract IMirror)"}},"id":76541,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12370:27:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$73559","typeString":"contract IMirror"}},"id":76542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12398:22:159","memberName":"performStateTransition","nodeType":"MemberAccess","referencedDeclaration":73558,"src":"12370:50:159","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_StateTransition_$76948_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.StateTransition memory) external returns (bytes32)"}},"id":76544,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12370:62:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"12345:87:159"},{"expression":{"id":76553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":76546,"name":"transitionsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76490,"src":"12447:17:159","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":76550,"name":"transitionsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76490,"src":"12480:17:159","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":76551,"name":"transitionHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76537,"src":"12499:14:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":76548,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12467:5:159","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":76547,"name":"bytes","nodeType":"ElementaryTypeName","src":"12467:5:159","typeDescriptions":{}}},"id":76549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12473:6:159","memberName":"concat","nodeType":"MemberAccess","src":"12467:12:159","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":76552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12467:47:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"12447:67:159","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":76554,"nodeType":"ExpressionStatement","src":"12447:67:159"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76496,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76493,"src":"11953:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":76497,"name":"_transitions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76484,"src":"11957:12:159","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$76948_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition calldata[] calldata"}},"id":76498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11970:6:159","memberName":"length","nodeType":"MemberAccess","src":"11957:19:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11953:23:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76556,"initializationExpression":{"assignments":[76493],"declarations":[{"constant":false,"id":76493,"mutability":"mutable","name":"i","nameLocation":"11946:1:159","nodeType":"VariableDeclaration","scope":76556,"src":"11938:9:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76492,"name":"uint256","nodeType":"ElementaryTypeName","src":"11938:7:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":76495,"initialValue":{"hexValue":"30","id":76494,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11950:1:159","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"11938:13:159"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":76501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"11978:3:159","subExpression":{"id":76500,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76493,"src":"11978:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76502,"nodeType":"ExpressionStatement","src":"11978:3:159"},"nodeType":"ForStatement","src":"11933:592:159"},{"expression":{"arguments":[{"id":76558,"name":"transitionsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76490,"src":"12552:17:159","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":76557,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"12542:9:159","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":76559,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12542:28:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":76488,"id":76560,"nodeType":"Return","src":"12535:35:159"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_commitTransitions","nameLocation":"11747:18:159","parameters":{"id":76485,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76480,"mutability":"mutable","name":"router","nameLocation":"11782:6:159","nodeType":"VariableDeclaration","scope":76562,"src":"11766:22:159","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":76479,"nodeType":"UserDefinedTypeName","pathNode":{"id":76478,"name":"Storage","nameLocations":["11766:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73633,"src":"11766:7:159"},"referencedDeclaration":73633,"src":"11766:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"},{"constant":false,"id":76484,"mutability":"mutable","name":"_transitions","nameLocation":"11822:12:159","nodeType":"VariableDeclaration","scope":76562,"src":"11790:44:159","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$76948_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition[]"},"typeName":{"baseType":{"id":76482,"nodeType":"UserDefinedTypeName","pathNode":{"id":76481,"name":"Gear.StateTransition","nameLocations":["11790:4:159","11795:15:159"],"nodeType":"IdentifierPath","referencedDeclaration":76948,"src":"11790:20:159"},"referencedDeclaration":76948,"src":"11790:20:159","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$76948_storage_ptr","typeString":"struct Gear.StateTransition"}},"id":76483,"nodeType":"ArrayTypeName","src":"11790:22:159","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$76948_storage_$dyn_storage_ptr","typeString":"struct Gear.StateTransition[]"}},"visibility":"internal"}],"src":"11765:70:159"},"returnParameters":{"id":76488,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76487,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":76562,"src":"11869:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":76486,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11869:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"11868:9:159"},"scope":76724,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":76615,"nodeType":"FunctionDefinition","src":"12583:406:159","nodes":[],"body":{"id":76614,"nodeType":"Block","src":"12669:320:159","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"expression":{"id":76572,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76565,"src":"12687:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76573,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12694:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73624,"src":"12687:25:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$76958_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":76574,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12713:10:159","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":76953,"src":"12687:36:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":76575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12724:6:159","memberName":"length","nodeType":"MemberAccess","src":"12687:43:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":76576,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12734:1:159","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12687:48:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"72656d6f76652070726576696f75732076616c696461746f7273206669727374","id":76578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12737:34:159","typeDescriptions":{"typeIdentifier":"t_stringliteral_9f6a03e209138d575bb162b4e280f18514af00259c854f4d737ad74345b1a440","typeString":"literal_string \"remove previous validators first\""},"value":"remove previous validators first"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9f6a03e209138d575bb162b4e280f18514af00259c854f4d737ad74345b1a440","typeString":"literal_string \"remove previous validators first\""}],"id":76571,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"12679:7:159","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":76579,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12679:93:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76580,"nodeType":"ExpressionStatement","src":"12679:93:159"},{"body":{"id":76604,"nodeType":"Block","src":"12832:90:159","statements":[{"expression":{"id":76602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"expression":{"id":76592,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76565,"src":"12846:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76598,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12853:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73624,"src":"12846:25:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$76958_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":76599,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12872:16:159","memberName":"validatorsKeyMap","nodeType":"MemberAccess","referencedDeclaration":76957,"src":"12846:42:159","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":76600,"indexExpression":{"baseExpression":{"id":76595,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76568,"src":"12889:11:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":76597,"indexExpression":{"id":76596,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76582,"src":"12901:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12889:14:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12846:58:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":76601,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12907:4:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"12846:65:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76603,"nodeType":"ExpressionStatement","src":"12846:65:159"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76585,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76582,"src":"12803:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":76586,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76568,"src":"12807:11:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":76587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12819:6:159","memberName":"length","nodeType":"MemberAccess","src":"12807:18:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12803:22:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76605,"initializationExpression":{"assignments":[76582],"declarations":[{"constant":false,"id":76582,"mutability":"mutable","name":"i","nameLocation":"12796:1:159","nodeType":"VariableDeclaration","scope":76605,"src":"12788:9:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76581,"name":"uint256","nodeType":"ElementaryTypeName","src":"12788:7:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":76584,"initialValue":{"hexValue":"30","id":76583,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12800:1:159","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"12788:13:159"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":76590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"12827:3:159","subExpression":{"id":76589,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76582,"src":"12827:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76591,"nodeType":"ExpressionStatement","src":"12827:3:159"},"nodeType":"ForStatement","src":"12783:139:159"},{"expression":{"id":76612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":76606,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76565,"src":"12932:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76609,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12939:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73624,"src":"12932:25:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$76958_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":76610,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"12958:10:159","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":76953,"src":"12932:36:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":76611,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76568,"src":"12971:11:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"12932:50:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":76613,"nodeType":"ExpressionStatement","src":"12932:50:159"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_setValidators","nameLocation":"12592:14:159","parameters":{"id":76569,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76565,"mutability":"mutable","name":"router","nameLocation":"12623:6:159","nodeType":"VariableDeclaration","scope":76615,"src":"12607:22:159","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":76564,"nodeType":"UserDefinedTypeName","pathNode":{"id":76563,"name":"Storage","nameLocations":["12607:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73633,"src":"12607:7:159"},"referencedDeclaration":73633,"src":"12607:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"},{"constant":false,"id":76568,"mutability":"mutable","name":"_validators","nameLocation":"12648:11:159","nodeType":"VariableDeclaration","scope":76615,"src":"12631:28:159","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":76566,"name":"address","nodeType":"ElementaryTypeName","src":"12631:7:159","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":76567,"nodeType":"ArrayTypeName","src":"12631:9:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"12606:54:159"},"returnParameters":{"id":76570,"nodeType":"ParameterList","parameters":[],"src":"12669:0:159"},"scope":76724,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":76653,"nodeType":"FunctionDefinition","src":"12995:318:159","nodes":[],"body":{"id":76652,"nodeType":"Block","src":"13054:259:159","nodes":[],"statements":[{"body":{"id":76645,"nodeType":"Block","src":"13138:115:159","statements":[{"expression":{"id":76643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"13152:90:159","subExpression":{"baseExpression":{"expression":{"expression":{"id":76634,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76618,"src":"13159:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76635,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13166:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73624,"src":"13159:25:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$76958_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":76636,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13185:16:159","memberName":"validatorsKeyMap","nodeType":"MemberAccess","referencedDeclaration":76957,"src":"13159:42:159","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":76642,"indexExpression":{"baseExpression":{"expression":{"expression":{"id":76637,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76618,"src":"13202:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76638,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13209:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73624,"src":"13202:25:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$76958_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":76639,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13228:10:159","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":76953,"src":"13202:36:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":76641,"indexExpression":{"id":76640,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76622,"src":"13239:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13202:39:159","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13159:83:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76644,"nodeType":"ExpressionStatement","src":"13152:90:159"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76625,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76622,"src":"13084:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"expression":{"id":76626,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76618,"src":"13088:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76627,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13095:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73624,"src":"13088:25:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$76958_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":76628,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13114:10:159","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":76953,"src":"13088:36:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":76629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13125:6:159","memberName":"length","nodeType":"MemberAccess","src":"13088:43:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13084:47:159","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76646,"initializationExpression":{"assignments":[76622],"declarations":[{"constant":false,"id":76622,"mutability":"mutable","name":"i","nameLocation":"13077:1:159","nodeType":"VariableDeclaration","scope":76646,"src":"13069:9:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76621,"name":"uint256","nodeType":"ElementaryTypeName","src":"13069:7:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":76624,"initialValue":{"hexValue":"30","id":76623,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13081:1:159","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13069:13:159"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":76632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"13133:3:159","subExpression":{"id":76631,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76622,"src":"13133:1:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76633,"nodeType":"ExpressionStatement","src":"13133:3:159"},"nodeType":"ForStatement","src":"13064:189:159"},{"expression":{"id":76650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"13263:43:159","subExpression":{"expression":{"expression":{"id":76647,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76618,"src":"13270:6:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":76648,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13277:18:159","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":73624,"src":"13270:25:159","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$76958_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":76649,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"13296:10:159","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":76953,"src":"13270:36:159","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76651,"nodeType":"ExpressionStatement","src":"13263:43:159"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_removeValidators","nameLocation":"13004:17:159","parameters":{"id":76619,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76618,"mutability":"mutable","name":"router","nameLocation":"13038:6:159","nodeType":"VariableDeclaration","scope":76653,"src":"13022:22:159","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":76617,"nodeType":"UserDefinedTypeName","pathNode":{"id":76616,"name":"Storage","nameLocations":["13022:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73633,"src":"13022:7:159"},"referencedDeclaration":73633,"src":"13022:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"src":"13021:24:159"},"returnParameters":{"id":76620,"nodeType":"ParameterList","parameters":[],"src":"13054:0:159"},"scope":76724,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":76666,"nodeType":"FunctionDefinition","src":"13319:192:159","nodes":[],"body":{"id":76665,"nodeType":"Block","src":"13384:127:159","nodes":[],"statements":[{"assignments":[76660],"declarations":[{"constant":false,"id":76660,"mutability":"mutable","name":"slot","nameLocation":"13402:4:159","nodeType":"VariableDeclaration","scope":76665,"src":"13394:12:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":76659,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13394:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":76663,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":76661,"name":"_getStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76678,"src":"13409:15:159","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":76662,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13409:17:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"13394:32:159"},{"AST":{"nativeSrc":"13462:43:159","nodeType":"YulBlock","src":"13462:43:159","statements":[{"nativeSrc":"13476:19:159","nodeType":"YulAssignment","src":"13476:19:159","value":{"name":"slot","nativeSrc":"13491:4:159","nodeType":"YulIdentifier","src":"13491:4:159"},"variableNames":[{"name":"router.slot","nativeSrc":"13476:11:159","nodeType":"YulIdentifier","src":"13476:11:159"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":76657,"isOffset":false,"isSlot":true,"src":"13476:11:159","suffix":"slot","valueSize":1},{"declaration":76660,"isOffset":false,"isSlot":false,"src":"13491:4:159","valueSize":1}],"flags":["memory-safe"],"id":76664,"nodeType":"InlineAssembly","src":"13437:68:159"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_router","nameLocation":"13328:7:159","parameters":{"id":76654,"nodeType":"ParameterList","parameters":[],"src":"13335:2:159"},"returnParameters":{"id":76658,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76657,"mutability":"mutable","name":"router","nameLocation":"13376:6:159","nodeType":"VariableDeclaration","scope":76666,"src":"13360:22:159","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":76656,"nodeType":"UserDefinedTypeName","pathNode":{"id":76655,"name":"Storage","nameLocations":["13360:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73633,"src":"13360:7:159"},"referencedDeclaration":73633,"src":"13360:7:159","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73633_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"src":"13359:24:159"},"scope":76724,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":76678,"nodeType":"FunctionDefinition","src":"13517:128:159","nodes":[],"body":{"id":76677,"nodeType":"Block","src":"13575:70:159","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":76673,"name":"SLOT_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75398,"src":"13619:12:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":76671,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44581,"src":"13592:11:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$44581_$","typeString":"type(library StorageSlot)"}},"id":76672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13604:14:159","memberName":"getBytes32Slot","nodeType":"MemberAccess","referencedDeclaration":44319,"src":"13592:26:159","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Bytes32Slot_$44274_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.Bytes32Slot storage pointer)"}},"id":76674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13592:40:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$44274_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot storage pointer"}},"id":76675,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13633:5:159","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":44273,"src":"13592:46:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":76670,"id":76676,"nodeType":"Return","src":"13585:53:159"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_getStorageSlot","nameLocation":"13526:15:159","parameters":{"id":76667,"nodeType":"ParameterList","parameters":[],"src":"13541:2:159"},"returnParameters":{"id":76670,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76669,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":76678,"src":"13566:7:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":76668,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13566:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"13565:9:159"},"scope":76724,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":76723,"nodeType":"FunctionDefinition","src":"13651:252:159","nodes":[],"body":{"id":76722,"nodeType":"Block","src":"13719:184:159","nodes":[],"statements":[{"assignments":[76686],"declarations":[{"constant":false,"id":76686,"mutability":"mutable","name":"slot","nameLocation":"13737:4:159","nodeType":"VariableDeclaration","scope":76722,"src":"13729:12:159","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":76685,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13729:7:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":76712,"initialValue":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":76711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"arguments":[{"id":76695,"name":"namespace","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76680,"src":"13789:9:159","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":76694,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13783:5:159","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":76693,"name":"bytes","nodeType":"ElementaryTypeName","src":"13783:5:159","typeDescriptions":{}}},"id":76696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13783:16:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":76692,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"13773:9:159","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":76697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13773:27:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":76691,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13765:7:159","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":76690,"name":"uint256","nodeType":"ElementaryTypeName","src":"13765:7:159","typeDescriptions":{}}},"id":76698,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13765:36:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":76699,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13804:1:159","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13765:40:159","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":76688,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"13754:3:159","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":76689,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13758:6:159","memberName":"encode","nodeType":"MemberAccess","src":"13754:10:159","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":76701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13754:52:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":76687,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"13744:9:159","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":76702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13744:63:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":76710,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"13810:23:159","subExpression":{"arguments":[{"arguments":[{"hexValue":"30786666","id":76707,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13827:4:159","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":76706,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13819:7:159","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":76705,"name":"uint256","nodeType":"ElementaryTypeName","src":"13819:7:159","typeDescriptions":{}}},"id":76708,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13819:13:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":76704,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13811:7:159","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":76703,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13811:7:159","typeDescriptions":{}}},"id":76709,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13811:22:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"13744:89:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"13729:104:159"},{"expression":{"id":76720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":76716,"name":"SLOT_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75398,"src":"13870:12:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":76713,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44581,"src":"13843:11:159","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$44581_$","typeString":"type(library StorageSlot)"}},"id":76715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13855:14:159","memberName":"getBytes32Slot","nodeType":"MemberAccess","referencedDeclaration":44319,"src":"13843:26:159","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Bytes32Slot_$44274_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.Bytes32Slot storage pointer)"}},"id":76717,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13843:40:159","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$44274_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot storage pointer"}},"id":76718,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"13884:5:159","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":44273,"src":"13843:46:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":76719,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76686,"src":"13892:4:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"13843:53:159","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":76721,"nodeType":"ExpressionStatement","src":"13843:53:159"}]},"implemented":true,"kind":"function","modifiers":[{"id":76683,"kind":"modifierInvocation","modifierName":{"id":76682,"name":"onlyOwner","nameLocations":["13709:9:159"],"nodeType":"IdentifierPath","referencedDeclaration":39282,"src":"13709:9:159"},"nodeType":"ModifierInvocation","src":"13709:9:159"}],"name":"_setStorageSlot","nameLocation":"13660:15:159","parameters":{"id":76681,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76680,"mutability":"mutable","name":"namespace","nameLocation":"13690:9:159","nodeType":"VariableDeclaration","scope":76723,"src":"13676:23:159","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":76679,"name":"string","nodeType":"ElementaryTypeName","src":"13676:6:159","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"13675:25:159"},"returnParameters":{"id":76684,"nodeType":"ParameterList","parameters":[],"src":"13719:0:159"},"scope":76724,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":75390,"name":"IRouter","nameLocations":["651:7:159"],"nodeType":"IdentifierPath","referencedDeclaration":73844,"src":"651:7:159"},"id":75391,"nodeType":"InheritanceSpecifier","src":"651:7:159"},{"baseName":{"id":75392,"name":"OwnableUpgradeable","nameLocations":["660:18:159"],"nodeType":"IdentifierPath","referencedDeclaration":39387,"src":"660:18:159"},"id":75393,"nodeType":"InheritanceSpecifier","src":"660:18:159"},{"baseName":{"id":75394,"name":"ReentrancyGuardTransient","nameLocations":["680:24:159"],"nodeType":"IdentifierPath","referencedDeclaration":44045,"src":"680:24:159"},"id":75395,"nodeType":"InheritanceSpecifier","src":"680:24:159"}],"canonicalName":"Router","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[76724,44045,39387,40535,39641,73844],"name":"Router","nameLocation":"641:6:159","scope":76725,"usedErrors":[39223,39228,39404,39407,43912,43918,43989,44912,44917,44922],"usedEvents":[39234,39412,73638,73645,73652,73659,73666,73669,73672]}],"license":"UNLICENSED"},"id":159} \ No newline at end of file diff --git a/ethexe/ethereum/TransparentUpgradeableProxy.json b/ethexe/ethereum/TransparentUpgradeableProxy.json index 9c4b49fde5a..18e9f382330 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":"0x60a0604052610a99803803806100148161026b565b92833981016060828203126102675761002c82610290565b61003860208401610290565b604084015190936001600160401b03821161026757019180601f8401121561026757825161006d610068826102a4565b61026b565b9381855260208501926020838301011161026757815f926020809301855e85010152813b15610246577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0384169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a282511561022e575f809161012d945190845af43d15610226573d9161011e610068846102a4565b9283523d5f602085013e6102bf565b505b604051906104428083016001600160401b0381118482101761021257602092849261063784396001600160a01b031681520301905ff080156102075760018060a01b0316806080525f80516020610a79833981519152547f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6040805160018060a01b0384168152846020820152a181156101f4576001600160a01b031916175f80516020610a7983398151915255604051610319908161031e82396080518160070152f35b633173bdd160e11b5f525f60045260245ffd5b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b6060916102bf565b505050341561012f5763b398979f60e01b5f5260045ffd5b50634c9c8ce360e01b5f9081526001600160a01b0391909116600452602490fd5b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761021257604052565b51906001600160a01b038216820361026757565b6001600160401b03811161021257601f01601f191660200190565b906102e357508051156102d457805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580610314575b6102f4575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156102ec56fe6080604052337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031603610066575f356001600160e01b03191663278f794360e11b1461005c576334ad5dbb60e21b5f5260045ffd5b61006461010a565b005b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e156100ab573d5ff35b3d5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff8111838210176100e957604052565b6100af565b67ffffffffffffffff81116100e957601f01601f191660200190565b36600411610193576040366003190112610193576004356001600160a01b03811690819003610193576024359067ffffffffffffffff8211610193573660238301121561019357816004013590610168610163836100ee565b6100c3565b918083523660248286010111610193576020815f92602461019197018387013784010152610197565b565b5f80fd5b90813b1561022b577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0384169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2805115610213576102109161024c565b50565b50503461021c57565b63b398979f60e01b5f5260045ffd5b50634c9c8ce360e01b5f9081526001600160a01b0391909116600452602490fd5b5f8061027e93602081519101845af43d15610281573d9161026f610163846100ee565b9283523d5f602085013e610285565b90565b6060915b906102a9575080511561029a57805190602001fd5b63d6bda27560e01b5f5260045ffd5b815115806102da575b6102ba575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156102b256fea264697066735822122081381172d68bc45983a1c9fb05d5600627b8938eb5cd3b671f9f784b16dbf57064736f6c634300081a003360803460b857601f61044238819003918201601f19168301916001600160401b0383118484101760bc5780849260209460405283398101031260b857516001600160a01b0381169081900360b857801560a5575f80546001600160a01b031981168317825560405192916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a361037190816100d18239f35b631e4fbdf760e01b5f525f60045260245ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f803560e01c8063715018a6146102785780638da5cb5b146102515780639623609d1461012e578063ad3cb1cc146100e15763f2fde38b14610051575f80fd5b346100de5760203660031901126100de576004356001600160a01b038116908190036100da5761007f610315565b80156100c65781546001600160a01b03198116821783556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b631e4fbdf760e01b82526004829052602482fd5b5080fd5b80fd5b50346100de57806003193601126100de575061012a6040516101046040826102cf565b60058152640352e302e360dc1b60208201526040519182916020835260208301906102f1565b0390f35b506060366003190112610239576004356001600160a01b03811690819003610239576024356001600160a01b038116908190036102395760443567ffffffffffffffff8111610239573660238201121561023957806004013567ffffffffffffffff811161023d57604051916101ae601f8301601f1916602001846102cf565b818352366024838301011161023957815f9260246020930183860137830101526101d6610315565b823b156102395761020c925f9260405180958194829363278f794360e11b845260048401526040602484015260448301906102f1565b039134905af1801561022e57610220575080f35b61022c91505f906102cf565b005b6040513d5f823e3d90fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b34610239575f366003190112610239575f546040516001600160a01b039091168152602090f35b34610239575f36600319011261023957610290610315565b5f80546001600160a01b0319811682556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b90601f8019910116810190811067ffffffffffffffff82111761023d57604052565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b5f546001600160a01b0316330361032857565b63118cdaa760e01b5f523360045260245ffdfea2646970667358221220ee89fe47c8fabf223bbfbb042ed5177bc9b5c55ede5115bf0576dc2d535100ae64736f6c634300081a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103","sourceMap":"4239:2231:52:-:0;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;4239:2231:52;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;4239:2231:52;;;;;;;;;;;1758:29:46;;:34;1754:119;;821:66;4239:2231:52;;-1:-1:-1;;;;;;4239:2231:52;-1:-1:-1;;;;;4239:2231:52;;;;;;;;2417:36:46;-1:-1:-1;;2417:36:46;4239:2231:52;;2468:15:46;:11;;-1:-1:-1;4049:25:58;;4091:55;4049:25;;;;;;4239:2231:52;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;4239:2231:52;;;;4091:55:58;:::i;:::-;;2464:148:46;4239:2231:52;;;5215:28;;;;-1:-1:-1;;;;;5215:28:52;;;;;;;;4239:2231;5215:28;;;;;;-1:-1:-1;;;;;4239:2231:52;;;5215:28;;;-1:-1:-1;5215:28:52;;;;;4239:2231;;;;;;5198:46;;;-1:-1:-1;;;;;;;;;;;2878:66:46;3900:43;4239:2231:52;;;;;;;;;;;;;;;;;3900:43:46;3559:22;;3555:91;;-1:-1:-1;;;;;;4239:2231:52;;-1:-1:-1;;;;;;;;;;;4239:2231:52;;;;;;;;;5198:46;4239:2231;;;;;;3555:91:46;3604:31;;;-1:-1:-1;3604:31:46;-1:-1:-1;3604:31:46;4239:2231:52;;-1:-1:-1;3604:31:46;5215:28:52;4239:2231;;;-1:-1:-1;4239:2231:52;;;;;5215:28;4239:2231;;;-1:-1:-1;4239:2231:52;;;;;-1:-1:-1;4239:2231:52;;;;4091:55:58;:::i;2464:148:46:-;6173:9;;;;6169:70;2464:148;6169:70;6209:19;;;-1:-1:-1;6209:19:46;;-1:-1:-1;6209:19:46;1754:119;-1:-1:-1;;;;;1815:47:46;;;-1:-1:-1;;;;;4239:2231:52;;;;1815:47:46;4239:2231:52;;;1815:47:46;4239:2231:52;-1:-1:-1;4239:2231:52;;;;;;;;;-1:-1:-1;;4239:2231:52;;;-1:-1:-1;;;;;4239:2231:52;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;4239:2231:52;;;;;;:::o;:::-;-1:-1:-1;;;;;4239:2231:52;;;;;;-1:-1:-1;;4239:2231:52;;;;:::o;4421:582:58:-;;4593:8;;-1:-1:-1;4239:2231:52;;5674:21:58;:17;;5846:142;;;;;;5670:385;6025:19;;;5694:1;6025:19;;5694:1;6025:19;4589:408;4239:2231:52;;4841:22:58;:49;;;4589:408;4837:119;;4969:17;;:::o;4837:119::-;-1:-1:-1;;;4862:1:58;4917:24;;;-1:-1:-1;;;;;4239:2231:52;;;;4917:24:58;4239:2231:52;;;4917:24:58;4841:49;4867:18;;;:23;4841:49;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031603610066575f356001600160e01b03191663278f794360e11b1461005c576334ad5dbb60e21b5f5260045ffd5b61006461010a565b005b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e156100ab573d5ff35b3d5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff8111838210176100e957604052565b6100af565b67ffffffffffffffff81116100e957601f01601f191660200190565b36600411610193576040366003190112610193576004356001600160a01b03811690819003610193576024359067ffffffffffffffff8211610193573660238301121561019357816004013590610168610163836100ee565b6100c3565b918083523660248286010111610193576020815f92602461019197018387013784010152610197565b565b5f80fd5b90813b1561022b577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0384169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2805115610213576102109161024c565b50565b50503461021c57565b63b398979f60e01b5f5260045ffd5b50634c9c8ce360e01b5f9081526001600160a01b0391909116600452602490fd5b5f8061027e93602081519101845af43d15610281573d9161026f610163846100ee565b9283523d5f602085013e610285565b90565b6060915b906102a9575080511561029a57805190602001fd5b63d6bda27560e01b5f5260045ffd5b815115806102da575b6102ba575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156102b256fea264697066735822122081381172d68bc45983a1c9fb05d5600627b8938eb5cd3b671f9f784b16dbf57064736f6c634300081a0033","sourceMap":"4239:2231:52:-:0;;;5741:10;5525:6;-1:-1:-1;;;;;4239:2231:52;5741:27;4239:2231;;5788:7;;-1:-1:-1;;;;;;5788:7:52;-1:-1:-1;;;5788:65:52;5799:54;;5880:24;;;5788:7;5880:24;;5788:7;5880:24;5784:201;;;:::i;:::-;4239:2231;5737:306;821:66:46;;-1:-1:-1;;;;;;;;;4239:2231:52;1019:819:47;-1:-1:-1;;1019:819:47;;;;;;;-1:-1:-1;1019:819:47;;;;;;-1:-1:-1;1019:819:47;;;-1:-1:-1;1019:819:47;4239:2231:52;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4239:2231:52;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;-1:-1:-1;;4239:2231:52;;;;:::o;6251:217::-;6366:8;6375:1;4239:2231;;;;6366:8;-1:-1:-1;;4239:2231:52;;;;6375:1;4239:2231;-1:-1:-1;;;;;4239:2231:52;;;;;;;;;;;;;;;;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:46;;1758:29;;:34;1754:119;;821:66;4239:2231:52;;-1:-1:-1;;;;;;4239:2231:52;-1:-1:-1;;;;;4239:2231:52;;;;;;;;2417:36:46;-1:-1:-1;;2417:36:46;4239:2231:52;;2468:15:46;: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:46;1815:47;;;-1:-1:-1;;;;;4239:2231:52;;;;1815:47:46;4239:2231:52;;;1815:47:46;3900:253:58;4049:25;3900:253;4091:55;3900:253;4049:25;;;;;;;;4239:2231:52;;;;;;;;;;:::i;:::-;;;;;4049:25:58;;4239:2231:52;;;4091:55:58;:::i;:::-;3900:253;:::o;4239:2231:52:-;;;4421:582:58;;4593:8;;-1:-1:-1;4239:2231:52;;5674:21:58;:17;;5846:142;;;;;;5670:385;6025:19;;;5694:1;6025:19;;5694:1;6025:19;4589:408;4239:2231:52;;4841:22:58;:49;;;4589:408;4837:119;;4969:17;;:::o;4837:119::-;-1:-1:-1;;;4862:1:58;4917:24;;;-1:-1:-1;;;;;4239:2231:52;;;;4917:24:58;4239:2231:52;;;4917:24:58;4841:49;4867:18;;;:23;4841:49;","linkReferences":{},"immutableReferences":{"42438":[{"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-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/\",\":symbiotic-core/=lib/symbiotic-core/\"],\"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-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/","symbiotic-core/=lib/symbiotic-core/"],"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":42548,"exportedSymbols":{"ERC1967Proxy":[41878],"ERC1967Utils":[42172],"IERC1967":[41511],"ITransparentUpgradeableProxy":[42433],"ProxyAdmin":[42412],"TransparentUpgradeableProxy":[42547]},"nodeType":"SourceUnit","src":"133:6338:52","nodes":[{"id":42414,"nodeType":"PragmaDirective","src":"133:24:52","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":42416,"nodeType":"ImportDirective","src":"159:57:52","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol","file":"../ERC1967/ERC1967Utils.sol","nameLocation":"-1:-1:-1","scope":42548,"sourceUnit":42173,"symbolAliases":[{"foreign":{"id":42415,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42172,"src":"167:12:52","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":42418,"nodeType":"ImportDirective","src":"217:57:52","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol","file":"../ERC1967/ERC1967Proxy.sol","nameLocation":"-1:-1:-1","scope":42548,"sourceUnit":41879,"symbolAliases":[{"foreign":{"id":42417,"name":"ERC1967Proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41878,"src":"225:12:52","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":42420,"nodeType":"ImportDirective","src":"275:55:52","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol","file":"../../interfaces/IERC1967.sol","nameLocation":"-1:-1:-1","scope":42548,"sourceUnit":41512,"symbolAliases":[{"foreign":{"id":42419,"name":"IERC1967","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41511,"src":"283:8:52","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":42422,"nodeType":"ImportDirective","src":"331:44:52","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol","file":"./ProxyAdmin.sol","nameLocation":"-1:-1:-1","scope":42548,"sourceUnit":42413,"symbolAliases":[{"foreign":{"id":42421,"name":"ProxyAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42412,"src":"339:10:52","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":42433,"nodeType":"ContractDefinition","src":"823:127:52","nodes":[{"id":42432,"nodeType":"FunctionDefinition","src":"880:68:52","nodes":[],"functionSelector":"4f1ef286","implemented":false,"kind":"function","modifiers":[],"name":"upgradeToAndCall","nameLocation":"889:16:52","parameters":{"id":42430,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42427,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42432,"src":"906:7:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42426,"name":"address","nodeType":"ElementaryTypeName","src":"906:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":42429,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42432,"src":"915:14:52","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":42428,"name":"bytes","nodeType":"ElementaryTypeName","src":"915:5:52","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"905:25:52"},"returnParameters":{"id":42431,"nodeType":"ParameterList","parameters":[],"src":"947:0:52"},"scope":42433,"stateMutability":"payable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":42424,"name":"IERC1967","nameLocations":["865:8:52"],"nodeType":"IdentifierPath","referencedDeclaration":41511,"src":"865:8:52"},"id":42425,"nodeType":"InheritanceSpecifier","src":"865:8:52"}],"canonicalName":"ITransparentUpgradeableProxy","contractDependencies":[],"contractKind":"interface","documentation":{"id":42423,"nodeType":"StructuredDocumentation","src":"377:445:52","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":[42433,41511],"name":"ITransparentUpgradeableProxy","nameLocation":"833:28:52","scope":42548,"usedErrors":[],"usedEvents":[41498,41505,41510]},{"id":42547,"nodeType":"ContractDefinition","src":"4239:2231:52","nodes":[{"id":42438,"nodeType":"VariableDeclaration","src":"4633:32:52","nodes":[],"constant":false,"mutability":"immutable","name":"_admin","nameLocation":"4659:6:52","scope":42547,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42437,"name":"address","nodeType":"ElementaryTypeName","src":"4633:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"id":42441,"nodeType":"ErrorDefinition","src":"4779:31:52","nodes":[],"documentation":{"id":42439,"nodeType":"StructuredDocumentation","src":"4672:102:52","text":" @dev The proxy caller is the current admin, and can't fallback to the proxy target."},"errorSelector":"d2b576ec","name":"ProxyDeniedAdminAccess","nameLocation":"4785:22:52","parameters":{"id":42440,"nodeType":"ParameterList","parameters":[],"src":"4807:2:52"}},{"id":42474,"nodeType":"FunctionDefinition","src":"5082:296:52","nodes":[],"body":{"id":42473,"nodeType":"Block","src":"5188:190:52","nodes":[],"statements":[{"expression":{"id":42464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":42455,"name":"_admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42438,"src":"5198:6:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":42461,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42446,"src":"5230:12:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":42460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"5215:14:52","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_address_$returns$_t_contract$_ProxyAdmin_$42412_$","typeString":"function (address) returns (contract ProxyAdmin)"},"typeName":{"id":42459,"nodeType":"UserDefinedTypeName","pathNode":{"id":42458,"name":"ProxyAdmin","nameLocations":["5219:10:52"],"nodeType":"IdentifierPath","referencedDeclaration":42412,"src":"5219:10:52"},"referencedDeclaration":42412,"src":"5219:10:52","typeDescriptions":{"typeIdentifier":"t_contract$_ProxyAdmin_$42412","typeString":"contract ProxyAdmin"}}},"id":42462,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5215:28:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ProxyAdmin_$42412","typeString":"contract ProxyAdmin"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ProxyAdmin_$42412","typeString":"contract ProxyAdmin"}],"id":42457,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5207:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":42456,"name":"address","nodeType":"ElementaryTypeName","src":"5207:7:52","typeDescriptions":{}}},"id":42463,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5207:37:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5198:46:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":42465,"nodeType":"ExpressionStatement","src":"5198:46:52"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":42469,"name":"_proxyAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42483,"src":"5357:11:52","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":42470,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5357:13:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":42466,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42172,"src":"5332:12:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$42172_$","typeString":"type(library ERC1967Utils)"}},"id":42468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5345:11:52","memberName":"changeAdmin","nodeType":"MemberAccess","referencedDeclaration":42054,"src":"5332:24:52","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":42471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5332:39:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42472,"nodeType":"ExpressionStatement","src":"5332:39:52"}]},"documentation":{"id":42442,"nodeType":"StructuredDocumentation","src":"4816:261:52","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":42451,"name":"_logic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42444,"src":"5173:6:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":42452,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42448,"src":"5181:5:52","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":42453,"kind":"baseConstructorSpecifier","modifierName":{"id":42450,"name":"ERC1967Proxy","nameLocations":["5160:12:52"],"nodeType":"IdentifierPath","referencedDeclaration":41878,"src":"5160:12:52"},"nodeType":"ModifierInvocation","src":"5160:27:52"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":42449,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42444,"mutability":"mutable","name":"_logic","nameLocation":"5102:6:52","nodeType":"VariableDeclaration","scope":42474,"src":"5094:14:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42443,"name":"address","nodeType":"ElementaryTypeName","src":"5094:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":42446,"mutability":"mutable","name":"initialOwner","nameLocation":"5118:12:52","nodeType":"VariableDeclaration","scope":42474,"src":"5110:20:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42445,"name":"address","nodeType":"ElementaryTypeName","src":"5110:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":42448,"mutability":"mutable","name":"_data","nameLocation":"5145:5:52","nodeType":"VariableDeclaration","scope":42474,"src":"5132:18:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":42447,"name":"bytes","nodeType":"ElementaryTypeName","src":"5132:5:52","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5093:58:52"},"returnParameters":{"id":42454,"nodeType":"ParameterList","parameters":[],"src":"5188:0:52"},"scope":42547,"stateMutability":"payable","virtual":false,"visibility":"public"},{"id":42483,"nodeType":"FunctionDefinition","src":"5445:93:52","nodes":[],"body":{"id":42482,"nodeType":"Block","src":"5508:30:52","nodes":[],"statements":[{"expression":{"id":42480,"name":"_admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42438,"src":"5525:6:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":42479,"id":42481,"nodeType":"Return","src":"5518:13:52"}]},"documentation":{"id":42475,"nodeType":"StructuredDocumentation","src":"5384:56:52","text":" @dev Returns the admin of this proxy."},"implemented":true,"kind":"function","modifiers":[],"name":"_proxyAdmin","nameLocation":"5454:11:52","parameters":{"id":42476,"nodeType":"ParameterList","parameters":[],"src":"5465:2:52"},"returnParameters":{"id":42479,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42478,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42483,"src":"5499:7:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42477,"name":"address","nodeType":"ElementaryTypeName","src":"5499:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5498:9:52"},"scope":42547,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":42517,"nodeType":"FunctionDefinition","src":"5680:369:52","nodes":[],"body":{"id":42516,"nodeType":"Block","src":"5727:322:52","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":42492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":42488,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5741:3:52","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":42489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5745:6:52","memberName":"sender","nodeType":"MemberAccess","src":"5741:10:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":42490,"name":"_proxyAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42483,"src":"5755:11:52","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":42491,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5755:13:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5741:27:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":42514,"nodeType":"Block","src":"6001:42:52","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":42509,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"6015:5:52","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_TransparentUpgradeableProxy_$42547_$","typeString":"type(contract super TransparentUpgradeableProxy)"}},"id":42511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6021:9:52","memberName":"_fallback","nodeType":"MemberAccess","referencedDeclaration":42199,"src":"6015:15:52","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":42512,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6015:17:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42513,"nodeType":"ExpressionStatement","src":"6015:17:52"}]},"id":42515,"nodeType":"IfStatement","src":"5737:306:52","trueBody":{"id":42508,"nodeType":"Block","src":"5770:225:52","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":42498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":42493,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5788:3:52","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":42494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5792:3:52","memberName":"sig","nodeType":"MemberAccess","src":"5788:7:52","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":42495,"name":"ITransparentUpgradeableProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42433,"src":"5799:28:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ITransparentUpgradeableProxy_$42433_$","typeString":"type(contract ITransparentUpgradeableProxy)"}},"id":42496,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5828:16:52","memberName":"upgradeToAndCall","nodeType":"MemberAccess","referencedDeclaration":42432,"src":"5799:45:52","typeDescriptions":{"typeIdentifier":"t_function_declaration_payable$_t_address_$_t_bytes_calldata_ptr_$returns$__$","typeString":"function ITransparentUpgradeableProxy.upgradeToAndCall(address,bytes calldata) payable"}},"id":42497,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5845:8:52","memberName":"selector","nodeType":"MemberAccess","src":"5799:54:52","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"5788:65:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":42506,"nodeType":"Block","src":"5925:60:52","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":42503,"name":"_dispatchUpgradeToAndCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42546,"src":"5943:25:52","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":42504,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5943:27:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42505,"nodeType":"ExpressionStatement","src":"5943:27:52"}]},"id":42507,"nodeType":"IfStatement","src":"5784:201:52","trueBody":{"id":42502,"nodeType":"Block","src":"5855:64:52","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":42499,"name":"ProxyDeniedAdminAccess","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42441,"src":"5880:22:52","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":42500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5880:24:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":42501,"nodeType":"RevertStatement","src":"5873:31:52"}]}}]}}]},"baseFunctions":[42199],"documentation":{"id":42484,"nodeType":"StructuredDocumentation","src":"5544:131:52","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:52","overrides":{"id":42486,"nodeType":"OverrideSpecifier","overrides":[],"src":"5718:8:52"},"parameters":{"id":42485,"nodeType":"ParameterList","parameters":[],"src":"5698:2:52"},"returnParameters":{"id":42487,"nodeType":"ParameterList","parameters":[],"src":"5727:0:52"},"scope":42547,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":42546,"nodeType":"FunctionDefinition","src":"6251:217:52","nodes":[],"body":{"id":42545,"nodeType":"Block","src":"6296:172:52","nodes":[],"statements":[{"assignments":[42522,42524],"declarations":[{"constant":false,"id":42522,"mutability":"mutable","name":"newImplementation","nameLocation":"6315:17:52","nodeType":"VariableDeclaration","scope":42545,"src":"6307:25:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42521,"name":"address","nodeType":"ElementaryTypeName","src":"6307:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":42524,"mutability":"mutable","name":"data","nameLocation":"6347:4:52","nodeType":"VariableDeclaration","scope":42545,"src":"6334:17:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":42523,"name":"bytes","nodeType":"ElementaryTypeName","src":"6334:5:52","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":42537,"initialValue":{"arguments":[{"baseExpression":{"expression":{"id":42527,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6366:3:52","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":42528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6370:4:52","memberName":"data","nodeType":"MemberAccess","src":"6366:8:52","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":42530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"6366:12:52","startExpression":{"hexValue":"34","id":42529,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6375:1:52","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":42532,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6381:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":42531,"name":"address","nodeType":"ElementaryTypeName","src":"6381:7:52","typeDescriptions":{}}},{"id":42534,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6390:5:52","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":42533,"name":"bytes","nodeType":"ElementaryTypeName","src":"6390:5:52","typeDescriptions":{}}}],"id":42535,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6380:16:52","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":42525,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6355:3:52","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":42526,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6359:6:52","memberName":"decode","nodeType":"MemberAccess","src":"6355:10:52","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":42536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6355:42:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_payable_$_t_bytes_memory_ptr_$","typeString":"tuple(address payable,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6306:91:52"},{"expression":{"arguments":[{"id":42541,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42522,"src":"6437:17:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":42542,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42524,"src":"6456:4:52","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":42538,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42172,"src":"6407:12:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$42172_$","typeString":"type(library ERC1967Utils)"}},"id":42540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6420:16:52","memberName":"upgradeToAndCall","nodeType":"MemberAccess","referencedDeclaration":41987,"src":"6407:29:52","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":42543,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6407:54:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42544,"nodeType":"ExpressionStatement","src":"6407:54:52"}]},"documentation":{"id":42518,"nodeType":"StructuredDocumentation","src":"6055:191:52","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:52","parameters":{"id":42519,"nodeType":"ParameterList","parameters":[],"src":"6285:2:52"},"returnParameters":{"id":42520,"nodeType":"ParameterList","parameters":[],"src":"6296:0:52"},"scope":42547,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":42435,"name":"ERC1967Proxy","nameLocations":["4279:12:52"],"nodeType":"IdentifierPath","referencedDeclaration":41878,"src":"4279:12:52"},"id":42436,"nodeType":"InheritanceSpecifier","src":"4279:12:52"}],"canonicalName":"TransparentUpgradeableProxy","contractDependencies":[42412],"contractKind":"contract","documentation":{"id":42434,"nodeType":"StructuredDocumentation","src":"952:3286:52","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":[42547,41878,42208],"name":"TransparentUpgradeableProxy","nameLocation":"4248:27:52","scope":42548,"usedErrors":[41898,41903,41911,42441,43623,43915],"usedEvents":[41498,41505]}],"license":"MIT"},"id":52} \ 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":"0x60a0604052610a97803803806100148161026b565b92833981016060828203126102675761002c82610290565b61003860208401610290565b604084015190936001600160401b03821161026757019180601f8401121561026757825161006d610068826102a4565b61026b565b9381855260208501926020838301011161026757815f926020809301855e85010152813b15610246577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0384169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a282511561022e575f809161012d945190845af43d15610226573d9161011e610068846102a4565b9283523d5f602085013e6102bf565b505b604051906104408083016001600160401b0381118482101761021257602092849261063784396001600160a01b031681520301905ff080156102075760018060a01b0316806080525f516020610a775f395f51905f52547f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6040805160018060a01b0384168152846020820152a181156101f4576001600160a01b031916175f516020610a775f395f51905f5255604051610319908161031e82396080518160070152f35b633173bdd160e11b5f525f60045260245ffd5b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b6060916102bf565b505050341561012f5763b398979f60e01b5f5260045ffd5b50634c9c8ce360e01b5f9081526001600160a01b0391909116600452602490fd5b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761021257604052565b51906001600160a01b038216820361026757565b6001600160401b03811161021257601f01601f191660200190565b906102e357508051156102d457805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580610314575b6102f4575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156102ec56fe6080604052337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031603610066575f356001600160e01b03191663278f794360e11b1461005c576334ad5dbb60e21b5f5260045ffd5b61006461010a565b005b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e156100ab573d5ff35b3d5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff8111838210176100e957604052565b6100af565b67ffffffffffffffff81116100e957601f01601f191660200190565b36600411610193576040366003190112610193576004356001600160a01b03811690819003610193576024359067ffffffffffffffff8211610193573660238301121561019357816004013590610168610163836100ee565b6100c3565b918083523660248286010111610193576020815f92602461019197018387013784010152610197565b565b5f80fd5b90813b1561022b577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0384169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2805115610213576102109161024c565b50565b50503461021c57565b63b398979f60e01b5f5260045ffd5b50634c9c8ce360e01b5f9081526001600160a01b0391909116600452602490fd5b5f8061027e93602081519101845af43d15610281573d9161026f610163846100ee565b9283523d5f602085013e610285565b90565b6060915b906102a9575080511561029a57805190602001fd5b63d6bda27560e01b5f5260045ffd5b815115806102da575b6102ba575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156102b256fea2646970667358221220289d5e3a24234628147ec5089482f4d8b968bb26af0696e6494e3dbfd07c072f64736f6c634300081c003360803460b857601f61044038819003918201601f19168301916001600160401b0383118484101760bc5780849260209460405283398101031260b857516001600160a01b0381169081900360b857801560a5575f80546001600160a01b031981168317825560405192916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a361036f90816100d18239f35b631e4fbdf760e01b5f525f60045260245ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f5f3560e01c8063715018a6146102765780638da5cb5b1461024f5780639623609d1461012c578063ad3cb1cc146100df5763f2fde38b14610051575f80fd5b346100dc5760203660031901126100dc576004356001600160a01b038116908190036100da5761007f610313565b80156100c65781546001600160a01b03198116821783556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b631e4fbdf760e01b82526004829052602482fd5b505b80fd5b50346100dc57806003193601126100dc57506101286040516101026040826102cd565b60058152640352e302e360dc1b60208201526040519182916020835260208301906102ef565b0390f35b506060366003190112610237576004356001600160a01b03811690819003610237576024356001600160a01b038116908190036102375760443567ffffffffffffffff8111610237573660238201121561023757806004013567ffffffffffffffff811161023b57604051916101ac601f8301601f1916602001846102cd565b818352366024838301011161023757815f9260246020930183860137830101526101d4610313565b823b156102375761020a925f9260405180958194829363278f794360e11b845260048401526040602484015260448301906102ef565b039134905af1801561022c5761021e575080f35b61022a91505f906102cd565b005b6040513d5f823e3d90fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b34610237575f366003190112610237575f546040516001600160a01b039091168152602090f35b34610237575f3660031901126102375761028e610313565b5f80546001600160a01b0319811682556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b90601f8019910116810190811067ffffffffffffffff82111761023b57604052565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b5f546001600160a01b0316330361032657565b63118cdaa760e01b5f523360045260245ffdfea26469706673582212203d90ecd6ab8fd2607bedb16db56f705d3963a161f03045ade1485738fbd88b2064736f6c634300081c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103","sourceMap":"4239:2231:52:-:0;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;4239:2231:52;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;4239:2231:52;;;;;;;;;;;1758:29:46;;:34;1754:119;;821:66;4239:2231:52;;-1:-1:-1;;;;;;4239:2231:52;-1:-1:-1;;;;;4239:2231:52;;;;;;;;2417:36:46;-1:-1:-1;;2417:36:46;4239:2231:52;;2468:15:46;:11;;-1:-1:-1;4049:25:58;;4091:55;4049:25;;;;;;4239:2231:52;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;4239:2231:52;;;;4091:55:58;:::i;:::-;;2464:148:46;4239:2231:52;;;5215:28;;;;-1:-1:-1;;;;;5215:28:52;;;;;;;;4239:2231;5215:28;;;;;;-1:-1:-1;;;;;4239:2231:52;;;5215:28;;;-1:-1:-1;5215:28:52;;;;;4239:2231;;;;;;5198:46;;;-1:-1:-1;;;;;;;;;;;2878:66:46;3900:43;4239:2231:52;;;;;;;;;;;;;;;;;3900:43:46;3559:22;;3555:91;;-1:-1:-1;;;;;;4239:2231:52;;-1:-1:-1;;;;;;;;;;;4239:2231:52;;;;;;;;;5198:46;4239:2231;;;;;;3555:91:46;3604:31;;;-1:-1:-1;3604:31:46;-1:-1:-1;3604:31:46;4239:2231:52;;-1:-1:-1;3604:31:46;5215:28:52;4239:2231;;;-1:-1:-1;4239:2231:52;;;;;5215:28;4239:2231;;;-1:-1:-1;4239:2231:52;;;;;-1:-1:-1;4239:2231:52;;;;4091:55:58;:::i;2464:148:46:-;6173:9;;;;6169:70;2464:148;6169:70;6209:19;;;-1:-1:-1;6209:19:46;;-1:-1:-1;6209:19:46;1754:119;-1:-1:-1;;;;;1815:47:46;;;-1:-1:-1;;;;;4239:2231:52;;;;1815:47:46;4239:2231:52;;;1815:47:46;4239:2231:52;-1:-1:-1;4239:2231:52;;;;;;;;;-1:-1:-1;;4239:2231:52;;;-1:-1:-1;;;;;4239:2231:52;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;4239:2231:52;;;;;;:::o;:::-;-1:-1:-1;;;;;4239:2231:52;;;;;;-1:-1:-1;;4239:2231:52;;;;:::o;4421:582:58:-;;4593:8;;-1:-1:-1;4239:2231:52;;5674:21:58;:17;;5846:142;;;;;;5670:385;6025:19;;;5694:1;6025:19;;5694:1;6025:19;4589:408;4239:2231:52;;4841:22:58;:49;;;4589:408;4837:119;;4969:17;;:::o;4837:119::-;-1:-1:-1;;;4862:1:58;4917:24;;;-1:-1:-1;;;;;4239:2231:52;;;;4917:24:58;4239:2231:52;;;4917:24:58;4841:49;4867:18;;;:23;4841:49;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031603610066575f356001600160e01b03191663278f794360e11b1461005c576334ad5dbb60e21b5f5260045ffd5b61006461010a565b005b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e156100ab573d5ff35b3d5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff8111838210176100e957604052565b6100af565b67ffffffffffffffff81116100e957601f01601f191660200190565b36600411610193576040366003190112610193576004356001600160a01b03811690819003610193576024359067ffffffffffffffff8211610193573660238301121561019357816004013590610168610163836100ee565b6100c3565b918083523660248286010111610193576020815f92602461019197018387013784010152610197565b565b5f80fd5b90813b1561022b577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0384169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2805115610213576102109161024c565b50565b50503461021c57565b63b398979f60e01b5f5260045ffd5b50634c9c8ce360e01b5f9081526001600160a01b0391909116600452602490fd5b5f8061027e93602081519101845af43d15610281573d9161026f610163846100ee565b9283523d5f602085013e610285565b90565b6060915b906102a9575080511561029a57805190602001fd5b63d6bda27560e01b5f5260045ffd5b815115806102da575b6102ba575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156102b256fea2646970667358221220289d5e3a24234628147ec5089482f4d8b968bb26af0696e6494e3dbfd07c072f64736f6c634300081c0033","sourceMap":"4239:2231:52:-:0;;;5741:10;5525:6;-1:-1:-1;;;;;4239:2231:52;5741:27;4239:2231;;5788:7;;-1:-1:-1;;;;;;5788:7:52;-1:-1:-1;;;5788:65:52;5799:54;;5880:24;;;5788:7;5880:24;;5788:7;5880:24;5784:201;;;:::i;:::-;4239:2231;5737:306;821:66:46;;-1:-1:-1;;;;;;;;;4239:2231:52;1019:819:47;-1:-1:-1;;1019:819:47;;;;;;;-1:-1:-1;1019:819:47;;;;;;-1:-1:-1;1019:819:47;;;-1:-1:-1;1019:819:47;4239:2231:52;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4239:2231:52;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;-1:-1:-1;;4239:2231:52;;;;:::o;6251:217::-;6366:8;6375:1;4239:2231;;;;6366:8;-1:-1:-1;;4239:2231:52;;;;6375:1;4239:2231;-1:-1:-1;;;;;4239:2231:52;;;;;;;;;;;;;;;;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:46;;1758:29;;:34;1754:119;;821:66;4239:2231:52;;-1:-1:-1;;;;;;4239:2231:52;-1:-1:-1;;;;;4239:2231:52;;;;;;;;2417:36:46;-1:-1:-1;;2417:36:46;4239:2231:52;;2468:15:46;: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:46;1815:47;;;-1:-1:-1;;;;;4239:2231:52;;;;1815:47:46;4239:2231:52;;;1815:47:46;3900:253:58;4049:25;3900:253;4091:55;3900:253;4049:25;;;;;;;;4239:2231:52;;;;;;;;;;:::i;:::-;;;;;4049:25:58;;4239:2231:52;;;4091:55:58;:::i;:::-;3900:253;:::o;4239:2231:52:-;;;4421:582:58;;4593:8;;-1:-1:-1;4239:2231:52;;5674:21:58;:17;;5846:142;;;;;;5670:385;6025:19;;;5694:1;6025:19;;5694:1;6025:19;4589:408;4239:2231:52;;4841:22:58;:49;;;4589:408;4837:119;;4969:17;;:::o;4837:119::-;-1:-1:-1;;;4862:1:58;4917:24;;;-1:-1:-1;;;;;4239:2231:52;;;;4917:24:58;4239:2231:52;;;4917:24:58;4841:49;4867:18;;;:23;4841:49;","linkReferences":{},"immutableReferences":{"42438":[{"start":7,"length":32}]}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"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/\",\":symbiotic-core/=lib/symbiotic-core/\"],\"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.28+commit.7893614a"},"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/","symbiotic-core/=lib/symbiotic-core/"],"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":42548,"exportedSymbols":{"ERC1967Proxy":[41878],"ERC1967Utils":[42172],"IERC1967":[41511],"ITransparentUpgradeableProxy":[42433],"ProxyAdmin":[42412],"TransparentUpgradeableProxy":[42547]},"nodeType":"SourceUnit","src":"133:6338:52","nodes":[{"id":42414,"nodeType":"PragmaDirective","src":"133:24:52","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":42416,"nodeType":"ImportDirective","src":"159:57:52","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol","file":"../ERC1967/ERC1967Utils.sol","nameLocation":"-1:-1:-1","scope":42548,"sourceUnit":42173,"symbolAliases":[{"foreign":{"id":42415,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42172,"src":"167:12:52","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":42418,"nodeType":"ImportDirective","src":"217:57:52","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol","file":"../ERC1967/ERC1967Proxy.sol","nameLocation":"-1:-1:-1","scope":42548,"sourceUnit":41879,"symbolAliases":[{"foreign":{"id":42417,"name":"ERC1967Proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41878,"src":"225:12:52","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":42420,"nodeType":"ImportDirective","src":"275:55:52","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol","file":"../../interfaces/IERC1967.sol","nameLocation":"-1:-1:-1","scope":42548,"sourceUnit":41512,"symbolAliases":[{"foreign":{"id":42419,"name":"IERC1967","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41511,"src":"283:8:52","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":42422,"nodeType":"ImportDirective","src":"331:44:52","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol","file":"./ProxyAdmin.sol","nameLocation":"-1:-1:-1","scope":42548,"sourceUnit":42413,"symbolAliases":[{"foreign":{"id":42421,"name":"ProxyAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42412,"src":"339:10:52","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":42433,"nodeType":"ContractDefinition","src":"823:127:52","nodes":[{"id":42432,"nodeType":"FunctionDefinition","src":"880:68:52","nodes":[],"functionSelector":"4f1ef286","implemented":false,"kind":"function","modifiers":[],"name":"upgradeToAndCall","nameLocation":"889:16:52","parameters":{"id":42430,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42427,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42432,"src":"906:7:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42426,"name":"address","nodeType":"ElementaryTypeName","src":"906:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":42429,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42432,"src":"915:14:52","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":42428,"name":"bytes","nodeType":"ElementaryTypeName","src":"915:5:52","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"905:25:52"},"returnParameters":{"id":42431,"nodeType":"ParameterList","parameters":[],"src":"947:0:52"},"scope":42433,"stateMutability":"payable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":42424,"name":"IERC1967","nameLocations":["865:8:52"],"nodeType":"IdentifierPath","referencedDeclaration":41511,"src":"865:8:52"},"id":42425,"nodeType":"InheritanceSpecifier","src":"865:8:52"}],"canonicalName":"ITransparentUpgradeableProxy","contractDependencies":[],"contractKind":"interface","documentation":{"id":42423,"nodeType":"StructuredDocumentation","src":"377:445:52","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":[42433,41511],"name":"ITransparentUpgradeableProxy","nameLocation":"833:28:52","scope":42548,"usedErrors":[],"usedEvents":[41498,41505,41510]},{"id":42547,"nodeType":"ContractDefinition","src":"4239:2231:52","nodes":[{"id":42438,"nodeType":"VariableDeclaration","src":"4633:32:52","nodes":[],"constant":false,"mutability":"immutable","name":"_admin","nameLocation":"4659:6:52","scope":42547,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42437,"name":"address","nodeType":"ElementaryTypeName","src":"4633:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"id":42441,"nodeType":"ErrorDefinition","src":"4779:31:52","nodes":[],"documentation":{"id":42439,"nodeType":"StructuredDocumentation","src":"4672:102:52","text":" @dev The proxy caller is the current admin, and can't fallback to the proxy target."},"errorSelector":"d2b576ec","name":"ProxyDeniedAdminAccess","nameLocation":"4785:22:52","parameters":{"id":42440,"nodeType":"ParameterList","parameters":[],"src":"4807:2:52"}},{"id":42474,"nodeType":"FunctionDefinition","src":"5082:296:52","nodes":[],"body":{"id":42473,"nodeType":"Block","src":"5188:190:52","nodes":[],"statements":[{"expression":{"id":42464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":42455,"name":"_admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42438,"src":"5198:6:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":42461,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42446,"src":"5230:12:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":42460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"5215:14:52","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_address_$returns$_t_contract$_ProxyAdmin_$42412_$","typeString":"function (address) returns (contract ProxyAdmin)"},"typeName":{"id":42459,"nodeType":"UserDefinedTypeName","pathNode":{"id":42458,"name":"ProxyAdmin","nameLocations":["5219:10:52"],"nodeType":"IdentifierPath","referencedDeclaration":42412,"src":"5219:10:52"},"referencedDeclaration":42412,"src":"5219:10:52","typeDescriptions":{"typeIdentifier":"t_contract$_ProxyAdmin_$42412","typeString":"contract ProxyAdmin"}}},"id":42462,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5215:28:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ProxyAdmin_$42412","typeString":"contract ProxyAdmin"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ProxyAdmin_$42412","typeString":"contract ProxyAdmin"}],"id":42457,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5207:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":42456,"name":"address","nodeType":"ElementaryTypeName","src":"5207:7:52","typeDescriptions":{}}},"id":42463,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5207:37:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5198:46:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":42465,"nodeType":"ExpressionStatement","src":"5198:46:52"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":42469,"name":"_proxyAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42483,"src":"5357:11:52","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":42470,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5357:13:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":42466,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42172,"src":"5332:12:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$42172_$","typeString":"type(library ERC1967Utils)"}},"id":42468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5345:11:52","memberName":"changeAdmin","nodeType":"MemberAccess","referencedDeclaration":42054,"src":"5332:24:52","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":42471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5332:39:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42472,"nodeType":"ExpressionStatement","src":"5332:39:52"}]},"documentation":{"id":42442,"nodeType":"StructuredDocumentation","src":"4816:261:52","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":42451,"name":"_logic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42444,"src":"5173:6:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":42452,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42448,"src":"5181:5:52","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":42453,"kind":"baseConstructorSpecifier","modifierName":{"id":42450,"name":"ERC1967Proxy","nameLocations":["5160:12:52"],"nodeType":"IdentifierPath","referencedDeclaration":41878,"src":"5160:12:52"},"nodeType":"ModifierInvocation","src":"5160:27:52"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":42449,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42444,"mutability":"mutable","name":"_logic","nameLocation":"5102:6:52","nodeType":"VariableDeclaration","scope":42474,"src":"5094:14:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42443,"name":"address","nodeType":"ElementaryTypeName","src":"5094:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":42446,"mutability":"mutable","name":"initialOwner","nameLocation":"5118:12:52","nodeType":"VariableDeclaration","scope":42474,"src":"5110:20:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42445,"name":"address","nodeType":"ElementaryTypeName","src":"5110:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":42448,"mutability":"mutable","name":"_data","nameLocation":"5145:5:52","nodeType":"VariableDeclaration","scope":42474,"src":"5132:18:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":42447,"name":"bytes","nodeType":"ElementaryTypeName","src":"5132:5:52","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5093:58:52"},"returnParameters":{"id":42454,"nodeType":"ParameterList","parameters":[],"src":"5188:0:52"},"scope":42547,"stateMutability":"payable","virtual":false,"visibility":"public"},{"id":42483,"nodeType":"FunctionDefinition","src":"5445:93:52","nodes":[],"body":{"id":42482,"nodeType":"Block","src":"5508:30:52","nodes":[],"statements":[{"expression":{"id":42480,"name":"_admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42438,"src":"5525:6:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":42479,"id":42481,"nodeType":"Return","src":"5518:13:52"}]},"documentation":{"id":42475,"nodeType":"StructuredDocumentation","src":"5384:56:52","text":" @dev Returns the admin of this proxy."},"implemented":true,"kind":"function","modifiers":[],"name":"_proxyAdmin","nameLocation":"5454:11:52","parameters":{"id":42476,"nodeType":"ParameterList","parameters":[],"src":"5465:2:52"},"returnParameters":{"id":42479,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42478,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42483,"src":"5499:7:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42477,"name":"address","nodeType":"ElementaryTypeName","src":"5499:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5498:9:52"},"scope":42547,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":42517,"nodeType":"FunctionDefinition","src":"5680:369:52","nodes":[],"body":{"id":42516,"nodeType":"Block","src":"5727:322:52","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":42492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":42488,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5741:3:52","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":42489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5745:6:52","memberName":"sender","nodeType":"MemberAccess","src":"5741:10:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":42490,"name":"_proxyAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42483,"src":"5755:11:52","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":42491,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5755:13:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5741:27:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":42514,"nodeType":"Block","src":"6001:42:52","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":42509,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"6015:5:52","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_TransparentUpgradeableProxy_$42547_$","typeString":"type(contract super TransparentUpgradeableProxy)"}},"id":42511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6021:9:52","memberName":"_fallback","nodeType":"MemberAccess","referencedDeclaration":42199,"src":"6015:15:52","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":42512,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6015:17:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42513,"nodeType":"ExpressionStatement","src":"6015:17:52"}]},"id":42515,"nodeType":"IfStatement","src":"5737:306:52","trueBody":{"id":42508,"nodeType":"Block","src":"5770:225:52","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":42498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":42493,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5788:3:52","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":42494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5792:3:52","memberName":"sig","nodeType":"MemberAccess","src":"5788:7:52","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":42495,"name":"ITransparentUpgradeableProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42433,"src":"5799:28:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ITransparentUpgradeableProxy_$42433_$","typeString":"type(contract ITransparentUpgradeableProxy)"}},"id":42496,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5828:16:52","memberName":"upgradeToAndCall","nodeType":"MemberAccess","referencedDeclaration":42432,"src":"5799:45:52","typeDescriptions":{"typeIdentifier":"t_function_declaration_payable$_t_address_$_t_bytes_calldata_ptr_$returns$__$","typeString":"function ITransparentUpgradeableProxy.upgradeToAndCall(address,bytes calldata) payable"}},"id":42497,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5845:8:52","memberName":"selector","nodeType":"MemberAccess","src":"5799:54:52","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"5788:65:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":42506,"nodeType":"Block","src":"5925:60:52","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":42503,"name":"_dispatchUpgradeToAndCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42546,"src":"5943:25:52","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":42504,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5943:27:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42505,"nodeType":"ExpressionStatement","src":"5943:27:52"}]},"id":42507,"nodeType":"IfStatement","src":"5784:201:52","trueBody":{"id":42502,"nodeType":"Block","src":"5855:64:52","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":42499,"name":"ProxyDeniedAdminAccess","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42441,"src":"5880:22:52","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":42500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5880:24:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":42501,"nodeType":"RevertStatement","src":"5873:31:52"}]}}]}}]},"baseFunctions":[42199],"documentation":{"id":42484,"nodeType":"StructuredDocumentation","src":"5544:131:52","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:52","overrides":{"id":42486,"nodeType":"OverrideSpecifier","overrides":[],"src":"5718:8:52"},"parameters":{"id":42485,"nodeType":"ParameterList","parameters":[],"src":"5698:2:52"},"returnParameters":{"id":42487,"nodeType":"ParameterList","parameters":[],"src":"5727:0:52"},"scope":42547,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":42546,"nodeType":"FunctionDefinition","src":"6251:217:52","nodes":[],"body":{"id":42545,"nodeType":"Block","src":"6296:172:52","nodes":[],"statements":[{"assignments":[42522,42524],"declarations":[{"constant":false,"id":42522,"mutability":"mutable","name":"newImplementation","nameLocation":"6315:17:52","nodeType":"VariableDeclaration","scope":42545,"src":"6307:25:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42521,"name":"address","nodeType":"ElementaryTypeName","src":"6307:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":42524,"mutability":"mutable","name":"data","nameLocation":"6347:4:52","nodeType":"VariableDeclaration","scope":42545,"src":"6334:17:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":42523,"name":"bytes","nodeType":"ElementaryTypeName","src":"6334:5:52","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":42537,"initialValue":{"arguments":[{"baseExpression":{"expression":{"id":42527,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6366:3:52","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":42528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6370:4:52","memberName":"data","nodeType":"MemberAccess","src":"6366:8:52","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":42530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"6366:12:52","startExpression":{"hexValue":"34","id":42529,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6375:1:52","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":42532,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6381:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":42531,"name":"address","nodeType":"ElementaryTypeName","src":"6381:7:52","typeDescriptions":{}}},{"id":42534,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6390:5:52","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":42533,"name":"bytes","nodeType":"ElementaryTypeName","src":"6390:5:52","typeDescriptions":{}}}],"id":42535,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6380:16:52","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":42525,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6355:3:52","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":42526,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6359:6:52","memberName":"decode","nodeType":"MemberAccess","src":"6355:10:52","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":42536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6355:42:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_payable_$_t_bytes_memory_ptr_$","typeString":"tuple(address payable,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6306:91:52"},{"expression":{"arguments":[{"id":42541,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42522,"src":"6437:17:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":42542,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42524,"src":"6456:4:52","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":42538,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42172,"src":"6407:12:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$42172_$","typeString":"type(library ERC1967Utils)"}},"id":42540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6420:16:52","memberName":"upgradeToAndCall","nodeType":"MemberAccess","referencedDeclaration":41987,"src":"6407:29:52","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":42543,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6407:54:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42544,"nodeType":"ExpressionStatement","src":"6407:54:52"}]},"documentation":{"id":42518,"nodeType":"StructuredDocumentation","src":"6055:191:52","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:52","parameters":{"id":42519,"nodeType":"ParameterList","parameters":[],"src":"6285:2:52"},"returnParameters":{"id":42520,"nodeType":"ParameterList","parameters":[],"src":"6296:0:52"},"scope":42547,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":42435,"name":"ERC1967Proxy","nameLocations":["4279:12:52"],"nodeType":"IdentifierPath","referencedDeclaration":41878,"src":"4279:12:52"},"id":42436,"nodeType":"InheritanceSpecifier","src":"4279:12:52"}],"canonicalName":"TransparentUpgradeableProxy","contractDependencies":[42412],"contractKind":"contract","documentation":{"id":42434,"nodeType":"StructuredDocumentation","src":"952:3286:52","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":[42547,41878,42208],"name":"TransparentUpgradeableProxy","nameLocation":"4248:27:52","scope":42548,"usedErrors":[41898,41903,41911,42441,43623,43915],"usedEvents":[41498,41505]}],"license":"MIT"},"id":52} \ No newline at end of file diff --git a/ethexe/ethereum/WrappedVara.json b/ethexe/ethereum/WrappedVara.json index 33ab1ab1c31..8b7ba0e89ba 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":"pure"},{"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":"0x6080806040523460d0577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460ff8160401c1660c1576002600160401b03196001600160401b03821601605c575b604051611cbe90816100d58239f35b6001600160401b0319166001600160401b039081177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80604d565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c806306fdde031461120d578063095ea7b3146111e757806318160ddd146111be57806323b872dd14611186578063313ce5671461116b5780633644e5151461114957806340c10f191461110c57806342966c68146110ef5780636c2eb3501461105557806370a0823114611011578063715018a614610faa57806379cc679014610f7a5780637ecebe0014610f2457806384b0196e14610c505780638da5cb5b14610c1c57806395d89b4114610b22578063a9059cbb14610af1578063c4d66de8146102d8578063d505accf14610176578063dd62ed3e1461012f5763f2fde38b14610100575f80fd5b3461012b57602036600319011261012b5761012961011c6112ee565b6101246115b2565b6113ac565b005b5f80fd5b3461012b57604036600319011261012b576101486112ee565b610159610153611304565b91611374565b9060018060a01b03165f52602052602060405f2054604051908152f35b3461012b5760e036600319011261012b5761018f6112ee565b610197611304565b604435906064359260843560ff8116810361012b578442116102c55761028a6102939160018060a01b03841696875f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0060205260405f20908154916001830190556040519060208201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c984528a604084015260018060a01b038916606084015289608084015260a083015260c082015260c0815261025860e082611352565b5190206102636117c0565b906040519161190160f01b83526002830152602282015260c43591604260a4359220611852565b909291926118df565b6001600160a01b03168481036102ae5750610129935061169b565b84906325c0072360e11b5f5260045260245260445ffd5b8463313c898160e11b5f5260045260245ffd5b3461012b57602036600319011261012b576102f16112ee565b5f80516020611c69833981519152549060ff8260401c16159167ffffffffffffffff811680159081610ae9575b6001149081610adf575b159081610ad6575b50610ac75767ffffffffffffffff1981166001175f80516020611c698339815191525582610a9b575b5060405191610369604084611352565b600c83526b57726170706564205661726160a01b602084015260405191610391604084611352565b6005835264575641524160d81b60208401526103ab611827565b6103b3611827565b835167ffffffffffffffff81116107a8576103db5f80516020611b898339815191525461131a565b601f8111610a2c575b50602094601f82116001146109b1579481929394955f926109a6575b50508160011b915f199060031b1c1916175f80516020611b89833981519152555b825167ffffffffffffffff81116107a8576104495f80516020611be98339815191525461131a565b601f8111610937575b506020601f82116001146108bc57819293945f926108b1575b50508160011b915f199060031b1c1916175f80516020611be9833981519152555b610494611827565b61049c611827565b6104a4611827565b6104ad816113ac565b604051916104bc604084611352565b600c83526b57726170706564205661726160a01b60208401526104dd611827565b604051916104ec604084611352565b60018352603160f81b6020840152610502611827565b835167ffffffffffffffff81116107a85761052a5f80516020611bc98339815191525461131a565b601f8111610842575b50602094601f82116001146107c7579481929394955f926107bc575b50508160011b915f199060031b1c1916175f80516020611bc9833981519152555b825167ffffffffffffffff81116107a8576105985f80516020611c498339815191525461131a565b601f8111610739575b506020601f82116001146106be57819293945f926106b3575b50508160011b915f199060031b1c1916175f80516020611c49833981519152555b5f7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1008190557fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d101556001600160a01b038116156106a057670de0b6b3a7640000610643916116fe565b61064957005b68ff0000000000000000195f80516020611c6983398151915254165f80516020611c69833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b63ec442f0560e01b5f525f60045260245ffd5b0151905084806105ba565b601f198216905f80516020611c498339815191525f52805f20915f5b81811061072157509583600195969710610709575b505050811b015f80516020611c49833981519152556105db565b01515f1960f88460031b161c191690558480806106ef565b9192602060018192868b0151815501940192016106da565b5f80516020611c498339815191525f527f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b75601f830160051c8101916020841061079e575b601f0160051c01905b81811061079357506105a1565b5f8155600101610786565b909150819061077d565b634e487b7160e01b5f52604160045260245ffd5b01519050858061054f565b601f198216955f80516020611bc98339815191525f52805f20915f5b88811061082a57508360019596979810610812575b505050811b015f80516020611bc983398151915255610570565b01515f1960f88460031b161c191690558580806107f8565b919260206001819286850151815501940192016107e3565b5f80516020611bc98339815191525f527f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d601f830160051c810191602084106108a7575b601f0160051c01905b81811061089c5750610533565b5f815560010161088f565b9091508190610886565b01519050848061046b565b601f198216905f80516020611be98339815191525f52805f20915f5b81811061091f57509583600195969710610907575b505050811b015f80516020611be98339815191525561048c565b01515f1960f88460031b161c191690558480806108ed565b9192602060018192868b0151815501940192016108d8565b5f80516020611be98339815191525f527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa601f830160051c8101916020841061099c575b601f0160051c01905b8181106109915750610452565b5f8155600101610984565b909150819061097b565b015190508580610400565b601f198216955f80516020611b898339815191525f52805f20915f5b888110610a14575083600195969798106109fc575b505050811b015f80516020611b8983398151915255610421565b01515f1960f88460031b161c191690558580806109e2565b919260206001819286850151815501940192016109cd565b5f80516020611b898339815191525f527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0601f830160051c81019160208410610a91575b601f0160051c01905b818110610a8657506103e4565b5f8155600101610a79565b9091508190610a70565b68ffffffffffffffffff191668010000000000000001175f80516020611c698339815191525582610359565b63f92ee8a960e01b5f5260045ffd5b90501584610330565b303b159150610328565b84915061031e565b3461012b57604036600319011261012b57610b17610b0d6112ee565b60243590336114e1565b602060405160018152f35b3461012b575f36600319011261012b576040515f5f80516020611be983398151915254610b4e8161131a565b8084529060018116908115610bf85750600114610b8e575b610b8a83610b7681850382611352565b6040519182916020835260208301906112ca565b0390f35b5f80516020611be98339815191525f9081527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa939250905b808210610bde57509091508101602001610b76610b66565b919260018160209254838588010152019101909291610bc6565b60ff191660208086019190915291151560051b84019091019150610b769050610b66565b3461012b575f36600319011261012b575f80516020611c09833981519152546040516001600160a01b039091168152602090f35b3461012b575f36600319011261012b577fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100541580610efb575b15610ebe576040515f80516020611bc983398151915254815f610cab8361131a565b8083529260018116908115610e9f5750600114610e34575b610ccf92500382611352565b6040515f80516020611c4983398151915254815f610cec8361131a565b8083529260018116908115610e155750600114610daa575b610d1791925092610d4e94930382611352565b6020610d5c60405192610d2a8385611352565b5f84525f368137604051958695600f60f81b875260e08588015260e08701906112ca565b9085820360408701526112ca565b4660608501523060808501525f60a085015283810360c08501528180845192838152019301915f5b828110610d9357505050500390f35b835185528695509381019392810192600101610d84565b505f80516020611c498339815191525f90815290917f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b755b818310610df9575050906020610d1792820101610d04565b6020919350806001915483858801015201910190918392610de1565b60209250610d1794915060ff191682840152151560051b820101610d04565b505f80516020611bc98339815191525f90815290917f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d5b818310610e83575050906020610ccf92820101610cc3565b6020919350806001915483858801015201910190918392610e6b565b60209250610ccf94915060ff191682840152151560051b820101610cc3565b60405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606490fd5b507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1015415610c89565b3461012b57602036600319011261012b57610f3d6112ee565b60018060a01b03165f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00602052602060405f2054604051908152f35b3461012b57604036600319011261012b57610129610f966112ee565b60243590610fa582338361141d565b6115e5565b3461012b575f36600319011261012b57610fc26115b2565b5f80516020611c0983398151915280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461012b57602036600319011261012b576001600160a01b036110326112ee565b165f525f80516020611ba9833981519152602052602060405f2054604051908152f35b3461012b575f36600319011261012b5761106d6115b2565b5f80516020611c698339815191525460ff8160401c1680156110da575b610ac75760029068ffffffffffffffffff1916175f80516020611c69833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160028152a1005b50600267ffffffffffffffff8216101561108a565b3461012b57602036600319011261012b57610129600435336115e5565b3461012b57604036600319011261012b576111256112ee565b61112d6115b2565b6001600160a01b038116156106a05761012990602435906116fe565b3461012b575f36600319011261012b5760206111636117c0565b604051908152f35b3461012b575f36600319011261012b576020604051600c8152f35b3461012b57606036600319011261012b57610b176111a26112ee565b6111aa611304565b604435916111b983338361141d565b6114e1565b3461012b575f36600319011261012b5760205f80516020611c2983398151915254604051908152f35b3461012b57604036600319011261012b57610b176112036112ee565b602435903361169b565b3461012b575f36600319011261012b576040515f5f80516020611b89833981519152546112398161131a565b8084529060018116908115610bf8575060011461126057610b8a83610b7681850382611352565b5f80516020611b898339815191525f9081527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0939250905b8082106112b057509091508101602001610b76610b66565b919260018160209254838588010152019101909291611298565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361012b57565b602435906001600160a01b038216820361012b57565b90600182811c92168015611348575b602083101461133457565b634e487b7160e01b5f52602260045260245ffd5b91607f1691611329565b90601f8019910116810190811067ffffffffffffffff8211176107a857604052565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020526040902090565b6001600160a01b0316801561140a575f80516020611c0983398151915280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b919061142883611374565b60018060a01b0382165f5260205260405f2054925f19840361144b575b50505050565b8284106114be576001600160a01b038116156114ab576001600160a01b038216156114985761147990611374565b9060018060a01b03165f5260205260405f20910390555f808080611445565b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b508290637dc7a0d960e11b5f5260018060a01b031660045260245260445260645ffd5b6001600160a01b031690811561159f576001600160a01b03169182156106a057815f525f80516020611ba983398151915260205260405f205481811061158657817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f80516020611ba983398151915284520360405f2055845f525f80516020611ba9833981519152825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b634b637e8f60e11b5f525f60045260245ffd5b5f80516020611c09833981519152546001600160a01b031633036115d257565b63118cdaa760e01b5f523360045260245ffd5b9091906001600160a01b0316801561159f57805f525f80516020611ba983398151915260205260405f2054838110611681576020845f94957fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef938587525f80516020611ba98339815191528452036040862055805f80516020611c2983398151915254035f80516020611c2983398151915255604051908152a3565b915063391434e360e21b5f5260045260245260445260645ffd5b916001600160a01b0383169182156114ab576001600160a01b0316928315611498577f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925916116ea602092611374565b855f5282528060405f2055604051908152a3565b5f80516020611c2983398151915254908282018092116117ac575f80516020611c29833981519152919091556001600160a01b0316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020908461178a57805f80516020611c2983398151915254035f80516020611c29833981519152555b604051908152a3565b8484525f80516020611ba9833981519152825260408420818154019055611781565b634e487b7160e01b5f52601160045260245ffd5b6117c8611953565b6117d0611a80565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815261182160c082611352565b51902090565b60ff5f80516020611c698339815191525460401c161561184357565b631afcd79f60e31b5f5260045ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116118d4579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156118c9575f516001600160a01b038116156118bf57905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f9160039190565b600481101561193f57806118f1575050565b600181036119085763f645eedf60e01b5f5260045ffd5b60028103611923575063fce698f760e01b5f5260045260245ffd5b60031461192d5750565b6335e2f38360e21b5f5260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b6040515f80516020611bc983398151915254905f816119718461131a565b9182825260208201946001811690815f14611a6457506001146119f9575b61199b92500382611352565b519081156119a7572090565b50507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1005480156119d45790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b505f80516020611bc98339815191525f90815290917f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d5b818310611a4857505090602061199b9282010161198f565b6020919350806001915483858801015201910190918392611a30565b60ff191686525061199b92151560051b8201602001905061198f565b6040515f80516020611c4983398151915254905f81611a9e8461131a565b9182825260208201946001811690815f14611b6c5750600114611b01575b611ac892500382611352565b51908115611ad4572090565b50507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1015480156119d45790565b505f80516020611c498339815191525f90815290917f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b755b818310611b50575050906020611ac892820101611abc565b6020919350806001915483858801015201910190918392611b38565b60ff1916865250611ac892151560051b82016020019050611abc56fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0352c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10252c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace049016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d103f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220876fa3b8d0ec6917757682c3a8181195f1246da17e840283e4106a851ed888ff64736f6c634300081a0033","sourceMap":"632:990:160:-:0;;;;;;;8837:64:26;632:990:160;;;;;;7896:76:26;;-1:-1:-1;;;;;;;;;;;632:990:160;;7985:34:26;7981:146;;-1:-1:-1;632:990:160;;;;;;;;;7981:146:26;-1:-1:-1;;;;;;632:990:160;-1:-1:-1;;;;;632:990:160;;;8837:64:26;632:990:160;;;8087:29:26;;632:990:160;;8087:29:26;7981:146;;;;7896:76;7938:23;;;-1:-1:-1;7938:23:26;;-1:-1:-1;7938:23:26;632:990:160;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806306fdde031461120d578063095ea7b3146111e757806318160ddd146111be57806323b872dd14611186578063313ce5671461116b5780633644e5151461114957806340c10f191461110c57806342966c68146110ef5780636c2eb3501461105557806370a0823114611011578063715018a614610faa57806379cc679014610f7a5780637ecebe0014610f2457806384b0196e14610c505780638da5cb5b14610c1c57806395d89b4114610b22578063a9059cbb14610af1578063c4d66de8146102d8578063d505accf14610176578063dd62ed3e1461012f5763f2fde38b14610100575f80fd5b3461012b57602036600319011261012b5761012961011c6112ee565b6101246115b2565b6113ac565b005b5f80fd5b3461012b57604036600319011261012b576101486112ee565b610159610153611304565b91611374565b9060018060a01b03165f52602052602060405f2054604051908152f35b3461012b5760e036600319011261012b5761018f6112ee565b610197611304565b604435906064359260843560ff8116810361012b578442116102c55761028a6102939160018060a01b03841696875f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0060205260405f20908154916001830190556040519060208201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c984528a604084015260018060a01b038916606084015289608084015260a083015260c082015260c0815261025860e082611352565b5190206102636117c0565b906040519161190160f01b83526002830152602282015260c43591604260a4359220611852565b909291926118df565b6001600160a01b03168481036102ae5750610129935061169b565b84906325c0072360e11b5f5260045260245260445ffd5b8463313c898160e11b5f5260045260245ffd5b3461012b57602036600319011261012b576102f16112ee565b5f80516020611c69833981519152549060ff8260401c16159167ffffffffffffffff811680159081610ae9575b6001149081610adf575b159081610ad6575b50610ac75767ffffffffffffffff1981166001175f80516020611c698339815191525582610a9b575b5060405191610369604084611352565b600c83526b57726170706564205661726160a01b602084015260405191610391604084611352565b6005835264575641524160d81b60208401526103ab611827565b6103b3611827565b835167ffffffffffffffff81116107a8576103db5f80516020611b898339815191525461131a565b601f8111610a2c575b50602094601f82116001146109b1579481929394955f926109a6575b50508160011b915f199060031b1c1916175f80516020611b89833981519152555b825167ffffffffffffffff81116107a8576104495f80516020611be98339815191525461131a565b601f8111610937575b506020601f82116001146108bc57819293945f926108b1575b50508160011b915f199060031b1c1916175f80516020611be9833981519152555b610494611827565b61049c611827565b6104a4611827565b6104ad816113ac565b604051916104bc604084611352565b600c83526b57726170706564205661726160a01b60208401526104dd611827565b604051916104ec604084611352565b60018352603160f81b6020840152610502611827565b835167ffffffffffffffff81116107a85761052a5f80516020611bc98339815191525461131a565b601f8111610842575b50602094601f82116001146107c7579481929394955f926107bc575b50508160011b915f199060031b1c1916175f80516020611bc9833981519152555b825167ffffffffffffffff81116107a8576105985f80516020611c498339815191525461131a565b601f8111610739575b506020601f82116001146106be57819293945f926106b3575b50508160011b915f199060031b1c1916175f80516020611c49833981519152555b5f7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1008190557fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d101556001600160a01b038116156106a057670de0b6b3a7640000610643916116fe565b61064957005b68ff0000000000000000195f80516020611c6983398151915254165f80516020611c69833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b63ec442f0560e01b5f525f60045260245ffd5b0151905084806105ba565b601f198216905f80516020611c498339815191525f52805f20915f5b81811061072157509583600195969710610709575b505050811b015f80516020611c49833981519152556105db565b01515f1960f88460031b161c191690558480806106ef565b9192602060018192868b0151815501940192016106da565b5f80516020611c498339815191525f527f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b75601f830160051c8101916020841061079e575b601f0160051c01905b81811061079357506105a1565b5f8155600101610786565b909150819061077d565b634e487b7160e01b5f52604160045260245ffd5b01519050858061054f565b601f198216955f80516020611bc98339815191525f52805f20915f5b88811061082a57508360019596979810610812575b505050811b015f80516020611bc983398151915255610570565b01515f1960f88460031b161c191690558580806107f8565b919260206001819286850151815501940192016107e3565b5f80516020611bc98339815191525f527f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d601f830160051c810191602084106108a7575b601f0160051c01905b81811061089c5750610533565b5f815560010161088f565b9091508190610886565b01519050848061046b565b601f198216905f80516020611be98339815191525f52805f20915f5b81811061091f57509583600195969710610907575b505050811b015f80516020611be98339815191525561048c565b01515f1960f88460031b161c191690558480806108ed565b9192602060018192868b0151815501940192016108d8565b5f80516020611be98339815191525f527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa601f830160051c8101916020841061099c575b601f0160051c01905b8181106109915750610452565b5f8155600101610984565b909150819061097b565b015190508580610400565b601f198216955f80516020611b898339815191525f52805f20915f5b888110610a14575083600195969798106109fc575b505050811b015f80516020611b8983398151915255610421565b01515f1960f88460031b161c191690558580806109e2565b919260206001819286850151815501940192016109cd565b5f80516020611b898339815191525f527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0601f830160051c81019160208410610a91575b601f0160051c01905b818110610a8657506103e4565b5f8155600101610a79565b9091508190610a70565b68ffffffffffffffffff191668010000000000000001175f80516020611c698339815191525582610359565b63f92ee8a960e01b5f5260045ffd5b90501584610330565b303b159150610328565b84915061031e565b3461012b57604036600319011261012b57610b17610b0d6112ee565b60243590336114e1565b602060405160018152f35b3461012b575f36600319011261012b576040515f5f80516020611be983398151915254610b4e8161131a565b8084529060018116908115610bf85750600114610b8e575b610b8a83610b7681850382611352565b6040519182916020835260208301906112ca565b0390f35b5f80516020611be98339815191525f9081527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa939250905b808210610bde57509091508101602001610b76610b66565b919260018160209254838588010152019101909291610bc6565b60ff191660208086019190915291151560051b84019091019150610b769050610b66565b3461012b575f36600319011261012b575f80516020611c09833981519152546040516001600160a01b039091168152602090f35b3461012b575f36600319011261012b577fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100541580610efb575b15610ebe576040515f80516020611bc983398151915254815f610cab8361131a565b8083529260018116908115610e9f5750600114610e34575b610ccf92500382611352565b6040515f80516020611c4983398151915254815f610cec8361131a565b8083529260018116908115610e155750600114610daa575b610d1791925092610d4e94930382611352565b6020610d5c60405192610d2a8385611352565b5f84525f368137604051958695600f60f81b875260e08588015260e08701906112ca565b9085820360408701526112ca565b4660608501523060808501525f60a085015283810360c08501528180845192838152019301915f5b828110610d9357505050500390f35b835185528695509381019392810192600101610d84565b505f80516020611c498339815191525f90815290917f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b755b818310610df9575050906020610d1792820101610d04565b6020919350806001915483858801015201910190918392610de1565b60209250610d1794915060ff191682840152151560051b820101610d04565b505f80516020611bc98339815191525f90815290917f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d5b818310610e83575050906020610ccf92820101610cc3565b6020919350806001915483858801015201910190918392610e6b565b60209250610ccf94915060ff191682840152151560051b820101610cc3565b60405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606490fd5b507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1015415610c89565b3461012b57602036600319011261012b57610f3d6112ee565b60018060a01b03165f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00602052602060405f2054604051908152f35b3461012b57604036600319011261012b57610129610f966112ee565b60243590610fa582338361141d565b6115e5565b3461012b575f36600319011261012b57610fc26115b2565b5f80516020611c0983398151915280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461012b57602036600319011261012b576001600160a01b036110326112ee565b165f525f80516020611ba9833981519152602052602060405f2054604051908152f35b3461012b575f36600319011261012b5761106d6115b2565b5f80516020611c698339815191525460ff8160401c1680156110da575b610ac75760029068ffffffffffffffffff1916175f80516020611c69833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160028152a1005b50600267ffffffffffffffff8216101561108a565b3461012b57602036600319011261012b57610129600435336115e5565b3461012b57604036600319011261012b576111256112ee565b61112d6115b2565b6001600160a01b038116156106a05761012990602435906116fe565b3461012b575f36600319011261012b5760206111636117c0565b604051908152f35b3461012b575f36600319011261012b576020604051600c8152f35b3461012b57606036600319011261012b57610b176111a26112ee565b6111aa611304565b604435916111b983338361141d565b6114e1565b3461012b575f36600319011261012b5760205f80516020611c2983398151915254604051908152f35b3461012b57604036600319011261012b57610b176112036112ee565b602435903361169b565b3461012b575f36600319011261012b576040515f5f80516020611b89833981519152546112398161131a565b8084529060018116908115610bf8575060011461126057610b8a83610b7681850382611352565b5f80516020611b898339815191525f9081527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0939250905b8082106112b057509091508101602001610b76610b66565b919260018160209254838588010152019101909291611298565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361012b57565b602435906001600160a01b038216820361012b57565b90600182811c92168015611348575b602083101461133457565b634e487b7160e01b5f52602260045260245ffd5b91607f1691611329565b90601f8019910116810190811067ffffffffffffffff8211176107a857604052565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020526040902090565b6001600160a01b0316801561140a575f80516020611c0983398151915280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b919061142883611374565b60018060a01b0382165f5260205260405f2054925f19840361144b575b50505050565b8284106114be576001600160a01b038116156114ab576001600160a01b038216156114985761147990611374565b9060018060a01b03165f5260205260405f20910390555f808080611445565b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b508290637dc7a0d960e11b5f5260018060a01b031660045260245260445260645ffd5b6001600160a01b031690811561159f576001600160a01b03169182156106a057815f525f80516020611ba983398151915260205260405f205481811061158657817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f80516020611ba983398151915284520360405f2055845f525f80516020611ba9833981519152825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b634b637e8f60e11b5f525f60045260245ffd5b5f80516020611c09833981519152546001600160a01b031633036115d257565b63118cdaa760e01b5f523360045260245ffd5b9091906001600160a01b0316801561159f57805f525f80516020611ba983398151915260205260405f2054838110611681576020845f94957fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef938587525f80516020611ba98339815191528452036040862055805f80516020611c2983398151915254035f80516020611c2983398151915255604051908152a3565b915063391434e360e21b5f5260045260245260445260645ffd5b916001600160a01b0383169182156114ab576001600160a01b0316928315611498577f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925916116ea602092611374565b855f5282528060405f2055604051908152a3565b5f80516020611c2983398151915254908282018092116117ac575f80516020611c29833981519152919091556001600160a01b0316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020908461178a57805f80516020611c2983398151915254035f80516020611c29833981519152555b604051908152a3565b8484525f80516020611ba9833981519152825260408420818154019055611781565b634e487b7160e01b5f52601160045260245ffd5b6117c8611953565b6117d0611a80565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815261182160c082611352565b51902090565b60ff5f80516020611c698339815191525460401c161561184357565b631afcd79f60e31b5f5260045ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116118d4579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156118c9575f516001600160a01b038116156118bf57905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f9160039190565b600481101561193f57806118f1575050565b600181036119085763f645eedf60e01b5f5260045ffd5b60028103611923575063fce698f760e01b5f5260045260245ffd5b60031461192d5750565b6335e2f38360e21b5f5260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b6040515f80516020611bc983398151915254905f816119718461131a565b9182825260208201946001811690815f14611a6457506001146119f9575b61199b92500382611352565b519081156119a7572090565b50507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1005480156119d45790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b505f80516020611bc98339815191525f90815290917f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d5b818310611a4857505090602061199b9282010161198f565b6020919350806001915483858801015201910190918392611a30565b60ff191686525061199b92151560051b8201602001905061198f565b6040515f80516020611c4983398151915254905f81611a9e8461131a565b9182825260208201946001811690815f14611b6c5750600114611b01575b611ac892500382611352565b51908115611ad4572090565b50507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1015480156119d45790565b505f80516020611c498339815191525f90815290917f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b755b818310611b50575050906020611ac892820101611abc565b6020919350806001915483858801015201910190918392611b38565b60ff1916865250611ac892151560051b82016020019050611abc56fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0352c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10252c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace049016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d103f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220876fa3b8d0ec6917757682c3a8181195f1246da17e840283e4106a851ed888ff64736f6c634300081a0033","sourceMap":"632:990:160:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:990:160;;;;2357:1:25;632:990:160;;:::i;:::-;2303:62:25;;:::i;:::-;2357:1;:::i;:::-;632:990:160;;;;;;;;;;;-1:-1:-1;;632:990:160;;;;;;:::i;:::-;4867:20:27;632:990:160;;:::i;:::-;4867:20:27;;:::i;:::-;:29;632:990:160;;;;;;-1:-1:-1;632:990:160;;;;;-1:-1:-1;632:990:160;;;;;;;;;;;;;;-1:-1:-1;;632:990:160;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;2301:15:29;;:26;2297:97;;6967:25:66;7021:8;632:990:160;;;;;;;;;;;;972:64:31;632:990:160;;;;;;;;;;;;;;;;2435:78:29;632:990:160;2435:78:29;;632:990:160;1279:95:29;632:990:160;;1279:95:29;632:990:160;1279:95:29;;632:990:160;;;;;;;;;1279:95:29;;632:990:160;1279:95:29;632:990:160;1279:95:29;;632:990:160;;1279:95:29;;632:990:160;;1279:95:29;;632:990:160;;2435:78:29;;;632:990:160;2435:78:29;;:::i;:::-;632:990:160;2425:89:29;;4094:23:33;;:::i;:::-;3515:233:68;632:990:160;3515:233:68;;-1:-1:-1;;;3515:233:68;;;;;;;;;;632:990:160;;;3515:233:68;632:990:160;;3515:233:68;;6967:25:66;:::i;:::-;7021:8;;;;;:::i;:::-;-1:-1:-1;;;;;632:990:160;2638:15:29;;;2634:88;;10117:4:27;;;;;:::i;2634:88:29:-;2676:35;;;;;632:990:160;2676:35:29;632:990:160;;;;;;2676:35:29;2297:97;2350:33;;;;632:990:160;2350:33:29;632:990:160;;;;2350:33:29;632:990:160;;;;;;-1:-1:-1;;632:990:160;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;4301:16:26;632:990:160;;;;4726:16:26;;:34;;;;632:990:160;4805:1:26;4790:16;:50;;;;632:990:160;4855:13:26;:30;;;;632:990:160;4851:91:26;;;-1:-1:-1;;632:990:160;;4805:1:26;632:990:160;-1:-1:-1;;;;;;;;;;;632:990:160;;4979:67:26;;632:990:160;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;632:990:160;;;;;;;;;;;:::i;:::-;821:14;632:990;;-1:-1:-1;;;632:990:160;821:14;;;6893:76:26;;:::i;:::-;;;:::i;:::-;632:990:160;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4805:1:26;632:990:160;;;;;2600:7:27;632:990:160;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;4805:1:26;632:990:160;;;;;2600:7:27;632:990:160;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;6893:76:26;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;6961:1;;;:::i;:::-;632:990:160;;;;;;;:::i;:::-;;;;-1:-1:-1;;;632:990:160;;;;6893:76:26;;:::i;:::-;632:990:160;;;;;;;:::i;:::-;4805:1:26;632:990:160;;-1:-1:-1;;;632:990:160;;;;6893:76:26;;:::i;:::-;632:990:160;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4805:1:26;632:990:160;;;;;2600:7:27;632:990:160;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;4805:1:26;632:990:160;;;;;2600:7:27;632:990:160;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;2806:64:33;632:990:160;;;3902:16:33;632:990:160;-1:-1:-1;;;;;632:990:160;;8803:21:27;8799:91;;941:9:160;8928:5:27;;;:::i;:::-;5066:101:26;;632:990:160;5066:101:26;632:990:160;;-1:-1:-1;;;;;;;;;;;632:990:160;;-1:-1:-1;;;;;;;;;;;632:990:160;5142:14:26;632:990:160;;;4805:1:26;632:990:160;;5142:14:26;632:990:160;8799:91:27;8847:32;;;632:990:160;8847:32:27;632:990:160;;;;;8847:32:27;632:990:160;;;;-1:-1:-1;632:990:160;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;;;;;;;;;;4805:1:26;632:990:160;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;;;;2600:7:27;632:990:160;;;;;;;;;;;;;;;;4805:1:26;632:990:160;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;821:14;632:990;;;;;;;;;;;;821:14;632:990;;;;;;;;;;;;;;;;4805:1:26;632:990:160;;;;;;-1:-1:-1;632:990:160;;;;;;;;;;;;;;;;;;;;-1:-1:-1;632:990:160;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;;;;;;;;;4805:1:26;632:990:160;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;;;;2600:7:27;632:990:160;;;;;;;;;;;;;;;;4805:1:26;632:990:160;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;821:14;632:990;;;;;;;;;;;;821:14;632:990;;;;;;;;;;;;;;;;4805:1:26;632:990:160;;;;;;-1:-1:-1;632:990:160;;;;;;;;-1:-1:-1;632:990:160;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;;;;;;;;;;4805:1:26;632:990:160;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;;;;2600:7:27;632:990:160;;;;;;;;;;;;;;;;4805:1:26;632:990:160;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;821:14;632:990;;;;;;;;;;;;821:14;632:990;;;;;;;;;;;;;;;;4805:1:26;632:990:160;;;;;;-1:-1:-1;632:990:160;;;;;;;;-1:-1:-1;632:990:160;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;;;;;;;;;4805:1:26;632:990:160;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;;;;2600:7:27;632:990:160;;;;;;;;;;;;;;;;4805:1:26;632:990:160;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;821:14;632:990;;;;;;;;;;;;821:14;632:990;;;;;;;;;;;;;;;;4805:1:26;632:990:160;;;;;;-1:-1:-1;632:990:160;;;;4979:67:26;-1:-1:-1;;632:990:160;;;-1:-1:-1;;;;;;;;;;;632:990:160;4979:67:26;;;4851:91;6498:23;;;632:990:160;4908:23:26;632:990:160;;4908:23:26;4855:30;4872:13;;;4855:30;;;4790:50;4818:4;4810:25;:30;;-1:-1:-1;4790:50:26;;4726:34;;;-1:-1:-1;4726:34:26;;632:990:160;;;;;;-1:-1:-1;;632:990:160;;;;4616:5:27;632:990:160;;:::i;:::-;;;966:10:30;;4616:5:27;:::i;:::-;632:990:160;;;;;;;;;;;;;-1:-1:-1;;632:990:160;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;-1:-1:-1;632:990:160;;;;;;;-1:-1:-1;632:990:160;;-1:-1:-1;632:990:160;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:990:160;;;;;;;;;;;;;;;;;;;;-1:-1:-1;632:990:160;;-1:-1:-1;632:990:160;;;;;;;;-1:-1:-1;;632:990:160;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;-1:-1:-1;;;;;632:990:160;;;;;;;;;;;;;;-1:-1:-1;;632:990:160;;;;2806:64:33;632:990:160;5777:18:33;:43;;;632:990:160;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;5965:13:33;632:990:160;;;;6000:4:33;632:990:160;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;632:990:160;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;632:990:160;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;632:990:160;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;632:990:160;;;;;;;;;;;;-1:-1:-1;;;632:990:160;;;;;;;5777:43:33;632:990:160;5799:16:33;632:990:160;5799:21:33;5777:43;;632:990:160;;;;;;-1:-1:-1;;632:990:160;;;;;;:::i;:::-;;;;;;;;;972:64:31;632:990:160;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:990:160;;;;1479:5:28;632:990:160;;:::i;:::-;;;966:10:30;1448:5:28;966:10:30;;1448:5:28;;:::i;:::-;1479;:::i;632:990:160:-;;;;;;-1:-1:-1;;632:990:160;;;;2303:62:25;;:::i;:::-;-1:-1:-1;;;;;;;;;;;632:990:160;;-1:-1:-1;;;;;;632:990:160;;;;;;;-1:-1:-1;;;;;632:990:160;3975:40:25;632:990:160;;3975:40:25;632:990:160;;;;;;;-1:-1:-1;;632:990:160;;;;-1:-1:-1;;;;;632:990:160;;:::i;:::-;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:990:160;;;;2303:62:25;;:::i;:::-;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;6431:44:26;;;;632:990:160;6427:105:26;;1427:1:160;632:990;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;6656:20:26;632:990:160;;;1427:1;632:990;;6656:20:26;632:990:160;6431:44:26;632:990:160;1427:1;632:990;;;6450:25:26;;6431:44;;632:990:160;;;;;;-1:-1:-1;;632:990:160;;;;1005:5:28;632:990:160;;966:10:30;1005:5:28;:::i;632:990:160:-;;;;;;-1:-1:-1;;632:990:160;;;;;;:::i;:::-;2303:62:25;;:::i;:::-;-1:-1:-1;;;;;632:990:160;;8803:21:27;8799:91;;8928:5;632:990:160;;;8928:5:27;;:::i;632:990:160:-;;;;;;-1:-1:-1;;632:990:160;;;;;4094:23:33;;:::i;:::-;632:990:160;;;;;;;;;;;;-1:-1:-1;;632:990:160;;;;;;;1512:2;632:990;;;;;;;;;-1:-1:-1;;632:990:160;;;;6198:5:27;632:990:160;;:::i;:::-;;;:::i;:::-;;;966:10:30;6162:5:27;966:10:30;;6162:5:27;;:::i;:::-;6198;:::i;632:990:160:-;;;;;;-1:-1:-1;;632:990:160;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;;;;;;;-1:-1:-1;;632:990:160;;;;10117:4:27;632:990:160;;:::i;:::-;;;966:10:30;;10117:4:27;:::i;632:990:160:-;;;;;;-1:-1:-1;;632:990:160;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;-1:-1:-1;632:990:160;;;;;;;-1:-1:-1;632:990:160;;-1:-1:-1;632:990:160;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;632:990:160;;;;;;;;-1:-1:-1;;632:990:160;;;;:::o;:::-;;;;-1:-1:-1;;;;;632:990:160;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;632:990:160;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;632:990:160;;;;;4867:13:27;632:990:160;;;;;;:::o;3405:215:25:-;-1:-1:-1;;;;;632:990:160;3489:22:25;;3485:91;;-1:-1:-1;;;;;;;;;;;632:990:160;;-1:-1:-1;;;;;;632:990:160;;;;;;;-1:-1:-1;;;;;632:990:160;3975:40:25;-1:-1:-1;;3975:40:25;3405:215::o;3485:91::-;3534:31;;;3509:1;3534:31;3509:1;3534:31;632:990:160;;3509:1:25;3534:31;11745:477:27;;;4867:20;;;:::i;:::-;632:990:160;;;;;;;-1:-1:-1;632:990:160;;;;-1:-1:-1;632:990:160;;;;;11910:37:27;;11906:310;;11745:477;;;;;:::o;11906:310::-;11967:24;;;11963:130;;-1:-1:-1;;;;;632:990:160;;11141:19:27;11137:89;;-1:-1:-1;;;;;632:990:160;;11239:21:27;11235:90;;11334:20;;;:::i;:::-;:29;632:990:160;;;;;;-1:-1:-1;632:990:160;;;;-1:-1:-1;632:990:160;;;;;11906:310:27;;;;;;11235:90;11283:31;;;-1:-1:-1;11283:31:27;-1:-1:-1;11283:31:27;632:990:160;;-1:-1:-1;11283:31:27;11137:89;11183:32;;;-1:-1:-1;11183:32:27;-1:-1:-1;11183:32:27;632:990:160;;-1:-1:-1;11183:32:27;11963:130;12018:60;;;;;;-1:-1:-1;12018:60:27;632:990:160;;;;;;12018:60:27;632:990:160;;;;;;-1:-1:-1;12018:60:27;6605:300;-1:-1:-1;;;;;632:990:160;;6688:18:27;;6684:86;;-1:-1:-1;;;;;632:990:160;;6783:16:27;;6779:86;;632:990:160;6704:1:27;632:990:160;-1:-1:-1;;;;;;;;;;;632:990:160;;;6704:1:27;632:990:160;;7609:19:27;;;7605:115;;632:990:160;8358:25:27;632:990:160;;;;6704:1:27;632:990:160;-1:-1:-1;;;;;;;;;;;632:990:160;;;;6704:1:27;632:990:160;;;6704:1:27;632:990:160;-1:-1:-1;;;;;;;;;;;632:990:160;;;6704:1:27;632:990:160;;;;;;;;;;;;8358:25:27;6605:300::o;7605:115::-;7655:50;;;;6704:1;7655:50;;632:990:160;;;;;;6704:1:27;7655:50;6684:86;6729:30;;;6704:1;6729:30;6704:1;6729:30;632:990:160;;6704:1:27;6729:30;2658:162:25;-1:-1:-1;;;;;;;;;;;632:990:160;-1:-1:-1;;;;;632:990:160;966:10:30;2717:23:25;2713:101;;2658:162::o;2713:101::-;2763:40;;;-1:-1:-1;2763:40:25;966:10:30;2763:40:25;632:990:160;;-1:-1:-1;2763:40:25;9259:206:27;;;;-1:-1:-1;;;;;632:990:160;9329:21:27;;9325:89;;632:990:160;9348:1:27;632:990:160;-1:-1:-1;;;;;;;;;;;632:990:160;;;9348:1:27;632:990:160;;7609:19:27;;;7605:115;;632:990:160;;9348:1:27;632:990:160;;8358:25:27;632:990:160;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;8358:25:27;9259:206::o;7605:115::-;7655:50;;;;;9348:1;7655:50;;632:990:160;;;;;;9348:1:27;7655:50;10976:487;;-1:-1:-1;;;;;632:990:160;;;11141:19:27;;11137:89;;-1:-1:-1;;;;;632:990:160;;11239:21:27;;11235:90;;11415:31;11334:20;;632:990:160;11334:20:27;;:::i;:::-;632:990:160;-1:-1:-1;632:990:160;;;;;-1:-1:-1;632:990:160;;;;;;;11415:31:27;10976:487::o;7220:1170::-;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;-1:-1:-1;;;;;632:990:160;;;;8358:25:27;;632:990:160;;7918:16:27;632:990:160;;;-1:-1:-1;;;;;;;;;;;632:990:160;;-1:-1:-1;;;;;;;;;;;632:990:160;7914:429:27;632:990:160;;;;;8358:25:27;7220:1170::o;7914:429::-;632:990:160;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;;;;;7914:429:27;;632:990:160;;;;;941:9;;;;;632:990;941:9;4130:191:33;4243:17;;:::i;:::-;4262:20;;:::i;:::-;632:990:160;;4221:92:33;;;;632:990:160;2073:95:33;632:990:160;;;2073:95:33;;632:990:160;2073:95:33;;;632:990:160;4284:13:33;2073:95;;;632:990:160;4307:4:33;2073:95;;;632:990:160;2073:95:33;4221:92;;;;;;:::i;:::-;632:990:160;4211:103:33;;4130:191;:::o;7084:141:26:-;632:990:160;-1:-1:-1;;;;;;;;;;;632:990:160;;;;7150:18:26;7146:73;;7084:141::o;7146:73::-;7191:17;;;-1:-1:-1;7191:17:26;;-1:-1:-1;7191:17:26;5140:1530:66;;;6199:66;6186:79;;6182:164;;632:990:160;;;;;;-1:-1:-1;632:990:160;;;;;;;;;;;;;;;;;;;6457:24:66;;;;;;;;;-1:-1:-1;6457:24:66;-1:-1:-1;;;;;632:990:160;;6495:20:66;6491:113;;6614:49;-1:-1:-1;6614:49:66;-1:-1:-1;5140:1530:66;:::o;6491:113::-;6531:62;-1:-1:-1;6531:62:66;6457:24;6531:62;-1:-1:-1;6531:62:66;:::o;6457:24::-;632:990:160;;;-1:-1:-1;632:990:160;;;;;6182:164:66;6281:54;;;6297:1;6281:54;6301:30;6281:54;;:::o;7196:532::-;632:990:160;;;;;;7282:29:66;;;7327:7;;:::o;7278:444::-;632:990:160;7378:38:66;;632:990:160;;7439:23:66;;;7291:20;7439:23;632:990:160;7291:20:66;7439:23;7374:348;7492:35;7483:44;;7492:35;;7550:46;;;;7291:20;7550:46;632:990:160;;;7291:20:66;7550:46;7479:243;7626:30;7617:39;7613:109;;7479:243;7196:532::o;7613:109::-;7679:32;;;7291:20;7679:32;632:990:160;;;7291:20:66;7679:32;632:990:160;;;;7291:20:66;632:990:160;;;;;7291:20:66;632:990:160;7058:687:33;632:990:160;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;7230:22:33;;;;7275;7268:29;:::o;7226:513::-;-1:-1:-1;;2806:64:33;632:990:160;7603:15:33;;;;7638:17;:::o;7599:130::-;7694:20;7701:13;7694:20;:::o;632:990:160:-;-1:-1:-1;;;;;;;;;;;;632:990:160;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:990:160;;;-1:-1:-1;632:990:160;;;;;;;;;;;-1:-1:-1;632:990:160;;7966:723:33;632:990:160;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;8147:25:33;;;;8195;8188:32;:::o;8143:540::-;-1:-1:-1;;8507:16:33;632:990:160;8541:18:33;;;;8579:20;:::o;632:990:160:-;-1:-1:-1;;;;;;;;;;;;632:990:160;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:990:160;;;-1:-1:-1;632:990:160;;;;;;;;;;;-1:-1:-1;632:990:160;","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\":\"pure\",\"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-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/\",\":symbiotic-core/=lib/symbiotic-core/\"],\"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\":\"0x3e0983635bf88ee5284c4385c01431135b7eec294e2f1c0d22bc2dddc16790dd\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0302725cd5b1bd6afacebd0d30d445bb1c86152745b6de42dc1a66a570b42718\",\"dweb:/ipfs/QmVCurygXE5PV65uvC12ybtXYpL292PMmEUPnbRtGbAY1V\"]}},\"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":"pure","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-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/","symbiotic-core/=lib/symbiotic-core/"],"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":"0x3e0983635bf88ee5284c4385c01431135b7eec294e2f1c0d22bc2dddc16790dd","urls":["bzz-raw://0302725cd5b1bd6afacebd0d30d445bb1c86152745b6de42dc1a66a570b42718","dweb:/ipfs/QmVCurygXE5PV65uvC12ybtXYpL292PMmEUPnbRtGbAY1V"],"license":"UNLICENSED"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"src/WrappedVara.sol","id":76935,"exportedSymbols":{"ERC20BurnableUpgradeable":[40320],"ERC20PermitUpgradeable":[40489],"ERC20Upgradeable":[40258],"Initializable":[39641],"OwnableUpgradeable":[39387],"WrappedVara":[76934]},"nodeType":"SourceUnit","src":"39:1584:160","nodes":[{"id":76829,"nodeType":"PragmaDirective","src":"39:24:160","nodes":[],"literals":["solidity","^","0.8",".26"]},{"id":76831,"nodeType":"ImportDirective","src":"65:96:160","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","nameLocation":"-1:-1:-1","scope":76935,"sourceUnit":39642,"symbolAliases":[{"foreign":{"id":76830,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39641,"src":"73:13:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":76833,"nodeType":"ImportDirective","src":"162:102:160","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","nameLocation":"-1:-1:-1","scope":76935,"sourceUnit":40259,"symbolAliases":[{"foreign":{"id":76832,"name":"ERC20Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40258,"src":"170:16:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":76835,"nodeType":"ImportDirective","src":"265:133:160","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":76935,"sourceUnit":40321,"symbolAliases":[{"foreign":{"id":76834,"name":"ERC20BurnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40320,"src":"273:24:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":76837,"nodeType":"ImportDirective","src":"399:101:160","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":76935,"sourceUnit":39388,"symbolAliases":[{"foreign":{"id":76836,"name":"OwnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39387,"src":"407:18:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":76839,"nodeType":"ImportDirective","src":"501:129:160","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":76935,"sourceUnit":40490,"symbolAliases":[{"foreign":{"id":76838,"name":"ERC20PermitUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40489,"src":"509:22:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":76934,"nodeType":"ContractDefinition","src":"632:990:160","nodes":[{"id":76852,"nodeType":"VariableDeclaration","src":"784:51:160","nodes":[],"constant":true,"mutability":"constant","name":"TOKEN_NAME","nameLocation":"808:10:160","scope":76934,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":76850,"name":"string","nodeType":"ElementaryTypeName","src":"784:6:160","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"577261707065642056617261","id":76851,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"821:14:160","typeDescriptions":{"typeIdentifier":"t_stringliteral_985e2e9885ca23de2896caee5fad5adf116e2558361aa44c502ff8b2c1b2a41b","typeString":"literal_string \"Wrapped Vara\""},"value":"Wrapped Vara"},"visibility":"private"},{"id":76855,"nodeType":"VariableDeclaration","src":"841:46:160","nodes":[],"constant":true,"mutability":"constant","name":"TOKEN_SYMBOL","nameLocation":"865:12:160","scope":76934,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":76853,"name":"string","nodeType":"ElementaryTypeName","src":"841:6:160","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"5756415241","id":76854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"880:7:160","typeDescriptions":{"typeIdentifier":"t_stringliteral_203a7c23d1b412674989fae6808de72f52c6953d49ac548796ba3c05451693a4","typeString":"literal_string \"WVARA\""},"value":"WVARA"},"visibility":"private"},{"id":76858,"nodeType":"VariableDeclaration","src":"893:57:160","nodes":[],"constant":true,"mutability":"constant","name":"TOKEN_INITIAL_SUPPLY","nameLocation":"918:20:160","scope":76934,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76856,"name":"uint256","nodeType":"ElementaryTypeName","src":"893:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"315f3030305f303030","id":76857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"941:9:160","typeDescriptions":{"typeIdentifier":"t_rational_1000000_by_1","typeString":"int_const 1000000"},"value":"1_000_000"},"visibility":"private"},{"id":76866,"nodeType":"FunctionDefinition","src":"1010:53:160","nodes":[],"body":{"id":76865,"nodeType":"Block","src":"1024:39:160","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":76862,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39609,"src":"1034:20:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":76863,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1034:22:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76864,"nodeType":"ExpressionStatement","src":"1034:22:160"}]},"documentation":{"id":76859,"nodeType":"StructuredDocumentation","src":"957:48:160","text":"@custom:oz-upgrades-unsafe-allow constructor"},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":76860,"nodeType":"ParameterList","parameters":[],"src":"1021:2:160"},"returnParameters":{"id":76861,"nodeType":"ParameterList","parameters":[],"src":"1024:0:160"},"scope":76934,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":76900,"nodeType":"FunctionDefinition","src":"1069:297:160","nodes":[],"body":{"id":76899,"nodeType":"Block","src":"1130:236:160","nodes":[],"statements":[{"expression":{"arguments":[{"id":76874,"name":"TOKEN_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76852,"src":"1153:10:160","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":76875,"name":"TOKEN_SYMBOL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76855,"src":"1165:12:160","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":76873,"name":"__ERC20_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39709,"src":"1140:12:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":76876,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1140:38:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76877,"nodeType":"ExpressionStatement","src":"1140:38:160"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":76878,"name":"__ERC20Burnable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40279,"src":"1188:20:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":76879,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1188:22:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76880,"nodeType":"ExpressionStatement","src":"1188:22:160"},{"expression":{"arguments":[{"id":76882,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76868,"src":"1235:12:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76881,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39247,"src":"1220:14:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":76883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1220:28:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76884,"nodeType":"ExpressionStatement","src":"1220:28:160"},{"expression":{"arguments":[{"id":76886,"name":"TOKEN_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76852,"src":"1277:10:160","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":76885,"name":"__ERC20Permit_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40376,"src":"1258:18:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":76887,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1258:30:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76888,"nodeType":"ExpressionStatement","src":"1258:30:160"},{"expression":{"arguments":[{"id":76890,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76868,"src":"1305:12:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76891,"name":"TOKEN_INITIAL_SUPPLY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76858,"src":"1319:20:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":76892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1342:2:160","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":76893,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[76918],"referencedDeclaration":76918,"src":"1348:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_uint8_$","typeString":"function () pure returns (uint8)"}},"id":76894,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1348:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1342:16:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1319:39:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":76889,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40090,"src":"1299:5:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":76897,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1299:60:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76898,"nodeType":"ExpressionStatement","src":"1299:60:160"}]},"functionSelector":"c4d66de8","implemented":true,"kind":"function","modifiers":[{"id":76871,"kind":"modifierInvocation","modifierName":{"id":76870,"name":"initializer","nameLocations":["1118:11:160"],"nodeType":"IdentifierPath","referencedDeclaration":39495,"src":"1118:11:160"},"nodeType":"ModifierInvocation","src":"1118:11:160"}],"name":"initialize","nameLocation":"1078:10:160","parameters":{"id":76869,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76868,"mutability":"mutable","name":"initialOwner","nameLocation":"1097:12:160","nodeType":"VariableDeclaration","scope":76900,"src":"1089:20:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76867,"name":"address","nodeType":"ElementaryTypeName","src":"1089:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1088:22:160"},"returnParameters":{"id":76872,"nodeType":"ParameterList","parameters":[],"src":"1130:0:160"},"scope":76934,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":76909,"nodeType":"FunctionDefinition","src":"1372:60:160","nodes":[],"body":{"id":76908,"nodeType":"Block","src":"1430:2:160","nodes":[],"statements":[]},"functionSelector":"6c2eb350","implemented":true,"kind":"function","modifiers":[{"id":76903,"kind":"modifierInvocation","modifierName":{"id":76902,"name":"onlyOwner","nameLocations":["1403:9:160"],"nodeType":"IdentifierPath","referencedDeclaration":39282,"src":"1403:9:160"},"nodeType":"ModifierInvocation","src":"1403:9:160"},{"arguments":[{"hexValue":"32","id":76905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1427:1:160","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"id":76906,"kind":"modifierInvocation","modifierName":{"id":76904,"name":"reinitializer","nameLocations":["1413:13:160"],"nodeType":"IdentifierPath","referencedDeclaration":39542,"src":"1413:13:160"},"nodeType":"ModifierInvocation","src":"1413:16:160"}],"name":"reinitialize","nameLocation":"1381:12:160","parameters":{"id":76901,"nodeType":"ParameterList","parameters":[],"src":"1393:2:160"},"returnParameters":{"id":76907,"nodeType":"ParameterList","parameters":[],"src":"1430:0:160"},"scope":76934,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":76918,"nodeType":"FunctionDefinition","src":"1438:83:160","nodes":[],"body":{"id":76917,"nodeType":"Block","src":"1495:26:160","nodes":[],"statements":[{"expression":{"hexValue":"3132","id":76915,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1512:2:160","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"value":"12"},"functionReturnParameters":76914,"id":76916,"nodeType":"Return","src":"1505:9:160"}]},"baseFunctions":[39778],"functionSelector":"313ce567","implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"1447:8:160","overrides":{"id":76911,"nodeType":"OverrideSpecifier","overrides":[],"src":"1470:8:160"},"parameters":{"id":76910,"nodeType":"ParameterList","parameters":[],"src":"1455:2:160"},"returnParameters":{"id":76914,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76913,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":76918,"src":"1488:5:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":76912,"name":"uint8","nodeType":"ElementaryTypeName","src":"1488:5:160","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"1487:7:160"},"scope":76934,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":76933,"nodeType":"FunctionDefinition","src":"1527:93:160","nodes":[],"body":{"id":76932,"nodeType":"Block","src":"1586:34:160","nodes":[],"statements":[{"expression":{"arguments":[{"id":76928,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76920,"src":"1602:2:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":76929,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76922,"src":"1606:6:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":76927,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40090,"src":"1596:5:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":76930,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1596:17:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76931,"nodeType":"ExpressionStatement","src":"1596:17:160"}]},"functionSelector":"40c10f19","implemented":true,"kind":"function","modifiers":[{"id":76925,"kind":"modifierInvocation","modifierName":{"id":76924,"name":"onlyOwner","nameLocations":["1576:9:160"],"nodeType":"IdentifierPath","referencedDeclaration":39282,"src":"1576:9:160"},"nodeType":"ModifierInvocation","src":"1576:9:160"}],"name":"mint","nameLocation":"1536:4:160","parameters":{"id":76923,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76920,"mutability":"mutable","name":"to","nameLocation":"1549:2:160","nodeType":"VariableDeclaration","scope":76933,"src":"1541:10:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76919,"name":"address","nodeType":"ElementaryTypeName","src":"1541:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76922,"mutability":"mutable","name":"amount","nameLocation":"1561:6:160","nodeType":"VariableDeclaration","scope":76933,"src":"1553:14:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76921,"name":"uint256","nodeType":"ElementaryTypeName","src":"1553:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1540:28:160"},"returnParameters":{"id":76926,"nodeType":"ParameterList","parameters":[],"src":"1586:0:160"},"scope":76934,"stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":76840,"name":"Initializable","nameLocations":["660:13:160"],"nodeType":"IdentifierPath","referencedDeclaration":39641,"src":"660:13:160"},"id":76841,"nodeType":"InheritanceSpecifier","src":"660:13:160"},{"baseName":{"id":76842,"name":"ERC20Upgradeable","nameLocations":["679:16:160"],"nodeType":"IdentifierPath","referencedDeclaration":40258,"src":"679:16:160"},"id":76843,"nodeType":"InheritanceSpecifier","src":"679:16:160"},{"baseName":{"id":76844,"name":"ERC20BurnableUpgradeable","nameLocations":["701:24:160"],"nodeType":"IdentifierPath","referencedDeclaration":40320,"src":"701:24:160"},"id":76845,"nodeType":"InheritanceSpecifier","src":"701:24:160"},{"baseName":{"id":76846,"name":"OwnableUpgradeable","nameLocations":["731:18:160"],"nodeType":"IdentifierPath","referencedDeclaration":39387,"src":"731:18:160"},"id":76847,"nodeType":"InheritanceSpecifier","src":"731:18:160"},{"baseName":{"id":76848,"name":"ERC20PermitUpgradeable","nameLocations":["755:22:160"],"nodeType":"IdentifierPath","referencedDeclaration":40489,"src":"755:22:160"},"id":76849,"nodeType":"InheritanceSpecifier","src":"755:22:160"}],"canonicalName":"WrappedVara","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[76934,40489,40646,41119,41540,43202,39387,40320,40258,41582,43166,43140,40535,39641],"name":"WrappedVara","nameLocation":"641:11:160","scope":76935,"usedErrors":[39223,39228,39404,39407,40355,40362,40549,41552,41557,41562,41571,41576,41581,44912,44917,44922],"usedEvents":[39234,39412,41520,43074,43083]}],"license":"UNLICENSED"},"id":160} \ 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":"pure"},{"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":"0x6080806040523460aa575f516020611d6d5f395f51905f525460ff8160401c16609b576002600160401b03196001600160401b038216016049575b604051611cbe90816100af8239f35b6001600160401b0319166001600160401b039081175f516020611d6d5f395f51905f525581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80603a565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c806306fdde031461120d578063095ea7b3146111e757806318160ddd146111be57806323b872dd14611186578063313ce5671461116b5780633644e5151461114957806340c10f191461110c57806342966c68146110ef5780636c2eb3501461105557806370a0823114611011578063715018a614610faa57806379cc679014610f7a5780637ecebe0014610f2457806384b0196e14610c505780638da5cb5b14610c1c57806395d89b4114610b22578063a9059cbb14610af1578063c4d66de8146102d8578063d505accf14610176578063dd62ed3e1461012f5763f2fde38b14610100575f80fd5b3461012b57602036600319011261012b5761012961011c6112ee565b6101246115b2565b6113ac565b005b5f80fd5b3461012b57604036600319011261012b576101486112ee565b610159610153611304565b91611374565b9060018060a01b03165f52602052602060405f2054604051908152f35b3461012b5760e036600319011261012b5761018f6112ee565b610197611304565b604435906064359260843560ff8116810361012b578442116102c55761028a6102939160018060a01b03841696875f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0060205260405f20908154916001830190556040519060208201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c984528a604084015260018060a01b038916606084015289608084015260a083015260c082015260c0815261025860e082611352565b5190206102636117c0565b906040519161190160f01b83526002830152602282015260c43591604260a4359220611852565b909291926118df565b6001600160a01b03168481036102ae5750610129935061169b565b84906325c0072360e11b5f5260045260245260445ffd5b8463313c898160e11b5f5260045260245ffd5b3461012b57602036600319011261012b576102f16112ee565b5f516020611c695f395f51905f52549060ff8260401c16159167ffffffffffffffff811680159081610ae9575b6001149081610adf575b159081610ad6575b50610ac75767ffffffffffffffff1981166001175f516020611c695f395f51905f525582610a9b575b5060405191610369604084611352565b600c83526b57726170706564205661726160a01b602084015260405191610391604084611352565b6005835264575641524160d81b60208401526103ab611827565b6103b3611827565b835167ffffffffffffffff81116107a8576103db5f516020611b895f395f51905f525461131a565b601f8111610a2c575b50602094601f82116001146109b1579481929394955f926109a6575b50508160011b915f199060031b1c1916175f516020611b895f395f51905f52555b825167ffffffffffffffff81116107a8576104495f516020611be95f395f51905f525461131a565b601f8111610937575b506020601f82116001146108bc57819293945f926108b1575b50508160011b915f199060031b1c1916175f516020611be95f395f51905f52555b610494611827565b61049c611827565b6104a4611827565b6104ad816113ac565b604051916104bc604084611352565b600c83526b57726170706564205661726160a01b60208401526104dd611827565b604051916104ec604084611352565b60018352603160f81b6020840152610502611827565b835167ffffffffffffffff81116107a85761052a5f516020611bc95f395f51905f525461131a565b601f8111610842575b50602094601f82116001146107c7579481929394955f926107bc575b50508160011b915f199060031b1c1916175f516020611bc95f395f51905f52555b825167ffffffffffffffff81116107a8576105985f516020611c495f395f51905f525461131a565b601f8111610739575b506020601f82116001146106be57819293945f926106b3575b50508160011b915f199060031b1c1916175f516020611c495f395f51905f52555b5f7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1008190557fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d101556001600160a01b038116156106a057670de0b6b3a7640000610643916116fe565b61064957005b68ff0000000000000000195f516020611c695f395f51905f5254165f516020611c695f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b63ec442f0560e01b5f525f60045260245ffd5b0151905084806105ba565b601f198216905f516020611c495f395f51905f525f52805f20915f5b81811061072157509583600195969710610709575b505050811b015f516020611c495f395f51905f52556105db565b01515f1960f88460031b161c191690558480806106ef565b9192602060018192868b0151815501940192016106da565b5f516020611c495f395f51905f525f527f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b75601f830160051c8101916020841061079e575b601f0160051c01905b81811061079357506105a1565b5f8155600101610786565b909150819061077d565b634e487b7160e01b5f52604160045260245ffd5b01519050858061054f565b601f198216955f516020611bc95f395f51905f525f52805f20915f5b88811061082a57508360019596979810610812575b505050811b015f516020611bc95f395f51905f5255610570565b01515f1960f88460031b161c191690558580806107f8565b919260206001819286850151815501940192016107e3565b5f516020611bc95f395f51905f525f527f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d601f830160051c810191602084106108a7575b601f0160051c01905b81811061089c5750610533565b5f815560010161088f565b9091508190610886565b01519050848061046b565b601f198216905f516020611be95f395f51905f525f52805f20915f5b81811061091f57509583600195969710610907575b505050811b015f516020611be95f395f51905f525561048c565b01515f1960f88460031b161c191690558480806108ed565b9192602060018192868b0151815501940192016108d8565b5f516020611be95f395f51905f525f527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa601f830160051c8101916020841061099c575b601f0160051c01905b8181106109915750610452565b5f8155600101610984565b909150819061097b565b015190508580610400565b601f198216955f516020611b895f395f51905f525f52805f20915f5b888110610a14575083600195969798106109fc575b505050811b015f516020611b895f395f51905f5255610421565b01515f1960f88460031b161c191690558580806109e2565b919260206001819286850151815501940192016109cd565b5f516020611b895f395f51905f525f527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0601f830160051c81019160208410610a91575b601f0160051c01905b818110610a8657506103e4565b5f8155600101610a79565b9091508190610a70565b68ffffffffffffffffff191668010000000000000001175f516020611c695f395f51905f525582610359565b63f92ee8a960e01b5f5260045ffd5b90501584610330565b303b159150610328565b84915061031e565b3461012b57604036600319011261012b57610b17610b0d6112ee565b60243590336114e1565b602060405160018152f35b3461012b575f36600319011261012b576040515f5f516020611be95f395f51905f5254610b4e8161131a565b8084529060018116908115610bf85750600114610b8e575b610b8a83610b7681850382611352565b6040519182916020835260208301906112ca565b0390f35b5f516020611be95f395f51905f525f9081527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa939250905b808210610bde57509091508101602001610b76610b66565b919260018160209254838588010152019101909291610bc6565b60ff191660208086019190915291151560051b84019091019150610b769050610b66565b3461012b575f36600319011261012b575f516020611c095f395f51905f52546040516001600160a01b039091168152602090f35b3461012b575f36600319011261012b577fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100541580610efb575b15610ebe576040515f516020611bc95f395f51905f5254815f610cab8361131a565b8083529260018116908115610e9f5750600114610e34575b610ccf92500382611352565b6040515f516020611c495f395f51905f5254815f610cec8361131a565b8083529260018116908115610e155750600114610daa575b610d1791925092610d4e94930382611352565b6020610d5c60405192610d2a8385611352565b5f84525f368137604051958695600f60f81b875260e08588015260e08701906112ca565b9085820360408701526112ca565b4660608501523060808501525f60a085015283810360c08501528180845192838152019301915f5b828110610d9357505050500390f35b835185528695509381019392810192600101610d84565b505f516020611c495f395f51905f525f90815290917f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b755b818310610df9575050906020610d1792820101610d04565b6020919350806001915483858801015201910190918392610de1565b60209250610d1794915060ff191682840152151560051b820101610d04565b505f516020611bc95f395f51905f525f90815290917f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d5b818310610e83575050906020610ccf92820101610cc3565b6020919350806001915483858801015201910190918392610e6b565b60209250610ccf94915060ff191682840152151560051b820101610cc3565b60405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606490fd5b507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1015415610c89565b3461012b57602036600319011261012b57610f3d6112ee565b60018060a01b03165f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00602052602060405f2054604051908152f35b3461012b57604036600319011261012b57610129610f966112ee565b60243590610fa582338361141d565b6115e5565b3461012b575f36600319011261012b57610fc26115b2565b5f516020611c095f395f51905f5280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461012b57602036600319011261012b576001600160a01b036110326112ee565b165f525f516020611ba95f395f51905f52602052602060405f2054604051908152f35b3461012b575f36600319011261012b5761106d6115b2565b5f516020611c695f395f51905f525460ff8160401c1680156110da575b610ac75760029068ffffffffffffffffff1916175f516020611c695f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160028152a1005b50600267ffffffffffffffff8216101561108a565b3461012b57602036600319011261012b57610129600435336115e5565b3461012b57604036600319011261012b576111256112ee565b61112d6115b2565b6001600160a01b038116156106a05761012990602435906116fe565b3461012b575f36600319011261012b5760206111636117c0565b604051908152f35b3461012b575f36600319011261012b576020604051600c8152f35b3461012b57606036600319011261012b57610b176111a26112ee565b6111aa611304565b604435916111b983338361141d565b6114e1565b3461012b575f36600319011261012b5760205f516020611c295f395f51905f5254604051908152f35b3461012b57604036600319011261012b57610b176112036112ee565b602435903361169b565b3461012b575f36600319011261012b576040515f5f516020611b895f395f51905f52546112398161131a565b8084529060018116908115610bf8575060011461126057610b8a83610b7681850382611352565b5f516020611b895f395f51905f525f9081527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0939250905b8082106112b057509091508101602001610b76610b66565b919260018160209254838588010152019101909291611298565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361012b57565b602435906001600160a01b038216820361012b57565b90600182811c92168015611348575b602083101461133457565b634e487b7160e01b5f52602260045260245ffd5b91607f1691611329565b90601f8019910116810190811067ffffffffffffffff8211176107a857604052565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020526040902090565b6001600160a01b0316801561140a575f516020611c095f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b919061142883611374565b60018060a01b0382165f5260205260405f2054925f19840361144b575b50505050565b8284106114be576001600160a01b038116156114ab576001600160a01b038216156114985761147990611374565b9060018060a01b03165f5260205260405f20910390555f808080611445565b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b508290637dc7a0d960e11b5f5260018060a01b031660045260245260445260645ffd5b6001600160a01b031690811561159f576001600160a01b03169182156106a057815f525f516020611ba95f395f51905f5260205260405f205481811061158657817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f516020611ba95f395f51905f5284520360405f2055845f525f516020611ba95f395f51905f52825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b634b637e8f60e11b5f525f60045260245ffd5b5f516020611c095f395f51905f52546001600160a01b031633036115d257565b63118cdaa760e01b5f523360045260245ffd5b9091906001600160a01b0316801561159f57805f525f516020611ba95f395f51905f5260205260405f2054838110611681576020845f94957fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef938587525f516020611ba95f395f51905f528452036040862055805f516020611c295f395f51905f5254035f516020611c295f395f51905f5255604051908152a3565b915063391434e360e21b5f5260045260245260445260645ffd5b916001600160a01b0383169182156114ab576001600160a01b0316928315611498577f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925916116ea602092611374565b855f5282528060405f2055604051908152a3565b5f516020611c295f395f51905f5254908282018092116117ac575f516020611c295f395f51905f52919091556001600160a01b0316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020908461178a57805f516020611c295f395f51905f5254035f516020611c295f395f51905f52555b604051908152a3565b8484525f516020611ba95f395f51905f52825260408420818154019055611781565b634e487b7160e01b5f52601160045260245ffd5b6117c8611953565b6117d0611a80565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815261182160c082611352565b51902090565b60ff5f516020611c695f395f51905f525460401c161561184357565b631afcd79f60e31b5f5260045ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116118d4579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156118c9575f516001600160a01b038116156118bf57905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f9160039190565b600481101561193f57806118f1575050565b600181036119085763f645eedf60e01b5f5260045ffd5b60028103611923575063fce698f760e01b5f5260045260245ffd5b60031461192d5750565b6335e2f38360e21b5f5260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b6040515f516020611bc95f395f51905f5254905f816119718461131a565b9182825260208201946001811690815f14611a6457506001146119f9575b61199b92500382611352565b519081156119a7572090565b50507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1005480156119d45790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b505f516020611bc95f395f51905f525f90815290917f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d5b818310611a4857505090602061199b9282010161198f565b6020919350806001915483858801015201910190918392611a30565b60ff191686525061199b92151560051b8201602001905061198f565b6040515f516020611c495f395f51905f5254905f81611a9e8461131a565b9182825260208201946001811690815f14611b6c5750600114611b01575b611ac892500382611352565b51908115611ad4572090565b50507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1015480156119d45790565b505f516020611c495f395f51905f525f90815290917f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b755b818310611b50575050906020611ac892820101611abc565b6020919350806001915483858801015201910190918392611b38565b60ff1916865250611ac892151560051b82016020019050611abc56fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0352c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10252c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace049016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d103f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212203ce164046c34e3abbf805b23e3f25930a1466a485bfda7a2369c75651fa3cfbd64736f6c634300081c0033f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00","sourceMap":"632:990:160:-:0;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;7896:76:26;;-1:-1:-1;;;;;;;;;;;632:990:160;;7985:34:26;7981:146;;-1:-1:-1;632:990:160;;;;;;;;;7981:146:26;-1:-1:-1;;;;;;632:990:160;-1:-1:-1;;;;;632:990:160;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;8087:29:26;;632:990:160;;8087:29:26;7981:146;;;;7896:76;7938:23;;;-1:-1:-1;7938:23:26;;-1:-1:-1;7938:23:26;632:990:160;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806306fdde031461120d578063095ea7b3146111e757806318160ddd146111be57806323b872dd14611186578063313ce5671461116b5780633644e5151461114957806340c10f191461110c57806342966c68146110ef5780636c2eb3501461105557806370a0823114611011578063715018a614610faa57806379cc679014610f7a5780637ecebe0014610f2457806384b0196e14610c505780638da5cb5b14610c1c57806395d89b4114610b22578063a9059cbb14610af1578063c4d66de8146102d8578063d505accf14610176578063dd62ed3e1461012f5763f2fde38b14610100575f80fd5b3461012b57602036600319011261012b5761012961011c6112ee565b6101246115b2565b6113ac565b005b5f80fd5b3461012b57604036600319011261012b576101486112ee565b610159610153611304565b91611374565b9060018060a01b03165f52602052602060405f2054604051908152f35b3461012b5760e036600319011261012b5761018f6112ee565b610197611304565b604435906064359260843560ff8116810361012b578442116102c55761028a6102939160018060a01b03841696875f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0060205260405f20908154916001830190556040519060208201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c984528a604084015260018060a01b038916606084015289608084015260a083015260c082015260c0815261025860e082611352565b5190206102636117c0565b906040519161190160f01b83526002830152602282015260c43591604260a4359220611852565b909291926118df565b6001600160a01b03168481036102ae5750610129935061169b565b84906325c0072360e11b5f5260045260245260445ffd5b8463313c898160e11b5f5260045260245ffd5b3461012b57602036600319011261012b576102f16112ee565b5f516020611c695f395f51905f52549060ff8260401c16159167ffffffffffffffff811680159081610ae9575b6001149081610adf575b159081610ad6575b50610ac75767ffffffffffffffff1981166001175f516020611c695f395f51905f525582610a9b575b5060405191610369604084611352565b600c83526b57726170706564205661726160a01b602084015260405191610391604084611352565b6005835264575641524160d81b60208401526103ab611827565b6103b3611827565b835167ffffffffffffffff81116107a8576103db5f516020611b895f395f51905f525461131a565b601f8111610a2c575b50602094601f82116001146109b1579481929394955f926109a6575b50508160011b915f199060031b1c1916175f516020611b895f395f51905f52555b825167ffffffffffffffff81116107a8576104495f516020611be95f395f51905f525461131a565b601f8111610937575b506020601f82116001146108bc57819293945f926108b1575b50508160011b915f199060031b1c1916175f516020611be95f395f51905f52555b610494611827565b61049c611827565b6104a4611827565b6104ad816113ac565b604051916104bc604084611352565b600c83526b57726170706564205661726160a01b60208401526104dd611827565b604051916104ec604084611352565b60018352603160f81b6020840152610502611827565b835167ffffffffffffffff81116107a85761052a5f516020611bc95f395f51905f525461131a565b601f8111610842575b50602094601f82116001146107c7579481929394955f926107bc575b50508160011b915f199060031b1c1916175f516020611bc95f395f51905f52555b825167ffffffffffffffff81116107a8576105985f516020611c495f395f51905f525461131a565b601f8111610739575b506020601f82116001146106be57819293945f926106b3575b50508160011b915f199060031b1c1916175f516020611c495f395f51905f52555b5f7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1008190557fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d101556001600160a01b038116156106a057670de0b6b3a7640000610643916116fe565b61064957005b68ff0000000000000000195f516020611c695f395f51905f5254165f516020611c695f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b63ec442f0560e01b5f525f60045260245ffd5b0151905084806105ba565b601f198216905f516020611c495f395f51905f525f52805f20915f5b81811061072157509583600195969710610709575b505050811b015f516020611c495f395f51905f52556105db565b01515f1960f88460031b161c191690558480806106ef565b9192602060018192868b0151815501940192016106da565b5f516020611c495f395f51905f525f527f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b75601f830160051c8101916020841061079e575b601f0160051c01905b81811061079357506105a1565b5f8155600101610786565b909150819061077d565b634e487b7160e01b5f52604160045260245ffd5b01519050858061054f565b601f198216955f516020611bc95f395f51905f525f52805f20915f5b88811061082a57508360019596979810610812575b505050811b015f516020611bc95f395f51905f5255610570565b01515f1960f88460031b161c191690558580806107f8565b919260206001819286850151815501940192016107e3565b5f516020611bc95f395f51905f525f527f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d601f830160051c810191602084106108a7575b601f0160051c01905b81811061089c5750610533565b5f815560010161088f565b9091508190610886565b01519050848061046b565b601f198216905f516020611be95f395f51905f525f52805f20915f5b81811061091f57509583600195969710610907575b505050811b015f516020611be95f395f51905f525561048c565b01515f1960f88460031b161c191690558480806108ed565b9192602060018192868b0151815501940192016108d8565b5f516020611be95f395f51905f525f527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa601f830160051c8101916020841061099c575b601f0160051c01905b8181106109915750610452565b5f8155600101610984565b909150819061097b565b015190508580610400565b601f198216955f516020611b895f395f51905f525f52805f20915f5b888110610a14575083600195969798106109fc575b505050811b015f516020611b895f395f51905f5255610421565b01515f1960f88460031b161c191690558580806109e2565b919260206001819286850151815501940192016109cd565b5f516020611b895f395f51905f525f527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0601f830160051c81019160208410610a91575b601f0160051c01905b818110610a8657506103e4565b5f8155600101610a79565b9091508190610a70565b68ffffffffffffffffff191668010000000000000001175f516020611c695f395f51905f525582610359565b63f92ee8a960e01b5f5260045ffd5b90501584610330565b303b159150610328565b84915061031e565b3461012b57604036600319011261012b57610b17610b0d6112ee565b60243590336114e1565b602060405160018152f35b3461012b575f36600319011261012b576040515f5f516020611be95f395f51905f5254610b4e8161131a565b8084529060018116908115610bf85750600114610b8e575b610b8a83610b7681850382611352565b6040519182916020835260208301906112ca565b0390f35b5f516020611be95f395f51905f525f9081527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa939250905b808210610bde57509091508101602001610b76610b66565b919260018160209254838588010152019101909291610bc6565b60ff191660208086019190915291151560051b84019091019150610b769050610b66565b3461012b575f36600319011261012b575f516020611c095f395f51905f52546040516001600160a01b039091168152602090f35b3461012b575f36600319011261012b577fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100541580610efb575b15610ebe576040515f516020611bc95f395f51905f5254815f610cab8361131a565b8083529260018116908115610e9f5750600114610e34575b610ccf92500382611352565b6040515f516020611c495f395f51905f5254815f610cec8361131a565b8083529260018116908115610e155750600114610daa575b610d1791925092610d4e94930382611352565b6020610d5c60405192610d2a8385611352565b5f84525f368137604051958695600f60f81b875260e08588015260e08701906112ca565b9085820360408701526112ca565b4660608501523060808501525f60a085015283810360c08501528180845192838152019301915f5b828110610d9357505050500390f35b835185528695509381019392810192600101610d84565b505f516020611c495f395f51905f525f90815290917f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b755b818310610df9575050906020610d1792820101610d04565b6020919350806001915483858801015201910190918392610de1565b60209250610d1794915060ff191682840152151560051b820101610d04565b505f516020611bc95f395f51905f525f90815290917f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d5b818310610e83575050906020610ccf92820101610cc3565b6020919350806001915483858801015201910190918392610e6b565b60209250610ccf94915060ff191682840152151560051b820101610cc3565b60405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606490fd5b507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1015415610c89565b3461012b57602036600319011261012b57610f3d6112ee565b60018060a01b03165f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00602052602060405f2054604051908152f35b3461012b57604036600319011261012b57610129610f966112ee565b60243590610fa582338361141d565b6115e5565b3461012b575f36600319011261012b57610fc26115b2565b5f516020611c095f395f51905f5280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461012b57602036600319011261012b576001600160a01b036110326112ee565b165f525f516020611ba95f395f51905f52602052602060405f2054604051908152f35b3461012b575f36600319011261012b5761106d6115b2565b5f516020611c695f395f51905f525460ff8160401c1680156110da575b610ac75760029068ffffffffffffffffff1916175f516020611c695f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160028152a1005b50600267ffffffffffffffff8216101561108a565b3461012b57602036600319011261012b57610129600435336115e5565b3461012b57604036600319011261012b576111256112ee565b61112d6115b2565b6001600160a01b038116156106a05761012990602435906116fe565b3461012b575f36600319011261012b5760206111636117c0565b604051908152f35b3461012b575f36600319011261012b576020604051600c8152f35b3461012b57606036600319011261012b57610b176111a26112ee565b6111aa611304565b604435916111b983338361141d565b6114e1565b3461012b575f36600319011261012b5760205f516020611c295f395f51905f5254604051908152f35b3461012b57604036600319011261012b57610b176112036112ee565b602435903361169b565b3461012b575f36600319011261012b576040515f5f516020611b895f395f51905f52546112398161131a565b8084529060018116908115610bf8575060011461126057610b8a83610b7681850382611352565b5f516020611b895f395f51905f525f9081527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0939250905b8082106112b057509091508101602001610b76610b66565b919260018160209254838588010152019101909291611298565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361012b57565b602435906001600160a01b038216820361012b57565b90600182811c92168015611348575b602083101461133457565b634e487b7160e01b5f52602260045260245ffd5b91607f1691611329565b90601f8019910116810190811067ffffffffffffffff8211176107a857604052565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020526040902090565b6001600160a01b0316801561140a575f516020611c095f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b919061142883611374565b60018060a01b0382165f5260205260405f2054925f19840361144b575b50505050565b8284106114be576001600160a01b038116156114ab576001600160a01b038216156114985761147990611374565b9060018060a01b03165f5260205260405f20910390555f808080611445565b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b508290637dc7a0d960e11b5f5260018060a01b031660045260245260445260645ffd5b6001600160a01b031690811561159f576001600160a01b03169182156106a057815f525f516020611ba95f395f51905f5260205260405f205481811061158657817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f516020611ba95f395f51905f5284520360405f2055845f525f516020611ba95f395f51905f52825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b634b637e8f60e11b5f525f60045260245ffd5b5f516020611c095f395f51905f52546001600160a01b031633036115d257565b63118cdaa760e01b5f523360045260245ffd5b9091906001600160a01b0316801561159f57805f525f516020611ba95f395f51905f5260205260405f2054838110611681576020845f94957fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef938587525f516020611ba95f395f51905f528452036040862055805f516020611c295f395f51905f5254035f516020611c295f395f51905f5255604051908152a3565b915063391434e360e21b5f5260045260245260445260645ffd5b916001600160a01b0383169182156114ab576001600160a01b0316928315611498577f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925916116ea602092611374565b855f5282528060405f2055604051908152a3565b5f516020611c295f395f51905f5254908282018092116117ac575f516020611c295f395f51905f52919091556001600160a01b0316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020908461178a57805f516020611c295f395f51905f5254035f516020611c295f395f51905f52555b604051908152a3565b8484525f516020611ba95f395f51905f52825260408420818154019055611781565b634e487b7160e01b5f52601160045260245ffd5b6117c8611953565b6117d0611a80565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815261182160c082611352565b51902090565b60ff5f516020611c695f395f51905f525460401c161561184357565b631afcd79f60e31b5f5260045ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116118d4579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156118c9575f516001600160a01b038116156118bf57905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f9160039190565b600481101561193f57806118f1575050565b600181036119085763f645eedf60e01b5f5260045ffd5b60028103611923575063fce698f760e01b5f5260045260245ffd5b60031461192d5750565b6335e2f38360e21b5f5260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b6040515f516020611bc95f395f51905f5254905f816119718461131a565b9182825260208201946001811690815f14611a6457506001146119f9575b61199b92500382611352565b519081156119a7572090565b50507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1005480156119d45790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b505f516020611bc95f395f51905f525f90815290917f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d5b818310611a4857505090602061199b9282010161198f565b6020919350806001915483858801015201910190918392611a30565b60ff191686525061199b92151560051b8201602001905061198f565b6040515f516020611c495f395f51905f5254905f81611a9e8461131a565b9182825260208201946001811690815f14611b6c5750600114611b01575b611ac892500382611352565b51908115611ad4572090565b50507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1015480156119d45790565b505f516020611c495f395f51905f525f90815290917f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b755b818310611b50575050906020611ac892820101611abc565b6020919350806001915483858801015201910190918392611b38565b60ff1916865250611ac892151560051b82016020019050611abc56fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0352c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10252c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace049016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d103f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212203ce164046c34e3abbf805b23e3f25930a1466a485bfda7a2369c75651fa3cfbd64736f6c634300081c0033","sourceMap":"632:990:160:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:990:160;;;;2357:1:25;632:990:160;;:::i;:::-;2303:62:25;;:::i;:::-;2357:1;:::i;:::-;632:990:160;;;;;;;;;;;-1:-1:-1;;632:990:160;;;;;;:::i;:::-;4867:20:27;632:990:160;;:::i;:::-;4867:20:27;;:::i;:::-;:29;632:990:160;;;;;;-1:-1:-1;632:990:160;;;;;-1:-1:-1;632:990:160;;;;;;;;;;;;;;-1:-1:-1;;632:990:160;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;2301:15:29;;:26;2297:97;;6967:25:66;7021:8;632:990:160;;;;;;;;;;;;972:64:31;632:990:160;;;;;;;;;;;;;;;;2435:78:29;632:990:160;2435:78:29;;632:990:160;1279:95:29;632:990:160;;1279:95:29;632:990:160;1279:95:29;;632:990:160;;;;;;;;;1279:95:29;;632:990:160;1279:95:29;632:990:160;1279:95:29;;632:990:160;;1279:95:29;;632:990:160;;1279:95:29;;632:990:160;;2435:78:29;;;632:990:160;2435:78:29;;:::i;:::-;632:990:160;2425:89:29;;4094:23:33;;:::i;:::-;3515:233:68;632:990:160;3515:233:68;;-1:-1:-1;;;3515:233:68;;;;;;;;;;632:990:160;;;3515:233:68;632:990:160;;3515:233:68;;6967:25:66;:::i;:::-;7021:8;;;;;:::i;:::-;-1:-1:-1;;;;;632:990:160;2638:15:29;;;2634:88;;10117:4:27;;;;;:::i;2634:88:29:-;2676:35;;;;;632:990:160;2676:35:29;632:990:160;;;;;;2676:35:29;2297:97;2350:33;;;;632:990:160;2350:33:29;632:990:160;;;;2350:33:29;632:990:160;;;;;;-1:-1:-1;;632:990:160;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;4301:16:26;632:990:160;;;;4726:16:26;;:34;;;;632:990:160;4805:1:26;4790:16;:50;;;;632:990:160;4855:13:26;:30;;;;632:990:160;4851:91:26;;;-1:-1:-1;;632:990:160;;4805:1:26;632:990:160;-1:-1:-1;;;;;;;;;;;632:990:160;;4979:67:26;;632:990:160;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;632:990:160;;;;;;;;;;;:::i;:::-;821:14;632:990;;-1:-1:-1;;;632:990:160;821:14;;;6893:76:26;;:::i;:::-;;;:::i;:::-;632:990:160;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4805:1:26;632:990:160;;;;;2600:7:27;632:990:160;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;4805:1:26;632:990:160;;;;;2600:7:27;632:990:160;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;6893:76:26;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;6961:1;;;:::i;:::-;632:990:160;;;;;;;:::i;:::-;;;;-1:-1:-1;;;632:990:160;;;;6893:76:26;;:::i;:::-;632:990:160;;;;;;;:::i;:::-;4805:1:26;632:990:160;;-1:-1:-1;;;632:990:160;;;;6893:76:26;;:::i;:::-;632:990:160;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4805:1:26;632:990:160;;;;;2600:7:27;632:990:160;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;4805:1:26;632:990:160;;;;;2600:7:27;632:990:160;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;2806:64:33;632:990:160;;;3902:16:33;632:990:160;-1:-1:-1;;;;;632:990:160;;8803:21:27;8799:91;;941:9:160;8928:5:27;;;:::i;:::-;5066:101:26;;632:990:160;5066:101:26;632:990:160;;-1:-1:-1;;;;;;;;;;;632:990:160;;-1:-1:-1;;;;;;;;;;;632:990:160;5142:14:26;632:990:160;;;4805:1:26;632:990:160;;5142:14:26;632:990:160;8799:91:27;8847:32;;;632:990:160;8847:32:27;632:990:160;;;;;8847:32:27;632:990:160;;;;-1:-1:-1;632:990:160;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;;;;;;;;;;4805:1:26;632:990:160;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;;;;2600:7:27;632:990:160;;;;;;;;;;;;;;;;4805:1:26;632:990:160;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;821:14;632:990;;;;;;;;;;;;821:14;632:990;;;;;;;;;;;;;;;;4805:1:26;632:990:160;;;;;;-1:-1:-1;632:990:160;;;;;;;;;;;;;;;;;;;;-1:-1:-1;632:990:160;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;;;;;;;;;4805:1:26;632:990:160;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;;;;2600:7:27;632:990:160;;;;;;;;;;;;;;;;4805:1:26;632:990:160;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;821:14;632:990;;;;;;;;;;;;821:14;632:990;;;;;;;;;;;;;;;;4805:1:26;632:990:160;;;;;;-1:-1:-1;632:990:160;;;;;;;;-1:-1:-1;632:990:160;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;;;;;;;;;;4805:1:26;632:990:160;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;;;;2600:7:27;632:990:160;;;;;;;;;;;;;;;;4805:1:26;632:990:160;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;821:14;632:990;;;;;;;;;;;;821:14;632:990;;;;;;;;;;;;;;;;4805:1:26;632:990:160;;;;;;-1:-1:-1;632:990:160;;;;;;;;-1:-1:-1;632:990:160;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;;;;;;;;;4805:1:26;632:990:160;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;;;;2600:7:27;632:990:160;;;;;;;;;;;;;;;;4805:1:26;632:990:160;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;821:14;632:990;;;;;;;;;;;;821:14;632:990;;;;;;;;;;;;;;;;4805:1:26;632:990:160;;;;;;-1:-1:-1;632:990:160;;;;4979:67:26;-1:-1:-1;;632:990:160;;;-1:-1:-1;;;;;;;;;;;632:990:160;4979:67:26;;;4851:91;6498:23;;;632:990:160;4908:23:26;632:990:160;;4908:23:26;4855:30;4872:13;;;4855:30;;;4790:50;4818:4;4810:25;:30;;-1:-1:-1;4790:50:26;;4726:34;;;-1:-1:-1;4726:34:26;;632:990:160;;;;;;-1:-1:-1;;632:990:160;;;;4616:5:27;632:990:160;;:::i;:::-;;;966:10:30;;4616:5:27;:::i;:::-;632:990:160;;;;;;;;;;;;;-1:-1:-1;;632:990:160;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;-1:-1:-1;632:990:160;;;;;;;-1:-1:-1;632:990:160;;-1:-1:-1;632:990:160;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:990:160;;;;;;;;;;;;;;;;;;;;-1:-1:-1;632:990:160;;-1:-1:-1;632:990:160;;;;;;;;-1:-1:-1;;632:990:160;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;-1:-1:-1;;;;;632:990:160;;;;;;;;;;;;;;-1:-1:-1;;632:990:160;;;;2806:64:33;632:990:160;5777:18:33;:43;;;632:990:160;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;5965:13:33;632:990:160;;;;6000:4:33;632:990:160;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;632:990:160;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;632:990:160;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;632:990:160;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;632:990:160;;;;;;;;;;;;-1:-1:-1;;;632:990:160;;;;;;;5777:43:33;632:990:160;5799:16:33;632:990:160;5799:21:33;5777:43;;632:990:160;;;;;;-1:-1:-1;;632:990:160;;;;;;:::i;:::-;;;;;;;;;972:64:31;632:990:160;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:990:160;;;;1479:5:28;632:990:160;;:::i;:::-;;;966:10:30;1448:5:28;966:10:30;;1448:5:28;;:::i;:::-;1479;:::i;632:990:160:-;;;;;;-1:-1:-1;;632:990:160;;;;2303:62:25;;:::i;:::-;-1:-1:-1;;;;;;;;;;;632:990:160;;-1:-1:-1;;;;;;632:990:160;;;;;;;-1:-1:-1;;;;;632:990:160;3975:40:25;632:990:160;;3975:40:25;632:990:160;;;;;;;-1:-1:-1;;632:990:160;;;;-1:-1:-1;;;;;632:990:160;;:::i;:::-;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:990:160;;;;2303:62:25;;:::i;:::-;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;6431:44:26;;;;632:990:160;6427:105:26;;1427:1:160;632:990;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;6656:20:26;632:990:160;;;1427:1;632:990;;6656:20:26;632:990:160;6431:44:26;632:990:160;1427:1;632:990;;;6450:25:26;;6431:44;;632:990:160;;;;;;-1:-1:-1;;632:990:160;;;;1005:5:28;632:990:160;;966:10:30;1005:5:28;:::i;632:990:160:-;;;;;;-1:-1:-1;;632:990:160;;;;;;:::i;:::-;2303:62:25;;:::i;:::-;-1:-1:-1;;;;;632:990:160;;8803:21:27;8799:91;;8928:5;632:990:160;;;8928:5:27;;:::i;632:990:160:-;;;;;;-1:-1:-1;;632:990:160;;;;;4094:23:33;;:::i;:::-;632:990:160;;;;;;;;;;;;-1:-1:-1;;632:990:160;;;;;;;1512:2;632:990;;;;;;;;;-1:-1:-1;;632:990:160;;;;6198:5:27;632:990:160;;:::i;:::-;;;:::i;:::-;;;966:10:30;6162:5:27;966:10:30;;6162:5:27;;:::i;:::-;6198;:::i;632:990:160:-;;;;;;-1:-1:-1;;632:990:160;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;;;;;;;-1:-1:-1;;632:990:160;;;;10117:4:27;632:990:160;;:::i;:::-;;;966:10:30;;10117:4:27;:::i;632:990:160:-;;;;;;-1:-1:-1;;632:990:160;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;-1:-1:-1;632:990:160;;;;;;;-1:-1:-1;632:990:160;;-1:-1:-1;632:990:160;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;632:990:160;;;;;;;;-1:-1:-1;;632:990:160;;;;:::o;:::-;;;;-1:-1:-1;;;;;632:990:160;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;632:990:160;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;632:990:160;;;;;4867:13:27;632:990:160;;;;;;:::o;3405:215:25:-;-1:-1:-1;;;;;632:990:160;3489:22:25;;3485:91;;-1:-1:-1;;;;;;;;;;;632:990:160;;-1:-1:-1;;;;;;632:990:160;;;;;;;-1:-1:-1;;;;;632:990:160;3975:40:25;-1:-1:-1;;3975:40:25;3405:215::o;3485:91::-;3534:31;;;3509:1;3534:31;3509:1;3534:31;632:990:160;;3509:1:25;3534:31;11745:477:27;;;4867:20;;;:::i;:::-;632:990:160;;;;;;;-1:-1:-1;632:990:160;;;;-1:-1:-1;632:990:160;;;;;11910:37:27;;11906:310;;11745:477;;;;;:::o;11906:310::-;11967:24;;;11963:130;;-1:-1:-1;;;;;632:990:160;;11141:19:27;11137:89;;-1:-1:-1;;;;;632:990:160;;11239:21:27;11235:90;;11334:20;;;:::i;:::-;:29;632:990:160;;;;;;-1:-1:-1;632:990:160;;;;-1:-1:-1;632:990:160;;;;;11906:310:27;;;;;;11235:90;11283:31;;;-1:-1:-1;11283:31:27;-1:-1:-1;11283:31:27;632:990:160;;-1:-1:-1;11283:31:27;11137:89;11183:32;;;-1:-1:-1;11183:32:27;-1:-1:-1;11183:32:27;632:990:160;;-1:-1:-1;11183:32:27;11963:130;12018:60;;;;;;-1:-1:-1;12018:60:27;632:990:160;;;;;;12018:60:27;632:990:160;;;;;;-1:-1:-1;12018:60:27;6605:300;-1:-1:-1;;;;;632:990:160;;6688:18:27;;6684:86;;-1:-1:-1;;;;;632:990:160;;6783:16:27;;6779:86;;632:990:160;6704:1:27;632:990:160;-1:-1:-1;;;;;;;;;;;632:990:160;;;6704:1:27;632:990:160;;7609:19:27;;;7605:115;;632:990:160;8358:25:27;632:990:160;;;;6704:1:27;632:990:160;-1:-1:-1;;;;;;;;;;;632:990:160;;;;6704:1:27;632:990:160;;;6704:1:27;632:990:160;-1:-1:-1;;;;;;;;;;;632:990:160;;;6704:1:27;632:990:160;;;;;;;;;;;;8358:25:27;6605:300::o;7605:115::-;7655:50;;;;6704:1;7655:50;;632:990:160;;;;;;6704:1:27;7655:50;6684:86;6729:30;;;6704:1;6729:30;6704:1;6729:30;632:990:160;;6704:1:27;6729:30;2658:162:25;-1:-1:-1;;;;;;;;;;;632:990:160;-1:-1:-1;;;;;632:990:160;966:10:30;2717:23:25;2713:101;;2658:162::o;2713:101::-;2763:40;;;-1:-1:-1;2763:40:25;966:10:30;2763:40:25;632:990:160;;-1:-1:-1;2763:40:25;9259:206:27;;;;-1:-1:-1;;;;;632:990:160;9329:21:27;;9325:89;;632:990:160;9348:1:27;632:990:160;-1:-1:-1;;;;;;;;;;;632:990:160;;;9348:1:27;632:990:160;;7609:19:27;;;7605:115;;632:990:160;;9348:1:27;632:990:160;;8358:25:27;632:990:160;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;8358:25:27;9259:206::o;7605:115::-;7655:50;;;;;9348:1;7655:50;;632:990:160;;;;;;9348:1:27;7655:50;10976:487;;-1:-1:-1;;;;;632:990:160;;;11141:19:27;;11137:89;;-1:-1:-1;;;;;632:990:160;;11239:21:27;;11235:90;;11415:31;11334:20;;632:990:160;11334:20:27;;:::i;:::-;632:990:160;-1:-1:-1;632:990:160;;;;;-1:-1:-1;632:990:160;;;;;;;11415:31:27;10976:487::o;7220:1170::-;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;-1:-1:-1;;;;;632:990:160;;;;8358:25:27;;632:990:160;;7918:16:27;632:990:160;;;-1:-1:-1;;;;;;;;;;;632:990:160;;-1:-1:-1;;;;;;;;;;;632:990:160;7914:429:27;632:990:160;;;;;8358:25:27;7220:1170::o;7914:429::-;632:990:160;;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;;;;;7914:429:27;;632:990:160;;;;;941:9;;;;;632:990;941:9;4130:191:33;4243:17;;:::i;:::-;4262:20;;:::i;:::-;632:990:160;;4221:92:33;;;;632:990:160;2073:95:33;632:990:160;;;2073:95:33;;632:990:160;2073:95:33;;;632:990:160;4284:13:33;2073:95;;;632:990:160;4307:4:33;2073:95;;;632:990:160;2073:95:33;4221:92;;;;;;:::i;:::-;632:990:160;4211:103:33;;4130:191;:::o;7084:141:26:-;632:990:160;-1:-1:-1;;;;;;;;;;;632:990:160;;;;7150:18:26;7146:73;;7084:141::o;7146:73::-;7191:17;;;-1:-1:-1;7191:17:26;;-1:-1:-1;7191:17:26;5140:1530:66;;;6199:66;6186:79;;6182:164;;632:990:160;;;;;;-1:-1:-1;632:990:160;;;;;;;;;;;;;;;;;;;6457:24:66;;;;;;;;;-1:-1:-1;6457:24:66;-1:-1:-1;;;;;632:990:160;;6495:20:66;6491:113;;6614:49;-1:-1:-1;6614:49:66;-1:-1:-1;5140:1530:66;:::o;6491:113::-;6531:62;-1:-1:-1;6531:62:66;6457:24;6531:62;-1:-1:-1;6531:62:66;:::o;6457:24::-;632:990:160;;;-1:-1:-1;632:990:160;;;;;6182:164:66;6281:54;;;6297:1;6281:54;6301:30;6281:54;;:::o;7196:532::-;632:990:160;;;;;;7282:29:66;;;7327:7;;:::o;7278:444::-;632:990:160;7378:38:66;;632:990:160;;7439:23:66;;;7291:20;7439:23;632:990:160;7291:20:66;7439:23;7374:348;7492:35;7483:44;;7492:35;;7550:46;;;;7291:20;7550:46;632:990:160;;;7291:20:66;7550:46;7479:243;7626:30;7617:39;7613:109;;7479:243;7196:532::o;7613:109::-;7679:32;;;7291:20;7679:32;632:990:160;;;7291:20:66;7679:32;632:990:160;;;;7291:20:66;632:990:160;;;;;7291:20:66;632:990:160;7058:687:33;632:990:160;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;7230:22:33;;;;7275;7268:29;:::o;7226:513::-;-1:-1:-1;;2806:64:33;632:990:160;7603:15:33;;;;7638:17;:::o;7599:130::-;7694:20;7701:13;7694:20;:::o;632:990:160:-;-1:-1:-1;;;;;;;;;;;;632:990:160;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:990:160;;;-1:-1:-1;632:990:160;;;;;;;;;;;-1:-1:-1;632:990:160;;7966:723:33;632:990:160;;-1:-1:-1;;;;;;;;;;;632:990:160;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;8147:25:33;;;;8195;8188:32;:::o;8143:540::-;-1:-1:-1;;8507:16:33;632:990:160;8541:18:33;;;;8579:20;:::o;632:990:160:-;-1:-1:-1;;;;;;;;;;;;632:990:160;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:990:160;;;-1:-1:-1;632:990:160;;;;;;;;;;;-1:-1:-1;632:990:160;","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.28+commit.7893614a\"},\"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\":\"pure\",\"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-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/\",\":symbiotic-core/=lib/symbiotic-core/\"],\"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\":\"0x3e0983635bf88ee5284c4385c01431135b7eec294e2f1c0d22bc2dddc16790dd\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0302725cd5b1bd6afacebd0d30d445bb1c86152745b6de42dc1a66a570b42718\",\"dweb:/ipfs/QmVCurygXE5PV65uvC12ybtXYpL292PMmEUPnbRtGbAY1V\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"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":"pure","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-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/","symbiotic-core/=lib/symbiotic-core/"],"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":"0x3e0983635bf88ee5284c4385c01431135b7eec294e2f1c0d22bc2dddc16790dd","urls":["bzz-raw://0302725cd5b1bd6afacebd0d30d445bb1c86152745b6de42dc1a66a570b42718","dweb:/ipfs/QmVCurygXE5PV65uvC12ybtXYpL292PMmEUPnbRtGbAY1V"],"license":"UNLICENSED"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"src/WrappedVara.sol","id":76832,"exportedSymbols":{"ERC20BurnableUpgradeable":[40320],"ERC20PermitUpgradeable":[40489],"ERC20Upgradeable":[40258],"Initializable":[39641],"OwnableUpgradeable":[39387],"WrappedVara":[76831]},"nodeType":"SourceUnit","src":"39:1584:160","nodes":[{"id":76726,"nodeType":"PragmaDirective","src":"39:24:160","nodes":[],"literals":["solidity","^","0.8",".26"]},{"id":76728,"nodeType":"ImportDirective","src":"65:96:160","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","nameLocation":"-1:-1:-1","scope":76832,"sourceUnit":39642,"symbolAliases":[{"foreign":{"id":76727,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39641,"src":"73:13:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":76730,"nodeType":"ImportDirective","src":"162:102:160","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","nameLocation":"-1:-1:-1","scope":76832,"sourceUnit":40259,"symbolAliases":[{"foreign":{"id":76729,"name":"ERC20Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40258,"src":"170:16:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":76732,"nodeType":"ImportDirective","src":"265:133:160","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":76832,"sourceUnit":40321,"symbolAliases":[{"foreign":{"id":76731,"name":"ERC20BurnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40320,"src":"273:24:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":76734,"nodeType":"ImportDirective","src":"399:101:160","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":76832,"sourceUnit":39388,"symbolAliases":[{"foreign":{"id":76733,"name":"OwnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39387,"src":"407:18:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":76736,"nodeType":"ImportDirective","src":"501:129:160","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":76832,"sourceUnit":40490,"symbolAliases":[{"foreign":{"id":76735,"name":"ERC20PermitUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40489,"src":"509:22:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":76831,"nodeType":"ContractDefinition","src":"632:990:160","nodes":[{"id":76749,"nodeType":"VariableDeclaration","src":"784:51:160","nodes":[],"constant":true,"mutability":"constant","name":"TOKEN_NAME","nameLocation":"808:10:160","scope":76831,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":76747,"name":"string","nodeType":"ElementaryTypeName","src":"784:6:160","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"577261707065642056617261","id":76748,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"821:14:160","typeDescriptions":{"typeIdentifier":"t_stringliteral_985e2e9885ca23de2896caee5fad5adf116e2558361aa44c502ff8b2c1b2a41b","typeString":"literal_string \"Wrapped Vara\""},"value":"Wrapped Vara"},"visibility":"private"},{"id":76752,"nodeType":"VariableDeclaration","src":"841:46:160","nodes":[],"constant":true,"mutability":"constant","name":"TOKEN_SYMBOL","nameLocation":"865:12:160","scope":76831,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":76750,"name":"string","nodeType":"ElementaryTypeName","src":"841:6:160","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"5756415241","id":76751,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"880:7:160","typeDescriptions":{"typeIdentifier":"t_stringliteral_203a7c23d1b412674989fae6808de72f52c6953d49ac548796ba3c05451693a4","typeString":"literal_string \"WVARA\""},"value":"WVARA"},"visibility":"private"},{"id":76755,"nodeType":"VariableDeclaration","src":"893:57:160","nodes":[],"constant":true,"mutability":"constant","name":"TOKEN_INITIAL_SUPPLY","nameLocation":"918:20:160","scope":76831,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76753,"name":"uint256","nodeType":"ElementaryTypeName","src":"893:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"315f3030305f303030","id":76754,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"941:9:160","typeDescriptions":{"typeIdentifier":"t_rational_1000000_by_1","typeString":"int_const 1000000"},"value":"1_000_000"},"visibility":"private"},{"id":76763,"nodeType":"FunctionDefinition","src":"1010:53:160","nodes":[],"body":{"id":76762,"nodeType":"Block","src":"1024:39:160","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":76759,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39609,"src":"1034:20:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":76760,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1034:22:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76761,"nodeType":"ExpressionStatement","src":"1034:22:160"}]},"documentation":{"id":76756,"nodeType":"StructuredDocumentation","src":"957:48:160","text":"@custom:oz-upgrades-unsafe-allow constructor"},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":76757,"nodeType":"ParameterList","parameters":[],"src":"1021:2:160"},"returnParameters":{"id":76758,"nodeType":"ParameterList","parameters":[],"src":"1024:0:160"},"scope":76831,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":76797,"nodeType":"FunctionDefinition","src":"1069:297:160","nodes":[],"body":{"id":76796,"nodeType":"Block","src":"1130:236:160","nodes":[],"statements":[{"expression":{"arguments":[{"id":76771,"name":"TOKEN_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76749,"src":"1153:10:160","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":76772,"name":"TOKEN_SYMBOL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76752,"src":"1165:12:160","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":76770,"name":"__ERC20_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39709,"src":"1140:12:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":76773,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1140:38:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76774,"nodeType":"ExpressionStatement","src":"1140:38:160"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":76775,"name":"__ERC20Burnable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40279,"src":"1188:20:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":76776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1188:22:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76777,"nodeType":"ExpressionStatement","src":"1188:22:160"},{"expression":{"arguments":[{"id":76779,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76765,"src":"1235:12:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76778,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39247,"src":"1220:14:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":76780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1220:28:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76781,"nodeType":"ExpressionStatement","src":"1220:28:160"},{"expression":{"arguments":[{"id":76783,"name":"TOKEN_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76749,"src":"1277:10:160","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":76782,"name":"__ERC20Permit_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40376,"src":"1258:18:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":76784,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1258:30:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76785,"nodeType":"ExpressionStatement","src":"1258:30:160"},{"expression":{"arguments":[{"id":76787,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76765,"src":"1305:12:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76788,"name":"TOKEN_INITIAL_SUPPLY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76755,"src":"1319:20:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":76789,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1342:2:160","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":76790,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[76815],"referencedDeclaration":76815,"src":"1348:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_uint8_$","typeString":"function () pure returns (uint8)"}},"id":76791,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1348:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1342:16:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1319:39:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":76786,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40090,"src":"1299:5:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":76794,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1299:60:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76795,"nodeType":"ExpressionStatement","src":"1299:60:160"}]},"functionSelector":"c4d66de8","implemented":true,"kind":"function","modifiers":[{"id":76768,"kind":"modifierInvocation","modifierName":{"id":76767,"name":"initializer","nameLocations":["1118:11:160"],"nodeType":"IdentifierPath","referencedDeclaration":39495,"src":"1118:11:160"},"nodeType":"ModifierInvocation","src":"1118:11:160"}],"name":"initialize","nameLocation":"1078:10:160","parameters":{"id":76766,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76765,"mutability":"mutable","name":"initialOwner","nameLocation":"1097:12:160","nodeType":"VariableDeclaration","scope":76797,"src":"1089:20:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76764,"name":"address","nodeType":"ElementaryTypeName","src":"1089:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1088:22:160"},"returnParameters":{"id":76769,"nodeType":"ParameterList","parameters":[],"src":"1130:0:160"},"scope":76831,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":76806,"nodeType":"FunctionDefinition","src":"1372:60:160","nodes":[],"body":{"id":76805,"nodeType":"Block","src":"1430:2:160","nodes":[],"statements":[]},"functionSelector":"6c2eb350","implemented":true,"kind":"function","modifiers":[{"id":76800,"kind":"modifierInvocation","modifierName":{"id":76799,"name":"onlyOwner","nameLocations":["1403:9:160"],"nodeType":"IdentifierPath","referencedDeclaration":39282,"src":"1403:9:160"},"nodeType":"ModifierInvocation","src":"1403:9:160"},{"arguments":[{"hexValue":"32","id":76802,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1427:1:160","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"id":76803,"kind":"modifierInvocation","modifierName":{"id":76801,"name":"reinitializer","nameLocations":["1413:13:160"],"nodeType":"IdentifierPath","referencedDeclaration":39542,"src":"1413:13:160"},"nodeType":"ModifierInvocation","src":"1413:16:160"}],"name":"reinitialize","nameLocation":"1381:12:160","parameters":{"id":76798,"nodeType":"ParameterList","parameters":[],"src":"1393:2:160"},"returnParameters":{"id":76804,"nodeType":"ParameterList","parameters":[],"src":"1430:0:160"},"scope":76831,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":76815,"nodeType":"FunctionDefinition","src":"1438:83:160","nodes":[],"body":{"id":76814,"nodeType":"Block","src":"1495:26:160","nodes":[],"statements":[{"expression":{"hexValue":"3132","id":76812,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1512:2:160","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"value":"12"},"functionReturnParameters":76811,"id":76813,"nodeType":"Return","src":"1505:9:160"}]},"baseFunctions":[39778],"functionSelector":"313ce567","implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"1447:8:160","overrides":{"id":76808,"nodeType":"OverrideSpecifier","overrides":[],"src":"1470:8:160"},"parameters":{"id":76807,"nodeType":"ParameterList","parameters":[],"src":"1455:2:160"},"returnParameters":{"id":76811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76810,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":76815,"src":"1488:5:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":76809,"name":"uint8","nodeType":"ElementaryTypeName","src":"1488:5:160","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"1487:7:160"},"scope":76831,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":76830,"nodeType":"FunctionDefinition","src":"1527:93:160","nodes":[],"body":{"id":76829,"nodeType":"Block","src":"1586:34:160","nodes":[],"statements":[{"expression":{"arguments":[{"id":76825,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76817,"src":"1602:2:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":76826,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76819,"src":"1606:6:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":76824,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40090,"src":"1596:5:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":76827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1596:17:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76828,"nodeType":"ExpressionStatement","src":"1596:17:160"}]},"functionSelector":"40c10f19","implemented":true,"kind":"function","modifiers":[{"id":76822,"kind":"modifierInvocation","modifierName":{"id":76821,"name":"onlyOwner","nameLocations":["1576:9:160"],"nodeType":"IdentifierPath","referencedDeclaration":39282,"src":"1576:9:160"},"nodeType":"ModifierInvocation","src":"1576:9:160"}],"name":"mint","nameLocation":"1536:4:160","parameters":{"id":76820,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76817,"mutability":"mutable","name":"to","nameLocation":"1549:2:160","nodeType":"VariableDeclaration","scope":76830,"src":"1541:10:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76816,"name":"address","nodeType":"ElementaryTypeName","src":"1541:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76819,"mutability":"mutable","name":"amount","nameLocation":"1561:6:160","nodeType":"VariableDeclaration","scope":76830,"src":"1553:14:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76818,"name":"uint256","nodeType":"ElementaryTypeName","src":"1553:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1540:28:160"},"returnParameters":{"id":76823,"nodeType":"ParameterList","parameters":[],"src":"1586:0:160"},"scope":76831,"stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":76737,"name":"Initializable","nameLocations":["660:13:160"],"nodeType":"IdentifierPath","referencedDeclaration":39641,"src":"660:13:160"},"id":76738,"nodeType":"InheritanceSpecifier","src":"660:13:160"},{"baseName":{"id":76739,"name":"ERC20Upgradeable","nameLocations":["679:16:160"],"nodeType":"IdentifierPath","referencedDeclaration":40258,"src":"679:16:160"},"id":76740,"nodeType":"InheritanceSpecifier","src":"679:16:160"},{"baseName":{"id":76741,"name":"ERC20BurnableUpgradeable","nameLocations":["701:24:160"],"nodeType":"IdentifierPath","referencedDeclaration":40320,"src":"701:24:160"},"id":76742,"nodeType":"InheritanceSpecifier","src":"701:24:160"},{"baseName":{"id":76743,"name":"OwnableUpgradeable","nameLocations":["731:18:160"],"nodeType":"IdentifierPath","referencedDeclaration":39387,"src":"731:18:160"},"id":76744,"nodeType":"InheritanceSpecifier","src":"731:18:160"},{"baseName":{"id":76745,"name":"ERC20PermitUpgradeable","nameLocations":["755:22:160"],"nodeType":"IdentifierPath","referencedDeclaration":40489,"src":"755:22:160"},"id":76746,"nodeType":"InheritanceSpecifier","src":"755:22:160"}],"canonicalName":"WrappedVara","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[76831,40489,40646,41119,41540,43202,39387,40320,40258,41582,43166,43140,40535,39641],"name":"WrappedVara","nameLocation":"641:11:160","scope":76832,"usedErrors":[39223,39228,39404,39407,40355,40362,40549,41552,41557,41562,41571,41576,41581,44912,44917,44922],"usedEvents":[39234,39412,41520,43074,43083]}],"license":"UNLICENSED"},"id":160} \ No newline at end of file diff --git a/ethexe/ethereum/src/abi/mod.rs b/ethexe/ethereum/src/abi/mod.rs index 54e53e6123a..e06c037db8c 100644 --- a/ethexe/ethereum/src/abi/mod.rs +++ b/ethexe/ethereum/src/abi/mod.rs @@ -21,11 +21,17 @@ use alloy::sol; mod events; mod gear; -sol!( - #[sol(rpc)] - IMirror, - "Mirror.json" -); +pub use mirror_abi::*; + +// TODO (breathx): remove this dummy hack to avoid reentrancy issues with +// the `sol!` macro, dealing with internal libraries (e.g. 'Gear'). +mod mirror_abi { + alloy::sol!( + #[sol(rpc)] + IMirror, + "Mirror.json" + ); +} sol!( #[sol(rpc)] diff --git a/ethexe/ethereum/src/mirror/mod.rs b/ethexe/ethereum/src/mirror/mod.rs index 366f37dc31f..41d78d95334 100644 --- a/ethexe/ethereum/src/mirror/mod.rs +++ b/ethexe/ethereum/src/mirror/mod.rs @@ -53,6 +53,13 @@ impl Mirror { )) } + pub async fn executable_balance_top_up(&self, value: u128) -> Result { + let builder = self.0.executableBalanceTopUp(value); + let receipt = builder.send().await?.try_get_receipt().await?; + + Ok((*receipt.transaction_hash).into()) + } + pub async fn send_message( &self, payload: impl AsRef<[u8]>, diff --git a/ethexe/ethereum/src/router/mod.rs b/ethexe/ethereum/src/router/mod.rs index 1eada8df03f..4df12862d86 100644 --- a/ethexe/ethereum/src/router/mod.rs +++ b/ethexe/ethereum/src/router/mod.rs @@ -127,19 +127,10 @@ impl Router { Err(anyhow!("Failed to define if code is validated")) } - pub async fn create_program( - &self, - code_id: CodeId, - salt: H256, - payload: impl AsRef<[u8]>, - value: u128, - ) -> Result<(H256, ActorId)> { - let builder = self.instance.createProgram( - code_id.into_bytes().into(), - salt.to_fixed_bytes().into(), - payload.as_ref().to_vec().into(), - value, - ); + pub async fn create_program(&self, code_id: CodeId, salt: H256) -> Result<(H256, ActorId)> { + let builder = self + .instance + .createProgram(code_id.into_bytes().into(), salt.to_fixed_bytes().into()); let receipt = builder.send().await?.try_get_receipt().await?; let tx_hash = (*receipt.transaction_hash).into(); diff --git a/ethexe/runtime/src/wasm/storage.rs b/ethexe/runtime/src/wasm/storage.rs index 855c58fe128..4c00a42b793 100644 --- a/ethexe/runtime/src/wasm/storage.rs +++ b/ethexe/runtime/src/wasm/storage.rs @@ -35,7 +35,11 @@ pub struct RuntimeInterfaceStorage; impl Storage for RuntimeInterfaceStorage { fn read_state(&self, hash: H256) -> Option { - database_ri::read_unwrapping(&hash) + if hash.is_zero() { + Some(ProgramState::zero()) + } else { + database_ri::read_unwrapping(&hash) + } } fn write_state(&self, state: ProgramState) -> H256 {