diff --git a/Cargo.lock b/Cargo.lock index a85a41db6a..f338611ea6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5593,6 +5593,7 @@ dependencies = [ "pallet-account-fix", "pallet-asset-manager", "pallet-assets", + "pallet-assets-handler", "pallet-aura", "pallet-authorship", "pallet-balances", @@ -5691,6 +5692,7 @@ dependencies = [ "orml-xtokens", "pallet-asset-manager", "pallet-assets", + "pallet-assets-handler", "pallet-aura", "pallet-authorship", "pallet-balances", @@ -6908,6 +6910,26 @@ dependencies = [ "sp-std", ] +[[package]] +name = "pallet-assets-handler" +version = "0.1.0" +dependencies = [ + "frame-support", + "frame-system", + "hex-literal 0.4.1", + "pallet-assets", + "pallet-balances", + "pallet-bridge", + "pallet-bridge-transfer", + "pallet-parachain-staking", + "parity-scale-codec", + "scale-info", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", +] + [[package]] name = "pallet-aura" version = "4.0.0-dev" @@ -7117,6 +7139,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-core", + "sp-core-hashing", "sp-io", "sp-runtime", "sp-std", @@ -7132,7 +7155,6 @@ dependencies = [ "hex-literal 0.4.1", "pallet-balances", "pallet-bridge", - "pallet-parachain-staking", "pallet-timestamp", "parity-scale-codec", "scale-info", @@ -7423,16 +7445,15 @@ dependencies = [ "frame-support", "frame-system", "hex-literal 0.4.1", + "libsecp256k1", "log", "num_enum 0.7.2", - "pallet-balances", - "pallet-bridge", "pallet-bridge-transfer", "pallet-evm", "pallet-timestamp", "parity-scale-codec", + "paste", "precompile-utils", - "rustc-hex", "scale-info", "serde", "sha3", @@ -10709,6 +10730,7 @@ dependencies = [ "pallet-account-fix", "pallet-asset-manager", "pallet-assets", + "pallet-assets-handler", "pallet-aura", "pallet-authorship", "pallet-balances", diff --git a/Cargo.toml b/Cargo.toml index f13b39f670..7b67031466 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,6 +3,7 @@ resolver = "2" members = [ 'node', 'pallets/account-fix', + 'pallets/assets-handler', 'pallets/bitacross', 'pallets/bitacrossmimic', 'pallets/bridge', @@ -67,6 +68,7 @@ quote = { version = "1" } syn = { version = "2" } scale-info = { version = "2.11", default-features = false, features = ["derive"] } parity-scale-codec = { version = "3.6", default-features = false, features = ["derive", "max-encoded-len"] } +paste = { version = "1.0.6" } serde = { version = "1.0", default-features = false, features = ["derive", "alloc"] } serde_json = { version = "1.0", default-features = false } slices = { version = "0.2.0" } @@ -79,6 +81,7 @@ jsonrpsee = { version = "0.16.3", features = ["server"] } tokio = { version = "1.38.1", features = ["macros", "sync"] } strum = { version = "0.26", default-features = false } strum_macros = { version = "0.26", default-features = false } +libsecp256k1 = { version = "0.7", default-features = false } num_enum = { version = "0.7.2", default-features = false } num-integer = { version = "0.1", default-features = false } rustc-hex = { version = "2.0.1", default-features = false } @@ -249,6 +252,7 @@ litmus-parachain-runtime = { path = "runtime/litmus", default-features = false } rococo-parachain-runtime = { path = "runtime/rococo", default-features = false } pallet-account-fix = { path = "pallets/account-fix", default-features = false } pallet-asset-manager = { path = "pallets/xcm-asset-manager", default-features = false } +pallet-assets-handler = { path = "pallets/assets-handler", default-features = false } pallet-bitacross = { path = "pallets/bitacross", default-features = false } pallet-bitacross-mimic = { path = "pallets/bitacrossmimic", default-features = false } pallet-bridge = { path = "pallets/bridge", default-features = false } diff --git a/docker/bridge.dockerfile b/docker/bridge.dockerfile index 54b9ef9c25..c50ca15e31 100644 --- a/docker/bridge.dockerfile +++ b/docker/bridge.dockerfile @@ -1,3 +1,3 @@ FROM golang:1.18 -RUN go install github.com/litentry/ChainBridge/cmd/chainbridge@dev +RUN go install github.com/collab-ai-network/ChainBridge/cmd/chainbridge@sol0.8.19 diff --git a/pallets/assets-handler/Cargo.toml b/pallets/assets-handler/Cargo.toml new file mode 100644 index 0000000000..5429bc8b25 --- /dev/null +++ b/pallets/assets-handler/Cargo.toml @@ -0,0 +1,53 @@ +[package] +authors = ['Trust Computing GmbH '] +description = 'Pallet for Assets handler of token bridge' +edition = '2021' +homepage = 'https://litentry.com/' +license = 'GPL-3.0' +name = 'pallet-assets-handler' +repository = 'https://github.com/litentry/litentry-parachain' +version = '0.1.0' + +[dependencies] +hex-literal = { workspace = true } +parity-scale-codec = { workspace = true } +scale-info = { workspace = true } + +frame-support = { workspace = true } +frame-system = { workspace = true } +pallet-assets = { workspace = true } +pallet-balances = { workspace = true } +pallet-bridge = { workspace = true } +pallet-bridge-transfer = { workspace = true } +pallet-parachain-staking = { workspace = true } +sp-core = { workspace = true } +sp-io = { workspace = true } +sp-runtime = { workspace = true } +sp-std = { workspace = true } + +[features] +default = ["std"] +runtime-benchmarks = [ + "frame-support/runtime-benchmarks", + "frame-system/runtime-benchmarks", + "pallet-assets/runtime-benchmarks", + "pallet-bridge/runtime-benchmarks", + "pallet-bridge-transfer/runtime-benchmarks", + "pallet-parachain-staking/runtime-benchmarks", +] +std = [ + "parity-scale-codec/std", + "scale-info/std", + "sp-std/std", + "sp-runtime/std", + "sp-io/std", + "sp-core/std", + "frame-support/std", + "frame-system/std", + "pallet-assets/std", + "pallet-balances/std", + "pallet-bridge/std", + "pallet-bridge-transfer/std", + "pallet-parachain-staking/std", +] +try-runtime = ["frame-support/try-runtime"] diff --git a/pallets/assets-handler/src/lib.rs b/pallets/assets-handler/src/lib.rs new file mode 100644 index 0000000000..a370ae7766 --- /dev/null +++ b/pallets/assets-handler/src/lib.rs @@ -0,0 +1,334 @@ +// Copyright 2020-2024 Trust Computing GmbH. +// This file is part of Litentry. +// +// Litentry is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// Litentry is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with Litentry. If not, see . + +//! A pallet for handling bridge transfer lgoic. +#![cfg_attr(not(feature = "std"), no_std)] +#[cfg(test)] +mod mock; +#[cfg(test)] +mod tests; +use frame_support::{ + pallet_prelude::*, + traits::{ + tokens::{ + fungible::{Inspect as FInspect, Mutate as FMutate}, + fungibles::Mutate as FsMutate, + Fortitude, Precision, + }, + StorageVersion, + }, +}; +use frame_system::pallet_prelude::*; +pub use pallet::*; +use parity_scale_codec::FullCodec; +type BalanceOf = + as FInspect<::AccountId>>::Balance; +use pallet_bridge_transfer::BridgeHandler; +use pallet_parachain_staking::IssuanceAdapter; +use sp_runtime::{ + traits::{CheckedAdd, CheckedSub}, + ArithmeticError, DispatchError, FixedPointOperand, +}; +use sp_std::{fmt::Debug, prelude::*}; +type ResourceId = pallet_bridge::ResourceId; + +#[derive(PartialEq, Eq, Clone, Encode, Debug, Decode, TypeInfo)] +pub struct AssetInfo { + pub fee: Balance, + // None for native token + pub asset: Option, +} + +#[frame_support::pallet] +pub mod pallet { + use super::*; + + /// The current storage version. + const STORAGE_VERSION: StorageVersion = StorageVersion::new(0); + type AssetId = ::AssetId; + + #[pallet::pallet] + #[pallet::storage_version(STORAGE_VERSION)] + #[pallet::without_storage_info] + pub struct Pallet(_); + + #[pallet::config] + pub trait Config: + frame_system::Config + + pallet_balances::Config + + pallet_assets::Config + + pallet_bridge::Config + { + /// Overarching event type + type RuntimeEvent: From> + IsType<::RuntimeEvent>; + + /// Treasury account to receive assets fee + type TreasuryAccount: Get; + + /// The privileged origin to call update_maximum_issuance + type SetMaximumIssuanceOrigin: EnsureOrigin; + + #[pallet::constant] + type DefaultMaximumIssuance: Get>; + + #[pallet::constant] + // In parachain local decimal format + type ExternalTotalIssuance: Get>; + } + + // Resource Id of pallet assets token + #[pallet::storage] + #[pallet::getter(fn resource_to_asset_info)] + pub type ResourceToAssetInfo = + StorageMap<_, Twox64Concat, ResourceId, AssetInfo, BalanceOf>, OptionQuery>; + + #[pallet::type_value] + pub fn DefaultExternalBalances() -> BalanceOf { + T::ExternalTotalIssuance::get() + .checked_sub(&pallet_balances::Pallet::::total_issuance()) + .map_or_else(|| 0u32.into(), |v| v) + } + + // Native Token External Unlocked Total Balances of outside + #[pallet::storage] + #[pallet::getter(fn external_balances)] + pub type ExternalBalances = + StorageValue<_, BalanceOf, ValueQuery, DefaultExternalBalances>; + + // Native Token Maximum Issuance Limit from outside remote chain + #[pallet::storage] + #[pallet::getter(fn maximum_issuance)] + pub type MaximumIssuance = + StorageValue<_, BalanceOf, ValueQuery, T::DefaultMaximumIssuance>; + + #[pallet::event] + #[pallet::generate_deposit(pub(super) fn deposit_event)] + pub enum Event { + // asset id = None means native token + ResourceUpdated { + resource_id: ResourceId, + asset: AssetInfo, BalanceOf>, + }, + ResourceRemoved { + resource_id: ResourceId, + }, + /// A certain amount of asset tokens was minted + TokenBridgeIn { + asset_id: Option>, + to: T::AccountId, + amount: BalanceOf, + }, + TokenBridgeOut { + asset_id: Option>, + to: T::AccountId, + // Before Fee + amount: BalanceOf, + fee: BalanceOf, + }, + /// MaximumIssuance was changed + MaximumIssuanceChanged { + old_value: BalanceOf, + }, + } + + #[pallet::error] + pub enum Error { + InvalidResourceId, + CannotPayAsFee, + ReachMaximumSupply, + Overflow, + } + + #[pallet::call] + impl Pallet { + /// Stores an asset id on chain under an associated resource ID. + #[pallet::call_index(0)] + #[pallet::weight({1000})] + pub fn set_resource( + origin: OriginFor, + resource_id: ResourceId, + asset: AssetInfo, BalanceOf>, + ) -> DispatchResult { + ::BridgeCommitteeOrigin::ensure_origin(origin)?; + ResourceToAssetInfo::::insert(resource_id, asset.clone()); + Self::deposit_event(Event::ResourceUpdated { resource_id, asset }); + Ok(()) + } + + /// Removes a resource ID from the resource mapping. + /// + /// After this call, bridge transfers with the associated resource ID will + /// be rejected. + #[pallet::call_index(1)] + #[pallet::weight({1000})] + pub fn remove_resource(origin: OriginFor, resource_id: ResourceId) -> DispatchResult { + ::BridgeCommitteeOrigin::ensure_origin(origin)?; + ResourceToAssetInfo::::remove(resource_id); + Self::deposit_event(Event::ResourceRemoved { resource_id }); + Ok(()) + } + + #[pallet::call_index(2)] + #[pallet::weight({1000})] + pub fn set_maximum_issuance( + origin: OriginFor, + maximum_issuance: BalanceOf, + ) -> DispatchResultWithPostInfo { + T::SetMaximumIssuanceOrigin::ensure_origin(origin)?; + Self::deposit_event(Event::MaximumIssuanceChanged { + old_value: MaximumIssuance::::get(), + }); + MaximumIssuance::::set(maximum_issuance); + Ok(Pays::No.into()) + } + + #[pallet::call_index(3)] + #[pallet::weight({1000})] + pub fn set_external_balances( + origin: OriginFor, + external_balances: BalanceOf, + ) -> DispatchResult { + frame_system::ensure_root(origin)?; + >::put(external_balances); + Ok(()) + } + } +} + +impl BridgeHandler for Pallet +where + T: Config + + frame_system::Config + + pallet_bridge::Config + + pallet_assets::Config + + pallet_balances::Config, + B: Copy + + FixedPointOperand + + CheckedSub + + CheckedAdd + + MaybeSerializeDeserialize + + Debug + + FullCodec + + 'static, + A: Clone, +{ + fn prepare_token_bridge_in( + resource_id: ResourceId, + who: A, + amount: B, + ) -> Result { + let asset_info = Self::resource_to_asset_info(resource_id); + match asset_info { + None => Err(Error::::InvalidResourceId.into()), + // Native token + Some(AssetInfo { fee: _, asset: None }) => { + Self::deposit_event(Event::TokenBridgeIn { + asset_id: None, + to: who.clone(), + amount, + }); + + // Native token require maximum issuance check + let total_issuance: BalanceOf = pallet_balances::Pallet::::total_issuance(); + let new_issuance = + total_issuance.checked_add(&amount).ok_or(Error::::Overflow)?; + if new_issuance > MaximumIssuance::::get() { + return Err(Error::::ReachMaximumSupply.into()) + } + // Native token require external balance modification + let external_balances = >::get() + .checked_sub(&amount) + .ok_or(Error::::Overflow)?; + >::put(external_balances); + + pallet_balances::Pallet::::mint_into(&who, amount) + }, + // pallet assets + Some(AssetInfo { fee: _, asset: Some(asset) }) => { + Self::deposit_event(Event::TokenBridgeIn { + asset_id: Some(asset), + to: who.clone(), + amount, + }); + pallet_assets::Pallet::::mint_into(asset, &who, amount) + }, + } + } + // Return actual amount to target chain after deduction e.g fee + fn prepare_token_bridge_out( + resource_id: ResourceId, + who: A, + amount: B, + ) -> Result { + let asset_info = Self::resource_to_asset_info(resource_id); + match asset_info { + None => Err(Error::::InvalidResourceId.into()), + // Native token + Some(AssetInfo { fee, asset: None }) => { + Self::deposit_event(Event::TokenBridgeOut { + asset_id: None, + to: who.clone(), + amount, + fee, + }); + let burn_amount = pallet_balances::Pallet::::burn_from( + &who, + amount, + Precision::Exact, + Fortitude::Polite, + )?; + ensure!(burn_amount > fee, Error::::CannotPayAsFee); + + // Native token require external balance modification + let external_balances = >::get() + .checked_add(&burn_amount) + .ok_or(Error::::Overflow)?; + >::put(external_balances); + + pallet_balances::Pallet::::mint_into(&T::TreasuryAccount::get(), fee)?; + Ok(burn_amount.checked_sub(&fee).ok_or(ArithmeticError::Overflow)?) + }, + // pallet assets + Some(AssetInfo { fee, asset: Some(asset) }) => { + Self::deposit_event(Event::TokenBridgeOut { + asset_id: Some(asset), + to: who.clone(), + amount, + fee, + }); + // Since we use Exact approach + // Burn amount will always be amount exactly + // Otherwise + let burn_amount = pallet_assets::Pallet::::burn_from( + asset, + &who, + amount, + Precision::Exact, + Fortitude::Polite, + )?; + ensure!(burn_amount > fee, Error::::CannotPayAsFee); + pallet_assets::Pallet::::mint_into(asset, &T::TreasuryAccount::get(), fee)?; + Ok(burn_amount.checked_sub(&fee).ok_or(ArithmeticError::Overflow)?) + }, + } + } +} + +impl IssuanceAdapter> for Pallet { + fn adapted_total_issuance() -> BalanceOf { + >::get() + } +} diff --git a/precompiles/bridge-transfer/src/mock.rs b/pallets/assets-handler/src/mock.rs similarity index 50% rename from precompiles/bridge-transfer/src/mock.rs rename to pallets/assets-handler/src/mock.rs index d9ad76d3b0..ebfc2e6422 100644 --- a/precompiles/bridge-transfer/src/mock.rs +++ b/pallets/assets-handler/src/mock.rs @@ -15,41 +15,41 @@ // along with Litentry. If not, see . use super::*; +use crate::{self as pallet_assets_handler}; + use frame_support::{ - ord_parameter_types, parameter_types, - traits::{ConstU128, ConstU32, ConstU64, SortedMembers}, - weights::Weight, + assert_ok, ord_parameter_types, parameter_types, + traits::{AsEnsureOriginWithArg, ConstU32, ConstU64, SortedMembers}, + PalletId, }; +use frame_system::EnsureSignedBy; use hex_literal::hex; -use pallet_evm::{AddressMapping, EnsureAddressNever, EnsureAddressRoot}; -use precompile_utils::precompile_set::{AddressU64, PrecompileAt, PrecompileSetBuilder}; -use sp_core::{H160, H256}; +use pallet_assets_handler::AssetInfo; +use sp_core::H256; use sp_runtime::{ - testing::Header, - traits::{BlakeTwo256, IdentityLookup}, - AccountId32, + generic, + traits::{AccountIdConversion, BlakeTwo256, IdentityLookup}, }; - -pub type AccountId = AccountId32; -pub type Balance = u128; -pub type BlockNumber = u64; - -type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; +pub const TEST_THRESHOLD: u32 = 2; +pub type SignedExtra = (frame_system::CheckSpecVersion,); +type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; type Block = frame_system::mocking::MockBlock; -pub const MAXIMUM_ISSURANCE: u64 = 20_000_000_000_000; +type Header = generic::Header; +type Balance = u64; +// Configure a mock runtime to test the pallet. frame_support::construct_runtime!( pub enum Test where - Block = Block, - NodeBlock = Block, - UncheckedExtrinsic = UncheckedExtrinsic + Block = Block, + NodeBlock = Block, + UncheckedExtrinsic = UncheckedExtrinsic { - System: frame_system::{Pallet, Call, Config, Storage, Event}, - Evm: pallet_evm::{Pallet, Config, Call, Storage, Event}, - Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, - Bridge: pallet_bridge::{Pallet, Call, Storage, Event}, - BridgeTransfer: pallet_bridge_transfer::{Pallet, Call, Storage, Event}, - Timestamp: pallet_timestamp::{Pallet, Call, Storage, Inherent}, + System: frame_system, + Balances: pallet_balances, + Bridge: pallet_bridge, + Assets: pallet_assets, + AssetsHandler: pallet_assets_handler, + BridgeTransfer: pallet_bridge_transfer, } ); @@ -62,17 +62,17 @@ impl frame_system::Config for Test { type RuntimeOrigin = RuntimeOrigin; type RuntimeCall = RuntimeCall; type Index = u64; - type BlockNumber = BlockNumber; + type BlockNumber = u64; type Hash = H256; type Hashing = BlakeTwo256; - type AccountId = AccountId; + type AccountId = u64; type Lookup = IdentityLookup; type Header = Header; type RuntimeEvent = RuntimeEvent; type BlockHashCount = BlockHashCount; type DbWeight = (); type Version = (); - type AccountData = pallet_balances::AccountData; + type AccountData = pallet_balances::AccountData; type OnNewAccount = (); type OnKilledAccount = (); type SystemWeightInfo = (); @@ -92,7 +92,7 @@ impl pallet_balances::Config for Test { type Balance = Balance; type DustRemoval = (); type RuntimeEvent = RuntimeEvent; - type ExistentialDeposit = ConstU128<1>; + type ExistentialDeposit = ConstU64<1>; type AccountStore = System; type WeightInfo = (); type MaxLocks = ConstU32<100>; @@ -106,8 +106,8 @@ impl pallet_balances::Config for Test { parameter_types! { pub const TestChainId: u8 = 5; - pub const ProposalLifetime: u64 = 100; - pub TreasuryAccount: AccountId = U8Wrapper(0u8).into(); + pub const ProposalLifetime: u64 = 50; + pub const TreasuryAccount:u64 = 0x8; } impl pallet_bridge::Config for Test { @@ -115,146 +115,148 @@ impl pallet_bridge::Config for Test { type BridgeCommitteeOrigin = frame_system::EnsureRoot; type Proposal = RuntimeCall; type BridgeChainId = TestChainId; - type Currency = Balances; + type Balance = Balance; type ProposalLifetime = ProposalLifetime; - type TreasuryAccount = TreasuryAccount; type WeightInfo = (); } +pub const MAXIMUM_ISSURANCE: u64 = 20_000_000_000_000; + parameter_types! { pub const MaximumIssuance: u64 = MAXIMUM_ISSURANCE; pub const ExternalTotalIssuance: u64 = MAXIMUM_ISSURANCE; // bridge::derive_resource_id(1, &bridge::hashing::blake2_128(b"LIT")); pub const NativeTokenResourceId: [u8; 32] = hex!("0000000000000000000000000000000a21dfe87028f214dd976be8479f5af001"); + // TransferAssetsMembers + static MembersProviderTestvalue:Vec = vec![RELAYER_A, RELAYER_B, RELAYER_C]; } -pub struct TransferNativeAnyone; -impl SortedMembers for TransferNativeAnyone { - fn sorted_members() -> Vec { - vec![] +ord_parameter_types! { + pub const SetMaximumIssuanceOrigin: u64 = RELAYER_A; +} + +pub struct MembersProvider; +impl SortedMembers for MembersProvider { + fn sorted_members() -> Vec { + MembersProviderTestvalue::get() } - fn contains(_who: &AccountId) -> bool { - true + #[cfg(not(feature = "runtime-benchmarks"))] + fn contains(who: &u64) -> bool { + Self::sorted_members().contains(who) } #[cfg(feature = "runtime-benchmarks")] - fn add(_: &AccountId) { + fn add(_: &u64) { unimplemented!() } -} - -impl pallet_bridge_transfer::Config for Test { - type RuntimeEvent = RuntimeEvent; - type BridgeOrigin = pallet_bridge::EnsureBridge; - type TransferNativeMembers = TransferNativeAnyone; - type SetMaximumIssuanceOrigin = frame_system::EnsureRoot; - type NativeTokenResourceId = NativeTokenResourceId; - type DefaultMaximumIssuance = MaximumIssuance; - type ExternalTotalIssuance = ExternalTotalIssuance; - type WeightInfo = (); -} - -parameter_types! { - pub const VerifyPRuntime: bool = false; - pub const VerifyRelaychainGenesisBlockHash: bool = false; -} - -impl pallet_timestamp::Config for Test { - type Moment = u64; - type OnTimestampSet = (); - type MinimumPeriod = ConstU64<1>; - type WeightInfo = (); -} -pub fn precompile_address() -> H160 { - // 0x502d - H160::from_low_u64_be(20480 + 45) -} - -pub type BridgeTransferMockPrecompile = - PrecompileSetBuilder, BridgeTransferPrecompile>,)>; - -pub type PCall = BridgeTransferPrecompileCall; - -pub struct TruncatedAddressMapping; -impl AddressMapping for TruncatedAddressMapping { - fn into_account_id(address: H160) -> AccountId { - let mut data = [0u8; 32]; - data[0..20].copy_from_slice(&address[..]); - AccountId::from(Into::<[u8; 32]>::into(data)) + #[cfg(feature = "runtime-benchmarks")] + fn contains(_who: &u64) -> bool { + true } } -// silly for test purpose only -pub struct U8Wrapper(pub u8); -impl From for H160 { - fn from(x: U8Wrapper) -> H160 { - H160::repeat_byte(x.0) - } -} -impl From for H256 { - fn from(x: U8Wrapper) -> H256 { - let h160 = H160::repeat_byte(x.0); - let mut data = [0u8; 32]; - data[0..20].copy_from_slice(&h160[..]); - data.into() - } -} -impl From for AccountId { - fn from(x: U8Wrapper) -> AccountId { - TruncatedAddressMapping::into_account_id(x.into()) - } +impl pallet_assets::Config for Test { + type RuntimeEvent = RuntimeEvent; + type Balance = Balance; + type AssetId = u32; + type AssetIdParameter = u32; + type Currency = Balances; + type CreateOrigin = AsEnsureOriginWithArg>; + type ForceOrigin = frame_system::EnsureRoot; + type AssetDeposit = ConstU64<1>; + type AssetAccountDeposit = ConstU64<10>; + type MetadataDepositBase = ConstU64<1>; + type MetadataDepositPerByte = ConstU64<1>; + type ApprovalDeposit = ConstU64<1>; + type StringLimit = ConstU32<50>; + type Freezer = (); + type WeightInfo = (); + type CallbackHandle = (); + type Extra = (); + type RemoveItemsLimit = ConstU32<5>; + #[cfg(feature = "runtime-benchmarks")] + type BenchmarkHelper = (); } -parameter_types! { - pub PrecompilesValue: BridgeTransferMockPrecompile = BridgeTransferMockPrecompile::new(); - pub WeightPerGas: Weight = Weight::from_parts(1, 0); +impl pallet_assets_handler::Config for Test { + type RuntimeEvent = RuntimeEvent; + type TreasuryAccount = TreasuryAccount; + type SetMaximumIssuanceOrigin = EnsureSignedBy; + type DefaultMaximumIssuance = MaximumIssuance; + type ExternalTotalIssuance = ExternalTotalIssuance; } -impl pallet_evm::Config for Test { - type FeeCalculator = (); - type GasWeightMapping = pallet_evm::FixedGasWeightMapping; - type WeightPerGas = WeightPerGas; - type CallOrigin = EnsureAddressRoot; - type WithdrawOrigin = EnsureAddressNever; - type AddressMapping = TruncatedAddressMapping; - type Currency = Balances; - type RuntimeEvent = RuntimeEvent; - type Runner = pallet_evm::runner::stack::Runner; - type PrecompilesType = BridgeTransferMockPrecompile; - type PrecompilesValue = PrecompilesValue; - type Timestamp = Timestamp; - type ChainId = (); - type OnChargeTransaction = (); - type BlockGasLimit = (); - type BlockHashMapping = pallet_evm::SubstrateBlockHashMapping; - type FindAuthor = (); - type OnCreate = (); +impl pallet_bridge_transfer::Config for Test { + type BridgeOrigin = pallet_bridge::EnsureBridge; + type TransferAssetsMembers = MembersProvider; + type BridgeHandler = AssetsHandler; type WeightInfo = (); - type GasLimitPovSizeRatio = ConstU64<4>; } -pub const ENDOWED_BALANCE: Balance = 100_000_000; +pub const RELAYER_A: u64 = 0x2; +pub const RELAYER_B: u64 = 0x3; +pub const RELAYER_C: u64 = 0x4; +pub const ENDOWED_BALANCE: u64 = 100_000_000; pub fn new_test_ext() -> sp_io::TestExternalities { - let bridge_id: AccountId = U8Wrapper(0u8).into(); - let treasury_account: AccountId = U8Wrapper(8u8).into(); + let bridge_id = PalletId(*b"litry/bg").into_account_truncating(); + let treasury_account: u64 = 0x8; let mut t = frame_system::GenesisConfig::default().build_storage::().unwrap(); pallet_balances::GenesisConfig:: { balances: vec![ (bridge_id, ENDOWED_BALANCE), - (U8Wrapper(1u8).into(), ENDOWED_BALANCE), + (RELAYER_A, ENDOWED_BALANCE), (treasury_account, ENDOWED_BALANCE), ], } .assimilate_storage(&mut t) .unwrap(); let mut ext = sp_io::TestExternalities::new(t); - ext.execute_with(|| frame_system::Pallet::::set_block_number(1)); + ext.execute_with(|| { + frame_system::Pallet::::set_block_number(1); + let resource_id = NativeTokenResourceId::get(); + let native_token_asset_info: AssetInfo< + ::AssetId, + ::Balance, + > = AssetInfo { fee: 0u64, asset: None }; + // Setup asset handler + assert_ok!(AssetsHandler::set_resource( + RuntimeOrigin::root(), + resource_id, + native_token_asset_info + )); + }); ext } +pub fn new_test_ext_initialized( + src_id: pallet_bridge::BridgeChainId, + r_id: pallet_bridge::ResourceId, + asset: AssetInfo< + ::AssetId, + ::Balance, + >, +) -> sp_io::TestExternalities { + let mut t = new_test_ext(); + t.execute_with(|| { + // Set and check threshold + assert_ok!(Bridge::set_threshold(RuntimeOrigin::root(), TEST_THRESHOLD)); + assert_eq!(Bridge::relayer_threshold(), TEST_THRESHOLD); + // Add relayers + assert_ok!(Bridge::add_relayer(RuntimeOrigin::root(), RELAYER_A)); + assert_ok!(Bridge::add_relayer(RuntimeOrigin::root(), RELAYER_B)); + assert_ok!(Bridge::add_relayer(RuntimeOrigin::root(), RELAYER_C)); + // Whitelist chain + assert_ok!(Bridge::whitelist_chain(RuntimeOrigin::root(), src_id)); + + // Setup asset handler + assert_ok!(AssetsHandler::set_resource(RuntimeOrigin::root(), r_id, asset)); + }); + t +} + // Checks events against the latest. A contiguous set of events must be provided. They must // include the most recent event, but do not have to include every past event. pub fn assert_events(mut expected: Vec) { diff --git a/pallets/assets-handler/src/tests.rs b/pallets/assets-handler/src/tests.rs new file mode 100644 index 0000000000..ac1d28a4c6 --- /dev/null +++ b/pallets/assets-handler/src/tests.rs @@ -0,0 +1,408 @@ +// Copyright 2020-2024 Trust Computing GmbH. +// This file is part of Litentry. +// +// Litentry is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// Litentry is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with Litentry. If not, see . + +use super::{ + mock::{ + assert_events, new_test_ext, new_test_ext_initialized, AssetsHandler, Balances, Bridge, + BridgeTransfer, NativeTokenResourceId, ProposalLifetime, RuntimeCall, RuntimeEvent, + RuntimeOrigin, Test, TreasuryAccount, ENDOWED_BALANCE, MAXIMUM_ISSURANCE, RELAYER_A, + RELAYER_B, RELAYER_C, + }, + ExternalBalances, MaximumIssuance as MaximumIssuanceStorage, *, +}; +use frame_support::{assert_noop, assert_ok}; +use hex_literal::hex; + +fn make_transfer_proposal(to: u64, amount: u64) -> RuntimeCall { + let rid = NativeTokenResourceId::get(); + // let amount + RuntimeCall::BridgeTransfer(pallet_bridge_transfer::Call::transfer { to, amount, rid }) +} + +#[test] +fn constant_equality() { + let r_id = pallet_bridge::derive_resource_id(1, &pallet_bridge::hashing::blake2_128(b"LIT")); + let encoded: [u8; 32] = + hex!("0000000000000000000000000000000a21dfe87028f214dd976be8479f5af001"); + assert_eq!(r_id, encoded); +} + +#[test] +fn transfer() { + let dest_bridge_id: pallet_bridge::BridgeChainId = 0; + let resource_id = NativeTokenResourceId::get(); + let native_token_asset_info: AssetInfo< + ::AssetId, + ::Balance, + > = AssetInfo { fee: 0u64, asset: None }; + + new_test_ext_initialized(dest_bridge_id, resource_id, native_token_asset_info).execute_with( + || { + // Transfer and check result + assert_ok!(BridgeTransfer::transfer( + RuntimeOrigin::signed(Bridge::account_id()), + RELAYER_A, + 10, + resource_id, + )); + assert_eq!(Balances::free_balance(RELAYER_A), ENDOWED_BALANCE + 10); + + assert_events(vec![ + RuntimeEvent::AssetsHandler(Event::TokenBridgeIn { + asset_id: None, + to: RELAYER_A, + amount: 10, + }), + RuntimeEvent::Balances(pallet_balances::Event::Minted { + who: RELAYER_A, + amount: 10, + }), + ]); + }, + ) +} + +#[test] +fn transfer_assets() { + let dest_bridge_id: pallet_bridge::BridgeChainId = 0; + let resource_id = NativeTokenResourceId::get(); + let native_token_asset_info: AssetInfo< + ::AssetId, + ::Balance, + > = AssetInfo { fee: 10u64, asset: None }; + + new_test_ext_initialized(dest_bridge_id, resource_id, native_token_asset_info).execute_with( + || { + let dest_account: Vec = vec![1]; + assert_ok!(pallet_bridge_transfer::Pallet::::transfer_assets( + RuntimeOrigin::signed(RELAYER_A), + 100, + dest_account.clone(), + dest_bridge_id, + resource_id + )); + assert_eq!( + pallet_balances::Pallet::::free_balance(TreasuryAccount::get()), + ENDOWED_BALANCE + 10 + ); + assert_eq!( + pallet_balances::Pallet::::free_balance(RELAYER_A), + ENDOWED_BALANCE - 100 + ); + assert_events(vec![ + RuntimeEvent::AssetsHandler(Event::TokenBridgeOut { + asset_id: None, + to: RELAYER_A, + amount: 100, + fee: 10, + }), + RuntimeEvent::Balances(pallet_balances::Event::Burned { + who: RELAYER_A, + amount: 100, + }), + RuntimeEvent::Balances(pallet_balances::Event::Minted { + who: TreasuryAccount::get(), + amount: 10, + }), + RuntimeEvent::Bridge(pallet_bridge::Event::FungibleTransfer( + dest_bridge_id, + 1, + resource_id, + 100 - 10, + dest_account, + )), + ]); + }, + ) +} + +#[test] +fn mint_overflow() { + let dest_bridge_id: pallet_bridge::BridgeChainId = 0; + let resource_id = NativeTokenResourceId::get(); + let native_token_asset_info: AssetInfo< + ::AssetId, + ::Balance, + > = AssetInfo { fee: 0u64, asset: None }; + + new_test_ext_initialized(dest_bridge_id, resource_id, native_token_asset_info).execute_with( + || { + let bridge_id: u64 = Bridge::account_id(); + assert_eq!(Balances::free_balance(bridge_id), ENDOWED_BALANCE); + + assert_noop!( + BridgeTransfer::transfer( + RuntimeOrigin::signed(Bridge::account_id()), + RELAYER_A, + u64::MAX, + resource_id, + ), + Error::::Overflow + ); + }, + ) +} + +#[test] +fn transfer_to_regular_account() { + new_test_ext().execute_with(|| { + let dest_chain = 0; + let asset = pallet_bridge::derive_resource_id( + dest_chain, + &pallet_bridge::hashing::blake2_128(b"an asset"), + ); + let amount: u64 = 100; + + assert_noop!( + BridgeTransfer::transfer( + RuntimeOrigin::signed(Bridge::account_id()), + RELAYER_A, + amount, + asset, + ), + Error::::InvalidResourceId + ); + }) +} + +#[test] +fn create_successful_transfer_proposal() { + let src_id: pallet_bridge::BridgeChainId = 0; + let r_id = NativeTokenResourceId::get(); + let native_token_asset_info: AssetInfo< + ::AssetId, + ::Balance, + > = AssetInfo { fee: 0u64, asset: None }; + + new_test_ext_initialized(src_id, r_id, native_token_asset_info).execute_with(|| { + let prop_id = 1; + let proposal = make_transfer_proposal(RELAYER_A, 10); + + // Create proposal (& vote) + assert_ok!(Bridge::acknowledge_proposal( + RuntimeOrigin::signed(RELAYER_A), + prop_id, + src_id, + r_id, + Box::new(proposal.clone()) + )); + let prop = Bridge::votes(src_id, (prop_id, proposal.clone())).unwrap(); + let expected = pallet_bridge::ProposalVotes { + votes_for: vec![RELAYER_A], + votes_against: vec![], + status: pallet_bridge::ProposalStatus::Initiated, + expiry: ProposalLifetime::get() + 1, + }; + assert_eq!(prop, expected); + + // Second relayer votes against + assert_ok!(Bridge::reject_proposal( + RuntimeOrigin::signed(RELAYER_B), + prop_id, + src_id, + r_id, + Box::new(proposal.clone()) + )); + let prop = Bridge::votes(src_id, (prop_id, proposal.clone())).unwrap(); + let expected = pallet_bridge::ProposalVotes { + votes_for: vec![RELAYER_A], + votes_against: vec![RELAYER_B], + status: pallet_bridge::ProposalStatus::Initiated, + expiry: ProposalLifetime::get() + 1, + }; + assert_eq!(prop, expected); + + // Third relayer votes in favour + assert_ok!(Bridge::acknowledge_proposal( + RuntimeOrigin::signed(RELAYER_C), + prop_id, + src_id, + r_id, + Box::new(proposal.clone()) + )); + let prop = Bridge::votes(src_id, (prop_id, proposal)).unwrap(); + let expected = pallet_bridge::ProposalVotes { + votes_for: vec![RELAYER_A, RELAYER_C], + votes_against: vec![RELAYER_B], + status: pallet_bridge::ProposalStatus::Approved, + expiry: ProposalLifetime::get() + 1, + }; + assert_eq!(prop, expected); + + assert_eq!(Balances::free_balance(RELAYER_A), ENDOWED_BALANCE + 10); + + assert_events(vec![ + RuntimeEvent::Bridge(pallet_bridge::Event::VoteFor(src_id, prop_id, RELAYER_A)), + RuntimeEvent::Bridge(pallet_bridge::Event::VoteAgainst(src_id, prop_id, RELAYER_B)), + RuntimeEvent::Bridge(pallet_bridge::Event::VoteFor(src_id, prop_id, RELAYER_C)), + RuntimeEvent::Bridge(pallet_bridge::Event::ProposalApproved(src_id, prop_id)), + RuntimeEvent::AssetsHandler(Event::TokenBridgeIn { + asset_id: None, + to: RELAYER_A, + amount: 10, + }), + RuntimeEvent::Balances(pallet_balances::Event::Minted { who: RELAYER_A, amount: 10 }), + RuntimeEvent::Bridge(pallet_bridge::Event::ProposalSucceeded(src_id, prop_id)), + ]); + }) +} + +#[test] +fn exceed_max_supply() { + new_test_ext().execute_with(|| { + let bridge_id: u64 = Bridge::account_id(); + let resource_id = NativeTokenResourceId::get(); + assert_eq!(Balances::free_balance(bridge_id), ENDOWED_BALANCE); + + assert_noop!( + BridgeTransfer::transfer( + RuntimeOrigin::signed(Bridge::account_id()), + RELAYER_A, + MAXIMUM_ISSURANCE + 1, + resource_id, + ), + Error::::ReachMaximumSupply + ); + }) +} + +#[test] +fn exceed_max_supply_second() { + new_test_ext().execute_with(|| { + let bridge_id: u64 = Bridge::account_id(); + let resource_id = NativeTokenResourceId::get(); + assert_eq!(Balances::free_balance(bridge_id), ENDOWED_BALANCE); + + assert_ok!(BridgeTransfer::transfer( + RuntimeOrigin::signed(Bridge::account_id()), + RELAYER_A, + MAXIMUM_ISSURANCE - Balances::total_issuance(), + resource_id, + )); + + assert_noop!( + BridgeTransfer::transfer( + RuntimeOrigin::signed(Bridge::account_id()), + RELAYER_A, + 10, + resource_id, + ), + Error::::ReachMaximumSupply + ); + }) +} + +#[test] +fn test_external_balances_adjusted() { + let native_token_asset_info: AssetInfo< + ::AssetId, + ::Balance, + > = AssetInfo { fee: 0u64, asset: None }; + new_test_ext().execute_with(|| { + // Set the new external_balances + assert_noop!( + AssetsHandler::set_external_balances( + RuntimeOrigin::signed(Bridge::account_id()), + MaximumIssuanceStorage::::get() / 2 + ), + sp_runtime::DispatchError::BadOrigin + ); + assert_ok!(AssetsHandler::set_external_balances( + RuntimeOrigin::root(), + MaximumIssuanceStorage::::get() / 2 + )); + + // Check inital state + let bridge_id: u64 = Bridge::account_id(); + let resource_id = NativeTokenResourceId::get(); + assert_eq!(Balances::free_balance(bridge_id), ENDOWED_BALANCE); + // Transfer and check result + // Check the external_balances + assert_eq!(ExternalBalances::::get(), MaximumIssuanceStorage::::get() / 2); + assert_ok!(BridgeTransfer::transfer( + RuntimeOrigin::signed(Bridge::account_id()), + RELAYER_A, + 10, + resource_id, + )); + assert_eq!(Balances::free_balance(RELAYER_A), ENDOWED_BALANCE + 10); + + // Check the external_balances + assert_eq!(ExternalBalances::::get(), MaximumIssuanceStorage::::get() / 2 - 10); + + assert_events(vec![ + RuntimeEvent::AssetsHandler(Event::TokenBridgeIn { + asset_id: None, + to: RELAYER_A, + amount: 10, + }), + RuntimeEvent::Balances(pallet_balances::Event::Minted { who: RELAYER_A, amount: 10 }), + ]); + + // Token cross out of parachain + // Whitelist setup + let dest_chain = 0; + assert_ok!(AssetsHandler::set_resource( + RuntimeOrigin::root(), + resource_id, + native_token_asset_info + )); + assert_ok!(pallet_bridge::Pallet::::whitelist_chain( + RuntimeOrigin::root(), + dest_chain + )); + assert_ok!(BridgeTransfer::transfer_assets( + RuntimeOrigin::signed(RELAYER_A), + 5, + vec![0u8, 0u8, 0u8, 0u8], // no meaning + dest_chain, + resource_id, + )); + + // Check the external_balances + assert_eq!(ExternalBalances::::get(), MaximumIssuanceStorage::::get() / 2 - 5); + }); +} + +#[test] +fn set_maximum_issuance() { + new_test_ext().execute_with(|| { + assert_eq!(MaximumIssuanceStorage::::get(), mock::MaximumIssuance::get()); + assert_ok!(pallet::Pallet::::set_maximum_issuance( + RuntimeOrigin::signed(RELAYER_A), + 2 + )); + assert_eq!(MaximumIssuanceStorage::::get(), 2); + frame_system::Pallet::::assert_last_event( + crate::Event::::MaximumIssuanceChanged { + old_value: mock::MaximumIssuance::get(), + } + .into(), + ); + }); +} + +#[test] +fn set_maximum_issuance_fails_with_unprivileged_origin() { + new_test_ext().execute_with(|| { + assert_eq!(MaximumIssuanceStorage::::get(), mock::MaximumIssuance::get()); + assert_noop!( + pallet::Pallet::::set_maximum_issuance(RuntimeOrigin::signed(RELAYER_B), 2), + sp_runtime::DispatchError::BadOrigin + ); + assert_eq!(MaximumIssuanceStorage::::get(), mock::MaximumIssuance::get()); + }); +} diff --git a/pallets/bridge-transfer/Cargo.toml b/pallets/bridge-transfer/Cargo.toml index 065999bb27..bf3bd20783 100644 --- a/pallets/bridge-transfer/Cargo.toml +++ b/pallets/bridge-transfer/Cargo.toml @@ -7,6 +7,7 @@ repository = 'https://github.com/litentry/litentry-pallets' version = '0.1.0' [dependencies] +hex-literal = { workspace = true } parity-scale-codec = { workspace = true } scale-info = { workspace = true } @@ -21,10 +22,8 @@ frame-support = { workspace = true } frame-system = { workspace = true } pallet-bridge = { workspace = true } -pallet-parachain-staking = { workspace = true } [dev-dependencies] -hex-literal = { workspace = true } pallet-balances = { workspace = true, features = ["std"] } pallet-timestamp = { workspace = true, features = ["std"] } @@ -34,6 +33,7 @@ runtime-benchmarks = [ "frame-benchmarking/runtime-benchmarks", "frame-support/runtime-benchmarks", "frame-system/runtime-benchmarks", + "pallet-bridge/runtime-benchmarks", ] std = [ "parity-scale-codec/std", diff --git a/pallets/bridge-transfer/src/benchmarking.rs b/pallets/bridge-transfer/src/benchmarking.rs index 8878a53a7a..505b01b234 100644 --- a/pallets/bridge-transfer/src/benchmarking.rs +++ b/pallets/bridge-transfer/src/benchmarking.rs @@ -18,80 +18,53 @@ #![cfg(feature = "runtime-benchmarks")] #![allow(clippy::type_complexity)] -#[allow(unused)] +#![allow(unused)] +#![allow(clippy::useless_vec)] use super::*; -use bridge::BalanceOf as balance; +use crate::Pallet as bridge_transfer; use frame_benchmarking::{account, benchmarks, impl_benchmark_test_suite}; -use frame_support::{ - ensure, - traits::{Currency, SortedMembers}, - PalletId, -}; +use frame_support::{ensure, traits::SortedMembers, PalletId}; use frame_system::RawOrigin; -use pallet_bridge::{EnsureOrigin, Get}; +use hex_literal::hex; +use pallet_bridge::{EnsureBridge, EnsureOrigin, Get}; use sp_arithmetic::traits::Saturating; use sp_runtime::traits::AccountIdConversion; use sp_std::vec; -const MAXIMUM_ISSURANCE: u32 = 20_000; - +const UNIT_ISSURANCE: u32 = 20_000; +const NATIVE_TOKEN_RESOURCE_ID: [u8; 32] = + hex!("0000000000000000000000000000000a21dfe87028f214dd976be8479f5af001"); fn create_user(string: &'static str, n: u32, seed: u32) -> T::AccountId { - let user = account(string, n, seed); + let user: T::AccountId = account(string, n, seed); + bridge_transfer::::transfer( + EnsureBridge::::try_successful_origin().unwrap(), + user.clone(), + (n * UNIT_ISSURANCE).into(), + NATIVE_TOKEN_RESOURCE_ID, + ); - let default_balance = T::Currency::minimum_balance().saturating_mul(MAXIMUM_ISSURANCE.into()); - let _ = T::Currency::deposit_creating(&user, default_balance); user } benchmarks! { - transfer_native{ - let sender:T::AccountId = create_user::("sender",0u32,1u32); - - ensure!(T::TransferNativeMembers::contains(&sender),"add transfer_native_member failed"); + transfer_assets{ + let sender:T::AccountId = create_user::("sender",10u32,10u32); + ensure!(T::TransferAssetsMembers::contains(&sender),"add transfer_native_member failed"); let dest_chain = 0; - pallet_bridge::Pallet::::update_fee( - RawOrigin::Root.into(), - dest_chain, - 10u32.into(), - )?; + let r_id = NATIVE_TOKEN_RESOURCE_ID; - pallet_bridge::Pallet::::whitelist_chain( - RawOrigin::Root.into(), - dest_chain, - )?; - - }:_(RawOrigin::Signed(sender),50u32.into(),vec![0u8, 0u8, 0u8, 0u8],dest_chain) + }:_(RawOrigin::Signed(sender),50u32.into(),vec![0u8, 0u8, 0u8, 0u8],dest_chain,r_id) transfer{ + let r_id = NATIVE_TOKEN_RESOURCE_ID; let sender = PalletId(*b"litry/bg").into_account_truncating(); - let default_balance = - T::Currency::minimum_balance().saturating_mul(MAXIMUM_ISSURANCE.into()); - let _ = T::Currency::deposit_creating(&sender, default_balance); - let to_account:T::AccountId = create_user::("to",1u32,2u32); - let resource_id :bridge::ResourceId= T::NativeTokenResourceId::get(); - - }:_(RawOrigin::Signed(sender),to_account,50u32.into(),resource_id) - - set_maximum_issuance{ - let origin = T::SetMaximumIssuanceOrigin::try_successful_origin().expect("SetMaximumIssuanceOrigin has no successful origin required for the benchmark"); - let maximum_issuance:balance = 2u32.into(); - }:_(origin,maximum_issuance) - verify{ - assert_eq!(MaximumIssuance::::get(),maximum_issuance); - } - - set_external_balances{ - let external_balances:balance = (MAXIMUM_ISSURANCE / 2).into(); - }:_(RawOrigin::Root,external_balances) - verify{ - assert_eq!(>::get(),external_balances); - } + }:_(RawOrigin::Signed(sender),to_account,50u32.into(), r_id) } impl_benchmark_test_suite!(Pallet, crate::mock::new_test_ext(), crate::mock::Test); diff --git a/pallets/bridge-transfer/src/lib.rs b/pallets/bridge-transfer/src/lib.rs index 64ef8aabb2..89ec4775aa 100644 --- a/pallets/bridge-transfer/src/lib.rs +++ b/pallets/bridge-transfer/src/lib.rs @@ -33,21 +33,19 @@ pub mod pallet { use crate::weights::WeightInfo; use frame_support::{ pallet_prelude::*, - traits::{fungible::Mutate, Currency, SortedMembers, StorageVersion}, + traits::{SortedMembers, StorageVersion}, transactional, }; use frame_system::pallet_prelude::*; - use pallet_parachain_staking::IssuanceAdapter; - use sp_runtime::traits::{BadOrigin, CheckedAdd, CheckedSub}; + use sp_runtime::traits::BadOrigin; use sp_std::vec::Vec; pub use pallet_bridge as bridge; - type ResourceId = bridge::ResourceId; + pub type ResourceId = bridge::ResourceId; + pub type BridgeChainId = bridge::BridgeChainId; - pub type BalanceOf = <::Currency as Currency< - ::AccountId, - >>::Balance; + pub type BalanceOf = ::Balance; const STORAGE_VERSION: StorageVersion = StorageVersion::new(0); @@ -58,166 +56,66 @@ pub mod pallet { #[pallet::config] pub trait Config: frame_system::Config + bridge::Config { - type RuntimeEvent: From> + IsType<::RuntimeEvent>; - /// Specifies the origin check provided by the bridge for calls that can only be called by /// the bridge pallet type BridgeOrigin: EnsureOrigin; - /// The priviledged accounts to call the transfer_native - type TransferNativeMembers: SortedMembers; - - /// The privileged origin to call update_maximum_issuance - type SetMaximumIssuanceOrigin: EnsureOrigin; - - #[pallet::constant] - type NativeTokenResourceId: Get; - - #[pallet::constant] - type DefaultMaximumIssuance: Get>; + /// The priviledged accounts to call the transfer_assets + type TransferAssetsMembers: SortedMembers; - #[pallet::constant] - // In parachain local decimal format - type ExternalTotalIssuance: Get>; + // Handler of asset transfer/burn/mint etc. + type BridgeHandler: BridgeHandler, Self::AccountId, ResourceId>; /// Weight information for extrinsics in this pallet. type WeightInfo: WeightInfo; } - #[pallet::event] - #[pallet::generate_deposit(pub(super) fn deposit_event)] - pub enum Event { - /// MaximumIssuance was changed - MaximumIssuanceChanged { old_value: BalanceOf }, - /// A certain amount of native tokens was minted - NativeTokenMinted { to: T::AccountId, amount: BalanceOf }, - } - - #[pallet::error] - pub enum Error { - InvalidCommand, - InvalidResourceId, - ReachMaximumSupply, - OverFlow, - } - - #[pallet::storage] - #[pallet::getter(fn bridge_balances)] - pub type BridgeBalances = StorageDoubleMap< - _, - Twox64Concat, - bridge::ResourceId, - Twox64Concat, - T::AccountId, - bridge::BalanceOf, - >; - - #[pallet::type_value] - pub fn DefaultExternalBalances() -> bridge::BalanceOf { - T::ExternalTotalIssuance::get() - .checked_sub(&<::Currency as Currency< - ::AccountId, - >>::total_issuance()) - .map_or_else(|| 0u32.into(), |v| v) - } - - #[pallet::storage] - #[pallet::getter(fn external_balances)] - pub type ExternalBalances = - StorageValue<_, bridge::BalanceOf, ValueQuery, DefaultExternalBalances>; - - #[pallet::storage] - #[pallet::getter(fn maximum_issuance)] - pub type MaximumIssuance = - StorageValue<_, bridge::BalanceOf, ValueQuery, T::DefaultMaximumIssuance>; - #[pallet::call] impl Pallet { - /// Transfers some amount of the native token to some recipient on a (whitelisted) + /// Transfers some amount of non-native token to some recipient on a (whitelisted) /// destination chain. #[pallet::call_index(0)] - #[pallet::weight(::WeightInfo::transfer_native())] + #[pallet::weight(::WeightInfo::transfer_assets())] #[transactional] - pub fn transfer_native( + pub fn transfer_assets( origin: OriginFor, - amount: bridge::BalanceOf, + amount: BalanceOf, recipient: Vec, - dest_id: bridge::BridgeChainId, + dest_id: BridgeChainId, + resource_id: ResourceId, ) -> DispatchResult { let source = ensure_signed(origin)?; - ensure!(T::TransferNativeMembers::contains(&source), BadOrigin); - let resource_id = T::NativeTokenResourceId::get(); - - let external_balances = - >::get().checked_add(&amount).ok_or(Error::::OverFlow)?; - >::put(external_balances); - - >::transfer_fungible(source, dest_id, resource_id, recipient, amount) + ensure!(T::TransferAssetsMembers::contains(&source), BadOrigin); + let actual_dest_amount = + T::BridgeHandler::prepare_token_bridge_out(resource_id, source, amount)?; + >::signal_transfer_fungible( + dest_id, + resource_id, + recipient, + actual_dest_amount, + ) } /// Executes a simple currency transfer using the bridge account as the source + /// Should only be called by bridge pallet #[pallet::call_index(1)] #[pallet::weight(::WeightInfo::transfer())] + #[transactional] pub fn transfer( origin: OriginFor, to: T::AccountId, - amount: bridge::BalanceOf, + amount: BalanceOf, rid: ResourceId, ) -> DispatchResult { T::BridgeOrigin::ensure_origin(origin)?; - - let total_issuance = ::Currency::total_issuance(); - let new_issuance = total_issuance.checked_add(&amount).ok_or(Error::::OverFlow)?; - if new_issuance > MaximumIssuance::::get() { - return Err(Error::::ReachMaximumSupply.into()) - } - if rid == T::NativeTokenResourceId::get() { - let external_balances = >::get() - .checked_sub(&amount) - .ok_or(Error::::OverFlow)?; - // ERC20 LIT mint - ::Currency::mint_into(&to, amount)?; - // There is a Balances.Deposit event but many other extrinsics can - // trigger that event, use `NativeTokenMinted` for easier tracking - Self::deposit_event(Event::NativeTokenMinted { to, amount }); - >::put(external_balances); - } else { - return Err(Error::::InvalidResourceId.into()) - } - Ok(()) - } - - #[pallet::call_index(2)] - #[pallet::weight(::WeightInfo::set_maximum_issuance())] - pub fn set_maximum_issuance( - origin: OriginFor, - maximum_issuance: bridge::BalanceOf, - ) -> DispatchResultWithPostInfo { - T::SetMaximumIssuanceOrigin::ensure_origin(origin)?; - Self::deposit_event(Event::MaximumIssuanceChanged { - old_value: MaximumIssuance::::get(), - }); - MaximumIssuance::::set(maximum_issuance); - Ok(Pays::No.into()) - } - - #[pallet::call_index(3)] - #[pallet::weight(::WeightInfo::set_external_balances())] - pub fn set_external_balances( - origin: OriginFor, - external_balances: bridge::BalanceOf, - ) -> DispatchResult { - frame_system::ensure_root(origin)?; - >::put(external_balances); + T::BridgeHandler::prepare_token_bridge_in(rid, to, amount)?; Ok(()) } } - impl Pallet {} - - impl IssuanceAdapter> for Pallet { - fn adapted_total_issuance() -> BalanceOf { - >::get() - } + pub trait BridgeHandler { + fn prepare_token_bridge_in(resource_id: R, who: A, amount: B) -> Result; + // Return actual amount to target chain after deduction e.g fee + fn prepare_token_bridge_out(resource_id: R, who: A, amount: B) -> Result; } } diff --git a/pallets/bridge-transfer/src/mock.rs b/pallets/bridge-transfer/src/mock.rs index 691a643011..012df5032b 100644 --- a/pallets/bridge-transfer/src/mock.rs +++ b/pallets/bridge-transfer/src/mock.rs @@ -14,40 +14,45 @@ // You should have received a copy of the GNU General Public License // along with Litentry. If not, see . -#![cfg(test)] - +use crate::{self as bridge_transfer, Config}; use frame_support::{ - ord_parameter_types, parameter_types, - traits::{ConstU32, ConstU64, SortedMembers}, + assert_ok, ord_parameter_types, parameter_types, + traits::{ + fungible, + tokens::{Fortitude, Precision}, + ConstU32, ConstU64, SortedMembers, + }, PalletId, }; -use frame_system::{self as system, EnsureSignedBy}; +use frame_system as system; use hex_literal::hex; +pub use pallet_balances as balances; +use pallet_bridge::{self as bridge, ResourceId}; use sp_core::H256; use sp_runtime::{ - testing::Header, + generic, traits::{AccountIdConversion, BlakeTwo256, IdentityLookup}, + DispatchError, }; - -use crate::{self as bridge_transfer, Config}; -pub use pallet_balances as balances; -use pallet_bridge as bridge; - -type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; +pub const TEST_THRESHOLD: u32 = 2; +pub type SignedExtra = (frame_system::CheckSpecVersion,); +type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; type Block = frame_system::mocking::MockBlock; -pub const MAXIMUM_ISSURANCE: u64 = 20_000_000_000_000; +type Header = generic::Header; +type AccountId = u64; +type Balance = u64; +// Configure a mock runtime to test the pallet. frame_support::construct_runtime!( pub enum Test where Block = Block, NodeBlock = Block, UncheckedExtrinsic = UncheckedExtrinsic { - System: frame_system::{Pallet, Call, Config, Storage, Event}, - Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, - Bridge: bridge::{Pallet, Call, Storage, Event}, - BridgeTransfer: bridge_transfer::{Pallet, Call, Storage, Event}, - Timestamp: pallet_timestamp::{Pallet, Call, Storage, Inherent}, + System: frame_system, + Balances: pallet_balances, + Bridge: bridge, + BridgeTransfer: bridge_transfer, } ); @@ -87,7 +92,7 @@ ord_parameter_types! { } impl pallet_balances::Config for Test { - type Balance = u64; + type Balance = Balance; type DustRemoval = (); type RuntimeEvent = RuntimeEvent; type ExistentialDeposit = ConstU64<1>; @@ -104,7 +109,7 @@ impl pallet_balances::Config for Test { parameter_types! { pub const TestChainId: u8 = 5; - pub const ProposalLifetime: u64 = 100; + pub const ProposalLifetime: u64 = 50; pub const TreasuryAccount:u64 = 0x8; } @@ -113,25 +118,18 @@ impl bridge::Config for Test { type BridgeCommitteeOrigin = frame_system::EnsureRoot; type Proposal = RuntimeCall; type BridgeChainId = TestChainId; - type Currency = Balances; + type Balance = Balance; type ProposalLifetime = ProposalLifetime; - type TreasuryAccount = TreasuryAccount; type WeightInfo = (); } parameter_types! { - pub const MaximumIssuance: u64 = MAXIMUM_ISSURANCE; - pub const ExternalTotalIssuance: u64 = MAXIMUM_ISSURANCE; // bridge::derive_resource_id(1, &bridge::hashing::blake2_128(b"LIT")); pub const NativeTokenResourceId: [u8; 32] = hex!("0000000000000000000000000000000a21dfe87028f214dd976be8479f5af001"); - // transfernativemembers + // transferassetsmembers static MembersProviderTestvalue:Vec = vec![RELAYER_A, RELAYER_B, RELAYER_C]; } -ord_parameter_types! { - pub const SetMaximumIssuanceOrigin: u64 = RELAYER_A; -} - pub struct MembersProvider; impl SortedMembers for MembersProvider { fn sorted_members() -> Vec { @@ -154,26 +152,34 @@ impl SortedMembers for MembersProvider { } } -impl Config for Test { - type RuntimeEvent = RuntimeEvent; - type BridgeOrigin = bridge::EnsureBridge; - type TransferNativeMembers = MembersProvider; - type SetMaximumIssuanceOrigin = EnsureSignedBy; - type NativeTokenResourceId = NativeTokenResourceId; - type DefaultMaximumIssuance = MaximumIssuance; - type ExternalTotalIssuance = ExternalTotalIssuance; - type WeightInfo = (); -} - -parameter_types! { - pub const VerifyPRuntime: bool = false; - pub const VerifyRelaychainGenesisBlockHash: bool = false; +pub struct MockAssetsHandler; +impl bridge_transfer::BridgeHandler for MockAssetsHandler { + fn prepare_token_bridge_in( + _: ResourceId, + who: AccountId, + amount: Balance, + ) -> Result { + >::mint_into(&who, amount) + } + // Return actual amount to target chain after deduction e.g fee + fn prepare_token_bridge_out( + _: ResourceId, + who: AccountId, + amount: Balance, + ) -> Result { + >::burn_from( + &who, + amount, + Precision::Exact, + Fortitude::Polite, + ) + } } -impl pallet_timestamp::Config for Test { - type Moment = u64; - type OnTimestampSet = (); - type MinimumPeriod = ConstU64<1>; +impl Config for Test { + type BridgeOrigin = bridge::EnsureBridge; + type TransferAssetsMembers = MembersProvider; + type BridgeHandler = MockAssetsHandler; type WeightInfo = (); } @@ -184,6 +190,7 @@ pub const ENDOWED_BALANCE: u64 = 100_000_000; pub fn new_test_ext() -> sp_io::TestExternalities { let bridge_id = PalletId(*b"litry/bg").into_account_truncating(); + let dest_chain = 0u8; let treasury_account: u64 = 0x8; let mut t = frame_system::GenesisConfig::default().build_storage::().unwrap(); pallet_balances::GenesisConfig:: { @@ -196,7 +203,18 @@ pub fn new_test_ext() -> sp_io::TestExternalities { .assimilate_storage(&mut t) .unwrap(); let mut ext = sp_io::TestExternalities::new(t); - ext.execute_with(|| frame_system::Pallet::::set_block_number(1)); + ext.execute_with(|| { + frame_system::Pallet::::set_block_number(1); + // Set and check threshold + assert_ok!(Bridge::set_threshold(RuntimeOrigin::root(), TEST_THRESHOLD)); + assert_eq!(Bridge::relayer_threshold(), TEST_THRESHOLD); + // Add relayers + assert_ok!(Bridge::add_relayer(RuntimeOrigin::root(), RELAYER_A)); + assert_ok!(Bridge::add_relayer(RuntimeOrigin::root(), RELAYER_B)); + assert_ok!(Bridge::add_relayer(RuntimeOrigin::root(), RELAYER_C)); + // Whitelist chain + assert_ok!(Bridge::whitelist_chain(RuntimeOrigin::root(), dest_chain)); + }); ext } diff --git a/pallets/bridge-transfer/src/tests.rs b/pallets/bridge-transfer/src/tests.rs index 3bf3b55a3c..1edb72f6a6 100644 --- a/pallets/bridge-transfer/src/tests.rs +++ b/pallets/bridge-transfer/src/tests.rs @@ -14,22 +14,18 @@ // You should have received a copy of the GNU General Public License // along with Litentry. If not, see . -#![cfg(test)] - use super::{ bridge, mock::{ assert_events, balances, new_test_ext, Balances, Bridge, BridgeTransfer, NativeTokenResourceId, ProposalLifetime, RuntimeCall, RuntimeEvent, RuntimeOrigin, Test, - TreasuryAccount, ENDOWED_BALANCE, MAXIMUM_ISSURANCE, RELAYER_A, RELAYER_B, RELAYER_C, + TreasuryAccount, ENDOWED_BALANCE, RELAYER_A, RELAYER_B, RELAYER_C, }, *, }; use frame_support::{assert_noop, assert_ok}; - use hex_literal::hex; - -const TEST_THRESHOLD: u32 = 2; +use sp_runtime::ArithmeticError; fn make_transfer_proposal(to: u64, amount: u64) -> RuntimeCall { let rid = NativeTokenResourceId::get(); @@ -47,11 +43,9 @@ fn constant_equality() { #[test] fn transfer() { + let resource_id = NativeTokenResourceId::get(); + new_test_ext().execute_with(|| { - // Check inital state - let bridge_id: u64 = Bridge::account_id(); - let resource_id = NativeTokenResourceId::get(); - assert_eq!(Balances::free_balance(bridge_id), ENDOWED_BALANCE); // Transfer and check result assert_ok!(BridgeTransfer::transfer( RuntimeOrigin::signed(Bridge::account_id()), @@ -61,52 +55,39 @@ fn transfer() { )); assert_eq!(Balances::free_balance(RELAYER_A), ENDOWED_BALANCE + 10); - assert_events(vec![ - RuntimeEvent::Balances(balances::Event::Minted { who: RELAYER_A, amount: 10 }), - RuntimeEvent::BridgeTransfer(crate::Event::NativeTokenMinted { - to: RELAYER_A, - amount: 10, - }), - ]); + assert_events(vec![RuntimeEvent::Balances(balances::Event::Minted { + who: RELAYER_A, + amount: 10, + })]); }) } #[test] -fn transfer_native() { +fn transfer_assets() { + let dest_bridge_id: bridge::BridgeChainId = 0; + let resource_id = NativeTokenResourceId::get(); + new_test_ext().execute_with(|| { - let dest_bridge_id: bridge::BridgeChainId = 0; - let resource_id = NativeTokenResourceId::get(); let dest_account: Vec = vec![1]; - assert_ok!(pallet_bridge::Pallet::::update_fee( - RuntimeOrigin::root(), - dest_bridge_id, - 10 - )); - assert_ok!(pallet_bridge::Pallet::::whitelist_chain( - RuntimeOrigin::root(), - dest_bridge_id - )); - assert_ok!(Pallet::::transfer_native( + assert_ok!(Pallet::::transfer_assets( RuntimeOrigin::signed(RELAYER_A), 100, dest_account.clone(), - dest_bridge_id + dest_bridge_id, + resource_id )); assert_eq!( pallet_balances::Pallet::::free_balance(TreasuryAccount::get()), - ENDOWED_BALANCE + 10 + ENDOWED_BALANCE ); assert_eq!(pallet_balances::Pallet::::free_balance(RELAYER_A), ENDOWED_BALANCE - 100); assert_events(vec![ - mock::RuntimeEvent::Balances(pallet_balances::Event::Deposit { - who: TreasuryAccount::get(), - amount: 10, - }), + RuntimeEvent::Balances(balances::Event::Burned { who: RELAYER_A, amount: 100 }), RuntimeEvent::Bridge(bridge::Event::FungibleTransfer( dest_bridge_id, 1, resource_id, - 100 - 10, + 100, dest_account, )), ]); @@ -115,104 +96,33 @@ fn transfer_native() { #[test] fn mint_overflow() { - new_test_ext().execute_with(|| { - let bridge_id: u64 = Bridge::account_id(); - let resource_id = NativeTokenResourceId::get(); - assert_eq!(Balances::free_balance(bridge_id), ENDOWED_BALANCE); - - assert_noop!( - BridgeTransfer::transfer( - RuntimeOrigin::signed(Bridge::account_id()), - RELAYER_A, - u64::MAX, - resource_id, - ), - Error::::OverFlow - ); - }) -} + let resource_id = NativeTokenResourceId::get(); -#[test] -fn exceed_max_supply() { new_test_ext().execute_with(|| { let bridge_id: u64 = Bridge::account_id(); - let resource_id = NativeTokenResourceId::get(); assert_eq!(Balances::free_balance(bridge_id), ENDOWED_BALANCE); assert_noop!( BridgeTransfer::transfer( RuntimeOrigin::signed(Bridge::account_id()), RELAYER_A, - MAXIMUM_ISSURANCE + 1, - resource_id, - ), - Error::::ReachMaximumSupply - ); - }) -} - -#[test] -fn exceed_max_supply_second() { - new_test_ext().execute_with(|| { - let bridge_id: u64 = Bridge::account_id(); - let resource_id = NativeTokenResourceId::get(); - assert_eq!(Balances::free_balance(bridge_id), ENDOWED_BALANCE); - - assert_ok!(BridgeTransfer::transfer( - RuntimeOrigin::signed(Bridge::account_id()), - RELAYER_A, - MAXIMUM_ISSURANCE - Balances::total_issuance(), - resource_id, - )); - - assert_noop!( - BridgeTransfer::transfer( - RuntimeOrigin::signed(Bridge::account_id()), - RELAYER_A, - 10, + u64::MAX, resource_id, ), - Error::::ReachMaximumSupply - ); - }) -} - -#[test] -fn transfer_to_regular_account() { - new_test_ext().execute_with(|| { - let dest_chain = 0; - let asset = - bridge::derive_resource_id(dest_chain, &bridge::hashing::blake2_128(b"an asset")); - let amount: u64 = 100; - - assert_noop!( - BridgeTransfer::transfer( - RuntimeOrigin::signed(Bridge::account_id()), - RELAYER_A, - amount, - asset, - ), - Error::::InvalidResourceId + ArithmeticError::Overflow ); }) } #[test] fn create_successful_transfer_proposal() { + let src_id: bridge::BridgeChainId = 0; + let r_id = NativeTokenResourceId::get(); + new_test_ext().execute_with(|| { let prop_id = 1; - let src_id = 1; - let r_id = bridge::derive_resource_id(src_id, b"transfer"); - let resource = b"BridgeTransfer.transfer".to_vec(); let proposal = make_transfer_proposal(RELAYER_A, 10); - assert_ok!(Bridge::set_threshold(RuntimeOrigin::root(), TEST_THRESHOLD,)); - assert_ok!(Bridge::add_relayer(RuntimeOrigin::root(), RELAYER_A)); - assert_ok!(Bridge::add_relayer(RuntimeOrigin::root(), RELAYER_B)); - assert_ok!(Bridge::add_relayer(RuntimeOrigin::root(), RELAYER_C)); - assert_ok!(Bridge::whitelist_chain(RuntimeOrigin::root(), src_id)); - assert_ok!(Bridge::set_resource(RuntimeOrigin::root(), r_id, resource)); - // Create proposal (& vote) assert_ok!(Bridge::acknowledge_proposal( RuntimeOrigin::signed(RELAYER_A), @@ -272,103 +182,7 @@ fn create_successful_transfer_proposal() { RuntimeEvent::Bridge(bridge::Event::VoteFor(src_id, prop_id, RELAYER_C)), RuntimeEvent::Bridge(bridge::Event::ProposalApproved(src_id, prop_id)), RuntimeEvent::Balances(balances::Event::Minted { who: RELAYER_A, amount: 10 }), - RuntimeEvent::BridgeTransfer(crate::Event::NativeTokenMinted { - to: RELAYER_A, - amount: 10, - }), RuntimeEvent::Bridge(bridge::Event::ProposalSucceeded(src_id, prop_id)), ]); }) } - -#[test] -fn test_external_balances_adjusted() { - new_test_ext().execute_with(|| { - // Set the new external_balances - assert_noop!( - BridgeTransfer::set_external_balances( - RuntimeOrigin::signed(Bridge::account_id()), - MaximumIssuance::::get() / 2 - ), - sp_runtime::DispatchError::BadOrigin - ); - assert_ok!(BridgeTransfer::set_external_balances( - RuntimeOrigin::root(), - MaximumIssuance::::get() / 2 - )); - - // Check inital state - let bridge_id: u64 = Bridge::account_id(); - let resource_id = NativeTokenResourceId::get(); - assert_eq!(Balances::free_balance(bridge_id), ENDOWED_BALANCE); - // Transfer and check result - // Check the external_balances - assert_eq!(ExternalBalances::::get(), MaximumIssuance::::get() / 2); - assert_ok!(BridgeTransfer::transfer( - RuntimeOrigin::signed(Bridge::account_id()), - RELAYER_A, - 10, - resource_id, - )); - assert_eq!(Balances::free_balance(RELAYER_A), ENDOWED_BALANCE + 10); - - // Check the external_balances - assert_eq!(ExternalBalances::::get(), MaximumIssuance::::get() / 2 - 10); - - assert_events(vec![ - RuntimeEvent::Balances(balances::Event::Minted { who: RELAYER_A, amount: 10 }), - RuntimeEvent::BridgeTransfer(crate::Event::NativeTokenMinted { - to: RELAYER_A, - amount: 10, - }), - ]); - - // Token cross out of parachain - // Whitelist setup - let dest_chain = 0; - assert_ok!(pallet_bridge::Pallet::::update_fee(RuntimeOrigin::root(), dest_chain, 0)); - assert_ok!(pallet_bridge::Pallet::::whitelist_chain( - RuntimeOrigin::root(), - dest_chain - )); - assert_ok!(BridgeTransfer::transfer_native( - RuntimeOrigin::signed(RELAYER_A), - 5, - vec![0u8, 0u8, 0u8, 0u8], // no meaning - dest_chain, - )); - - // Check the external_balances - assert_eq!(ExternalBalances::::get(), MaximumIssuance::::get() / 2 - 5); - }); -} - -#[test] -fn set_maximum_issuance() { - new_test_ext().execute_with(|| { - assert_eq!(pallet::MaximumIssuance::::get(), mock::MaximumIssuance::get()); - assert_ok!(pallet::Pallet::::set_maximum_issuance( - RuntimeOrigin::signed(RELAYER_A), - 2 - )); - assert_eq!(pallet::MaximumIssuance::::get(), 2); - frame_system::Pallet::::assert_last_event( - crate::Event::::MaximumIssuanceChanged { - old_value: mock::MaximumIssuance::get(), - } - .into(), - ); - }); -} - -#[test] -fn set_maximum_issuance_fails_with_unprivileged_origin() { - new_test_ext().execute_with(|| { - assert_eq!(pallet::MaximumIssuance::::get(), mock::MaximumIssuance::get()); - assert_noop!( - pallet::Pallet::::set_maximum_issuance(RuntimeOrigin::signed(RELAYER_B), 2), - sp_runtime::DispatchError::BadOrigin - ); - assert_eq!(pallet::MaximumIssuance::::get(), mock::MaximumIssuance::get()); - }); -} diff --git a/pallets/bridge-transfer/src/weights.rs b/pallets/bridge-transfer/src/weights.rs index bb986d8926..0fe7be77c6 100644 --- a/pallets/bridge-transfer/src/weights.rs +++ b/pallets/bridge-transfer/src/weights.rs @@ -47,10 +47,8 @@ use sp_std::marker::PhantomData; /// Weight functions needed for pallet_bridge_transfer. pub trait WeightInfo { - fn transfer_native() -> Weight; + fn transfer_assets() -> Weight; fn transfer() -> Weight; - fn set_maximum_issuance() -> Weight; - fn set_external_balances() -> Weight; } /// Weights for pallet_bridge_transfer using the Litentry node and recommended hardware. @@ -61,7 +59,7 @@ impl WeightInfo for LitentryWeight { // Storage: ChainBridge BridgeFee (r:1 w:0) // Storage: System Account (r:2 w:2) // Storage: ChainBridge BridgeEvents (r:1 w:1) - fn transfer_native() -> Weight { + fn transfer_assets() -> Weight { Weight::from_parts(59_963_000 as u64, 0) .saturating_add(T::DbWeight::get().reads(6 as u64)) .saturating_add(T::DbWeight::get().writes(5 as u64)) @@ -74,17 +72,6 @@ impl WeightInfo for LitentryWeight { .saturating_add(T::DbWeight::get().reads(3 as u64)) .saturating_add(T::DbWeight::get().writes(2 as u64)) } - // Storage: BridgeTransfer MaximumIssuance (r:1 w:1) - fn set_maximum_issuance() -> Weight { - Weight::from_parts(16_170_000 as u64, 0) - .saturating_add(T::DbWeight::get().reads(1 as u64)) - .saturating_add(T::DbWeight::get().writes(1 as u64)) - } - // Storage: BridgeTransfer ExternalBalances (r:0 w:1) - fn set_external_balances() -> Weight { - Weight::from_parts(3_987_000 as u64, 0) - .saturating_add(T::DbWeight::get().writes(1 as u64)) - } } // For backwards compatibility and tests @@ -94,7 +81,7 @@ impl WeightInfo for () { // Storage: ChainBridge BridgeFee (r:1 w:0) // Storage: System Account (r:2 w:2) // Storage: ChainBridge BridgeEvents (r:1 w:1) - fn transfer_native() -> Weight { + fn transfer_assets() -> Weight { Weight::from_parts(59_963_000 as u64, 0) .saturating_add(RocksDbWeight::get().reads(6 as u64)) .saturating_add(RocksDbWeight::get().writes(5 as u64)) @@ -107,15 +94,4 @@ impl WeightInfo for () { .saturating_add(RocksDbWeight::get().reads(3 as u64)) .saturating_add(RocksDbWeight::get().writes(2 as u64)) } - // Storage: BridgeTransfer MaximumIssuance (r:1 w:1) - fn set_maximum_issuance() -> Weight { - Weight::from_parts(16_170_000 as u64, 0) - .saturating_add(RocksDbWeight::get().reads(1 as u64)) - .saturating_add(RocksDbWeight::get().writes(1 as u64)) - } - // Storage: BridgeTransfer ExternalBalances (r:0 w:1) - fn set_external_balances() -> Weight { - Weight::from_parts(3_987_000 as u64, 0) - .saturating_add(RocksDbWeight::get().writes(1 as u64)) - } } diff --git a/pallets/bridge/Cargo.toml b/pallets/bridge/Cargo.toml index 9f7aa2ea6a..80f204f877 100644 --- a/pallets/bridge/Cargo.toml +++ b/pallets/bridge/Cargo.toml @@ -12,6 +12,7 @@ parity-scale-codec = { workspace = true } scale-info = { workspace = true } sp-core = { workspace = true } +sp-core-hashing = { workspace = true } sp-io = { workspace = true } sp-runtime = { workspace = true } sp-std = { workspace = true } @@ -35,6 +36,7 @@ std = [ "sp-runtime/std", "sp-io/std", "sp-core/std", + "sp-core-hashing/std", "frame-support/std", "frame-system/std", "frame-benchmarking?/std", diff --git a/pallets/bridge/src/benchmarking.rs b/pallets/bridge/src/benchmarking.rs index 4f2855ec8f..d3020ffb1a 100644 --- a/pallets/bridge/src/benchmarking.rs +++ b/pallets/bridge/src/benchmarking.rs @@ -18,7 +18,7 @@ #![cfg(feature = "runtime-benchmarks")] #![allow(clippy::type_complexity)] - +#![allow(clippy::useless_vec)] use super::*; use crate::{BridgeChainId, Call, Event, Pallet as bridge}; use frame_benchmarking::{account, benchmarks, impl_benchmark_test_suite}; @@ -43,28 +43,6 @@ benchmarks! { assert_eq!(RelayerThreshold::::get(),i); } - set_resource{ - let resource_id = [1u8;32]; - let method = vec![0u8]; - }:_(RawOrigin::Root,resource_id,method.clone()) - verify{ - assert_eq!(Resources::::get(resource_id),Some(method)); - } - - remove_resource{ - let resource_id = [1u8;32]; - let method = vec![0u8]; - - bridge::::set_resource( - RawOrigin::Root.into(), - resource_id, - method, - )?; - }:_(RawOrigin::Root,resource_id) - verify{ - assert!(!Resources::::contains_key(resource_id)); - } - whitelist_chain{ let bridgechain_id = T::BridgeChainId::get().saturating_add(1); }:_(RawOrigin::Root,bridgechain_id) @@ -91,13 +69,6 @@ benchmarks! { assert!(!Relayers::::contains_key(relayer_id)); } - update_fee{ - let dest_id:BridgeChainId =0; - }:_(RawOrigin::Root,dest_id,1u32.into()) - verify{ - assert!(BridgeFee::::contains_key(dest_id)); - } - acknowledge_proposal{ let relayer_id: T::AccountId = account("TEST_A", 0u32, USER_SEED); let prop_id:DepositNonce = 1; @@ -117,11 +88,6 @@ benchmarks! { src_id, )?; - bridge::::set_resource( - RawOrigin::Root.into(), - r_id,method, - )?; - }:_(RawOrigin::Signed(relayer_id),prop_id,src_id, r_id, Box::new(proposal)) verify{ assert_last_event::(Event::ProposalSucceeded(src_id, prop_id).into()); @@ -147,12 +113,6 @@ benchmarks! { src_id, )?; - bridge::::set_resource( - RawOrigin::Root.into(), - r_id, - method, - )?; - }:_(RawOrigin::Signed(relayer_id),prop_id,src_id,r_id,Box::new(proposal)) verify{ assert_last_event::(Event::ProposalRejected(src_id,prop_id).into()); @@ -190,12 +150,6 @@ benchmarks! { src_id, )?; - bridge::::set_resource( - RawOrigin::Root.into(), - r_id, - method, - )?; - bridge::::reject_proposal( RawOrigin::Signed(relayer_id_b).into(), prop_id, diff --git a/pallets/bridge/src/hashing.rs b/pallets/bridge/src/hashing.rs index 140142a951..b9da4679a9 100644 --- a/pallets/bridge/src/hashing.rs +++ b/pallets/bridge/src/hashing.rs @@ -14,16 +14,9 @@ // You should have received a copy of the GNU General Public License // along with Litentry. If not, see . -use blake2_rfc; - -/// Do a Blake2 128-bit hash and place result in `dest`. -pub fn blake2_128_into(data: &[u8], dest: &mut [u8; 16]) { - dest.copy_from_slice(blake2_rfc::blake2b::blake2b(16, &[], data).as_bytes()); -} +use sp_core_hashing::blake2_128 as impl_blake2_128; /// Do a Blake2 128-bit hash and return result. pub fn blake2_128(data: &[u8]) -> [u8; 16] { - let mut r = [0; 16]; - blake2_128_into(data, &mut r); - r + impl_blake2_128(data) } diff --git a/pallets/bridge/src/lib.rs b/pallets/bridge/src/lib.rs index 584c2b5106..10cae02b9d 100644 --- a/pallets/bridge/src/lib.rs +++ b/pallets/bridge/src/lib.rs @@ -33,21 +33,19 @@ pub use weights::WeightInfo; #[frame_support::pallet] pub mod pallet { use crate::weights::WeightInfo; - use frame_support::{ - dispatch::GetDispatchInfo, - traits::{fungible::Mutate, Currency, ExistenceRequirement::AllowDeath, WithdrawReasons}, - }; + use frame_support::dispatch::GetDispatchInfo; pub use frame_support::{pallet_prelude::*, traits::StorageVersion, PalletId, Parameter}; use frame_system::{ pallet_prelude::*, {self as system}, }; - use parity_scale_codec::EncodeLike; + use parity_scale_codec::{Codec, EncodeLike}; use sp_runtime::{ - traits::{AccountIdConversion, Dispatchable}, - SaturatedConversion, + traits::{AccountIdConversion, AtLeast32BitUnsigned, Dispatchable}, + FixedPointOperand, SaturatedConversion, }; - use sp_std::prelude::*; + + use sp_std::{fmt::Debug, prelude::*, vec}; const DEFAULT_RELAYER_THRESHOLD: u32 = 1; const MODULE_ID: PalletId = PalletId(*b"litry/bg"); @@ -55,8 +53,7 @@ pub mod pallet { pub type BridgeChainId = u8; pub type DepositNonce = u64; pub type ResourceId = [u8; 32]; - pub type BalanceOf = - <::Currency as Currency<::AccountId>>::Balance; + pub type BalanceOf = ::Balance; /// Helper function to concatenate a chain ID and some bytes to produce a resource ID. /// The common format is (31 bytes unique ID + 1 byte chain ID). @@ -169,15 +166,21 @@ pub mod pallet { #[pallet::constant] type BridgeChainId: Get; - /// Currency impl - type Currency: Currency - + Mutate>; + /// The units in which we record balances. + type Balance: Parameter + + Member + + AtLeast32BitUnsigned + + Codec + + Default + + Copy + + MaybeSerializeDeserialize + + Debug + + MaxEncodedLen + + TypeInfo + + FixedPointOperand; #[pallet::constant] - type ProposalLifetime: Get; - - /// Treasury account to receive assets fee - type TreasuryAccount: Get; + type ProposalLifetime: Get>; /// Weight information for extrinsics in this pallet. type WeightInfo: WeightInfo; @@ -214,8 +217,6 @@ pub mod pallet { ProposalSucceeded(BridgeChainId, DepositNonce), /// Execution of call failed ProposalFailed(BridgeChainId, DepositNonce), - /// Update bridge transfer fee - FeeUpdated { dest_id: BridgeChainId, fee: BalanceOf }, } #[pallet::error] @@ -250,16 +251,7 @@ pub mod pallet { ProposalAlreadyComplete, /// Lifetime of proposal has been exceeded ProposalExpired, - /// Too expensive fee for withdrawn asset - FeeTooExpensive, - /// No fee with the ID was found - FeeDoesNotExist, - /// Balance too low to withdraw - InsufficientBalance, - - CannotPayAsFee, - - NonceOverFlow, + NonceOverflow, } #[pallet::storage] @@ -291,13 +283,10 @@ pub mod pallet { BridgeChainId, Blake2_256, (DepositNonce, T::Proposal), - ProposalVotes, + ProposalVotes>, >; - #[pallet::storage] - #[pallet::getter(fn resources)] - pub type Resources = StorageMap<_, Blake2_256, ResourceId, Vec>; - + // TODO: !!!This storage can not be removed until Chainbridge binary switch to event Listener // ChainBridge Service(https://github.com/litentry/ChainBridge) read this storage for each block, // and if this storage has value, it will perform cross-chain transfer. // For more details, see at: https://github.com/litentry/ChainBridge/blob/main/chains/substrate/listener.go#L186-L237 @@ -305,13 +294,9 @@ pub mod pallet { #[pallet::getter(fn bridge_events)] pub type BridgeEvents = StorageValue<_, Vec, ValueQuery>; - #[pallet::storage] - #[pallet::getter(fn bridge_fee)] - pub type BridgeFee = StorageMap<_, Twox64Concat, BridgeChainId, BalanceOf>; - #[pallet::hooks] - impl Hooks for Pallet { - fn on_initialize(_n: T::BlockNumber) -> Weight { + impl Hooks> for Pallet { + fn on_initialize(_n: BlockNumberFor) -> Weight { // Clear all bridge transfer data BridgeEvents::::kill(); Weight::zero() @@ -335,43 +320,12 @@ pub mod pallet { Self::set_relayer_threshold(threshold) } - /// Stores a method name on chain under an associated resource ID. - /// - /// # - /// - O(1) write - /// # - #[pallet::call_index(1)] - #[pallet::weight(::WeightInfo::set_resource())] - pub fn set_resource( - origin: OriginFor, - id: ResourceId, - method: Vec, - ) -> DispatchResult { - T::BridgeCommitteeOrigin::ensure_origin(origin)?; - Self::register_resource(id, method) - } - - /// Removes a resource ID from the resource mapping. - /// - /// After this call, bridge transfers with the associated resource ID will - /// be rejected. - /// - /// # - /// - O(1) removal - /// # - #[pallet::call_index(2)] - #[pallet::weight(::WeightInfo::remove_resource())] - pub fn remove_resource(origin: OriginFor, id: ResourceId) -> DispatchResult { - T::BridgeCommitteeOrigin::ensure_origin(origin)?; - Self::unregister_resource(id) - } - /// Enables a chain ID as a source or destination for a bridge transfer. /// /// # /// - O(1) lookup and insert /// # - #[pallet::call_index(3)] + #[pallet::call_index(1)] #[pallet::weight(::WeightInfo::whitelist_chain())] pub fn whitelist_chain(origin: OriginFor, id: BridgeChainId) -> DispatchResult { T::BridgeCommitteeOrigin::ensure_origin(origin)?; @@ -383,7 +337,7 @@ pub mod pallet { /// # /// - O(1) lookup and insert /// # - #[pallet::call_index(4)] + #[pallet::call_index(2)] #[pallet::weight(::WeightInfo::add_relayer())] pub fn add_relayer(origin: OriginFor, v: T::AccountId) -> DispatchResult { T::BridgeCommitteeOrigin::ensure_origin(origin)?; @@ -395,31 +349,13 @@ pub mod pallet { /// # /// - O(1) lookup and removal /// # - #[pallet::call_index(5)] + #[pallet::call_index(3)] #[pallet::weight(::WeightInfo::remove_relayer())] pub fn remove_relayer(origin: OriginFor, v: T::AccountId) -> DispatchResult { T::BridgeCommitteeOrigin::ensure_origin(origin)?; Self::unregister_relayer(v) } - /// Change extra bridge transfer fee that user should pay - /// - /// # - /// - O(1) lookup and insert - /// # - #[pallet::call_index(6)] - #[pallet::weight(::WeightInfo::update_fee())] - pub fn update_fee( - origin: OriginFor, - dest_id: BridgeChainId, - fee: BalanceOf, - ) -> DispatchResult { - T::BridgeCommitteeOrigin::ensure_origin(origin)?; - BridgeFee::::insert(dest_id, fee); - Self::deposit_event(Event::FeeUpdated { dest_id, fee }); - Ok(()) - } - /// Commits a vote in favour of the provided proposal. /// /// If a proposal with the given nonce and source chain ID does not already exist, it will @@ -428,7 +364,7 @@ pub mod pallet { /// # /// - weight of proposed call, regardless of whether execution is performed /// # - #[pallet::call_index(7)] + #[pallet::call_index(4)] #[pallet::weight({ let di = call.get_dispatch_info(); (< T as Config >::WeightInfo::acknowledge_proposal() @@ -439,13 +375,14 @@ pub mod pallet { origin: OriginFor, nonce: DepositNonce, src_id: BridgeChainId, - r_id: ResourceId, + // TODO: remove will require token bridge binary change + // Resource info is in proposal call + _r_id: ResourceId, call: Box<::Proposal>, ) -> DispatchResult { let who = ensure_signed(origin)?; ensure!(Self::is_relayer(&who), Error::::MustBeRelayer); ensure!(Self::chain_whitelisted(src_id), Error::::ChainNotWhitelisted); - ensure!(Self::resource_exists(r_id), Error::::ResourceDoesNotExist); Self::vote_for(who, nonce, src_id, call) } @@ -455,19 +392,20 @@ pub mod pallet { /// # /// - Fixed, since execution of proposal should not be included /// # - #[pallet::call_index(8)] + #[pallet::call_index(5)] #[pallet::weight(::WeightInfo::reject_proposal())] pub fn reject_proposal( origin: OriginFor, nonce: DepositNonce, src_id: BridgeChainId, - r_id: ResourceId, + // TODO: remove will require token bridge binary change + // Resource info is in proposal call + _r_id: ResourceId, call: Box<::Proposal>, ) -> DispatchResult { let who = ensure_signed(origin)?; ensure!(Self::is_relayer(&who), Error::::MustBeRelayer); ensure!(Self::chain_whitelisted(src_id), Error::::ChainNotWhitelisted); - ensure!(Self::resource_exists(r_id), Error::::ResourceDoesNotExist); Self::vote_against(who, nonce, src_id, call) } @@ -480,7 +418,7 @@ pub mod pallet { /// # /// - weight of proposed call, regardless of whether execution is performed /// # - #[pallet::call_index(9)] + #[pallet::call_index(6)] #[pallet::weight({ let di = prop.get_dispatch_info(); (< T as Config >::WeightInfo::eval_vote_state() @@ -513,11 +451,6 @@ pub mod pallet { MODULE_ID.into_account_truncating() } - /// Asserts if a resource is registered - pub fn resource_exists(id: ResourceId) -> bool { - Self::resources(id).is_some() - } - /// Checks if a chain exists as a whitelisted destination pub fn chain_whitelisted(id: BridgeChainId) -> bool { Self::chains(id).is_some() @@ -526,9 +459,9 @@ pub mod pallet { /// Increments the deposit nonce for the specified chain ID fn bump_nonce(id: BridgeChainId) -> Result> { let nonce = Self::chains(id).unwrap_or_default(); - let new_nonce = nonce.checked_add(1u64).ok_or(Error::::NonceOverFlow); - if new_nonce.is_ok() { - ChainNonces::::insert(id, new_nonce.as_ref().unwrap()); + let new_nonce = nonce.checked_add(1u64).ok_or(Error::::NonceOverflow); + if let Ok(nonce_inner) = &new_nonce { + ChainNonces::::insert(id, nonce_inner); } new_nonce } @@ -543,18 +476,6 @@ pub mod pallet { Ok(()) } - /// Register a method for a resource Id, enabling associated transfers - pub fn register_resource(id: ResourceId, method: Vec) -> DispatchResult { - Resources::::insert(id, method); - Ok(()) - } - - /// Removes a resource ID, disabling associated transfer - pub fn unregister_resource(id: ResourceId) -> DispatchResult { - Resources::::remove(id); - Ok(()) - } - /// Whitelist a chain ID for transfer pub fn whitelist(id: BridgeChainId) -> DispatchResult { // Cannot whitelist this chain @@ -689,45 +610,29 @@ pub mod pallet { Ok(()) } - /// Initiates a transfer of a fungible asset out of the chain. This should be called by + /// Initiates a singal Event for fungible asset out of the chain. This should be called by /// another pallet. - pub fn transfer_fungible( - sender: T::AccountId, + pub fn signal_transfer_fungible( dest_id: BridgeChainId, resource_id: ResourceId, to: Vec, amount: BalanceOf, ) -> DispatchResult { ensure!(Self::chain_whitelisted(dest_id), Error::::ChainNotWhitelisted); - let fee: BalanceOf = - BridgeFee::::get(dest_id).ok_or(Error::::CannotPayAsFee)?; - // No need to transfer to to dest chains if it's not enough to pay fee. - ensure!(amount > fee, Error::::FeeTooExpensive); - - let actual_amount = amount - fee; - // Ensure we have sufficient free balance - let balance: BalanceOf = T::Currency::free_balance(&sender); - ensure!(balance >= amount, Error::::InsufficientBalance); - - T::Currency::withdraw(&sender, amount, WithdrawReasons::TRANSFER, AllowDeath)?; - T::Currency::burn(amount); - - // deposit fee to treasury - let _ = T::Currency::deposit_into_existing(&T::TreasuryAccount::get(), fee)?; let nonce = Self::bump_nonce(dest_id)?; BridgeEvents::::append(BridgeEvent::FungibleTransfer( dest_id, nonce, resource_id, - actual_amount.saturated_into::(), + amount.saturated_into::(), to.clone(), )); Self::deposit_event(Event::FungibleTransfer( dest_id, nonce, resource_id, - actual_amount.saturated_into::(), + amount.saturated_into::(), to, )); Ok(()) diff --git a/pallets/bridge/src/mock.rs b/pallets/bridge/src/mock.rs index 5da367a9d5..2cb1eb50a6 100644 --- a/pallets/bridge/src/mock.rs +++ b/pallets/bridge/src/mock.rs @@ -14,8 +14,6 @@ // You should have received a copy of the GNU General Public License // along with Litentry. If not, see . -#![cfg(test)] - use super::*; use frame_support::{ @@ -25,15 +23,16 @@ use frame_support::{ use frame_system::{self as system}; use sp_core::H256; use sp_runtime::{ - testing::Header, + generic, traits::{AccountIdConversion, BlakeTwo256, IdentityLookup}, }; use crate::{self as bridge, Config}; -pub use pallet_balances as balances; -type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; +pub type SignedExtra = (frame_system::CheckSpecVersion,); +type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; type Block = frame_system::mocking::MockBlock; +type Header = generic::Header; // Configure a mock runtime to test the pallet. frame_support::construct_runtime!( @@ -110,9 +109,8 @@ impl Config for Test { type BridgeCommitteeOrigin = frame_system::EnsureRoot; type Proposal = RuntimeCall; type BridgeChainId = TestChainId; - type Currency = Balances; + type Balance = u64; type ProposalLifetime = ProposalLifetime; - type TreasuryAccount = TreasuryAccount; type WeightInfo = (); } @@ -143,8 +141,7 @@ pub fn new_test_ext() -> sp_io::TestExternalities { pub fn new_test_ext_initialized( src_id: BridgeChainId, - r_id: ResourceId, - resource: Vec, + _r_id: ResourceId, ) -> sp_io::TestExternalities { let mut t = new_test_ext(); t.execute_with(|| { @@ -157,9 +154,6 @@ pub fn new_test_ext_initialized( assert_ok!(Bridge::add_relayer(RuntimeOrigin::root(), RELAYER_C)); // Whitelist chain assert_ok!(Bridge::whitelist_chain(RuntimeOrigin::root(), src_id)); - // Set and check resource ID mapped to some junk data - assert_ok!(Bridge::set_resource(RuntimeOrigin::root(), r_id, resource)); - assert!(Bridge::resource_exists(r_id)); }); t } diff --git a/pallets/bridge/src/tests.rs b/pallets/bridge/src/tests.rs index 1acbd196ff..6ee0c75c1b 100644 --- a/pallets/bridge/src/tests.rs +++ b/pallets/bridge/src/tests.rs @@ -14,13 +14,11 @@ // You should have received a copy of the GNU General Public License // along with Litentry. If not, see . -#![cfg(test)] - use super::{ mock::{ assert_events, new_test_ext, new_test_ext_initialized, Balances, Bridge, ProposalLifetime, - RuntimeCall, RuntimeEvent, RuntimeOrigin, System, Test, TestChainId, TreasuryAccount, - ENDOWED_BALANCE, RELAYER_A, RELAYER_B, RELAYER_C, TEST_THRESHOLD, + RuntimeCall, RuntimeEvent, RuntimeOrigin, System, Test, TestChainId, ENDOWED_BALANCE, + RELAYER_A, RELAYER_B, RELAYER_C, TEST_THRESHOLD, }, pallet::Event as PalletEvent, *, @@ -92,24 +90,6 @@ fn complete_proposal_bad_threshold() { assert_eq!(prop.status, ProposalStatus::Initiated); } -#[test] -fn setup_resources() { - new_test_ext().execute_with(|| { - let id: ResourceId = [1; 32]; - let method = "Pallet.do_something".as_bytes().to_vec(); - let method2 = "Pallet.do_somethingElse".as_bytes().to_vec(); - - assert_ok!(Bridge::set_resource(RuntimeOrigin::root(), id, method.clone())); - assert_eq!(Bridge::resources(id), Some(method)); - - assert_ok!(Bridge::set_resource(RuntimeOrigin::root(), id, method2.clone())); - assert_eq!(Bridge::resources(id), Some(method2)); - - assert_ok!(Bridge::remove_resource(RuntimeOrigin::root(), id)); - assert_eq!(Bridge::resources(id), None); - }) -} - #[test] fn whitelist_chain() { new_test_ext().execute_with(|| { @@ -187,7 +167,7 @@ fn create_sucessful_proposal() { let src_id = 1; let r_id = derive_resource_id(src_id, b"remark"); - new_test_ext_initialized(src_id, r_id, b"System.remark".to_vec()).execute_with(|| { + new_test_ext_initialized(src_id, r_id).execute_with(|| { let prop_id = 1; let proposal = make_proposal(vec![10]); @@ -257,7 +237,7 @@ fn create_unsucessful_proposal() { let src_id = 1; let r_id = derive_resource_id(src_id, b"transfer"); - new_test_ext_initialized(src_id, r_id, b"System.remark".to_vec()).execute_with(|| { + new_test_ext_initialized(src_id, r_id).execute_with(|| { let prop_id = 1; let proposal = make_proposal(vec![11]); @@ -329,7 +309,7 @@ fn execute_after_threshold_change() { let src_id = 1; let r_id = derive_resource_id(src_id, b"transfer"); - new_test_ext_initialized(src_id, r_id, b"System.remark".to_vec()).execute_with(|| { + new_test_ext_initialized(src_id, r_id).execute_with(|| { let prop_id = 1; let proposal = make_proposal(vec![11]); @@ -387,7 +367,7 @@ fn proposal_expires() { let src_id = 1; let r_id = derive_resource_id(src_id, b"remark"); - new_test_ext_initialized(src_id, r_id, b"System.remark".to_vec()).execute_with(|| { + new_test_ext_initialized(src_id, r_id).execute_with(|| { let prop_id = 1; let proposal = make_proposal(vec![10]); @@ -457,53 +437,26 @@ fn proposal_expires() { } #[test] -fn transfer_fungible() { +fn signal_transfer_fungible() { new_test_ext().execute_with(|| { let dest_id: BridgeChainId = 0; let resource_id = derive_resource_id(dest_id, b"remark"); let dest_account: Vec = vec![1]; - assert_ok!(Pallet::::update_fee(RuntimeOrigin::root(), dest_id, 10)); assert_ok!(Pallet::::whitelist_chain(RuntimeOrigin::root(), dest_id)); - assert_ok!(Pallet::::transfer_fungible( - RELAYER_A, + assert_ok!(Pallet::::signal_transfer_fungible( dest_id, resource_id, dest_account.clone(), 100, )); assert_eq!(ChainNonces::::get(dest_id), Some(1u64)); - assert_eq!( - pallet_balances::Pallet::::free_balance(TreasuryAccount::get()), - ENDOWED_BALANCE + 10 - ); - assert_eq!(pallet_balances::Pallet::::free_balance(RELAYER_A), ENDOWED_BALANCE - 100); - assert_events(vec![ - mock::RuntimeEvent::Balances(pallet_balances::Event::Deposit { - who: TreasuryAccount::get(), - amount: 10, - }), - RuntimeEvent::Bridge(PalletEvent::FungibleTransfer( - dest_id, - 1, - resource_id, - 100 - 10, - dest_account, - )), - ]); - }) -} - -#[test] -fn transfer_fungible_no_fee() { - new_test_ext().execute_with(|| { - let dest_id: BridgeChainId = 0; - let resource_id = derive_resource_id(dest_id, b"remark"); - let dest_account: Vec = vec![1]; - assert_ok!(Pallet::::whitelist_chain(RuntimeOrigin::root(), dest_id)); - assert_noop!( - Pallet::::transfer_fungible(RELAYER_A, dest_id, resource_id, dest_account, 100,), - Error::::CannotPayAsFee - ); + assert_events(vec![RuntimeEvent::Bridge(PalletEvent::FungibleTransfer( + dest_id, + 1, + resource_id, + 100, + dest_account, + ))]); }) } @@ -514,54 +467,8 @@ fn transfer_fungible_no_whitelist() { let resource_id = derive_resource_id(dest_id, b"remark"); let dest_account: Vec = vec![1]; assert_noop!( - Pallet::::transfer_fungible(RELAYER_A, dest_id, resource_id, dest_account, 100,), + Pallet::::signal_transfer_fungible(dest_id, resource_id, dest_account, 100,), Error::::ChainNotWhitelisted ); }) } - -#[test] -fn transfer_fungible_insufficient_funds_fee() { - new_test_ext().execute_with(|| { - let dest_id: BridgeChainId = 0; - let resource_id = derive_resource_id(dest_id, b"remark"); - let dest_account: Vec = vec![1]; - let fee: BalanceOf = 10; - let transfer_amount = fee; - assert_ok!(Pallet::::update_fee(RuntimeOrigin::root(), dest_id, fee)); - assert_ok!(Pallet::::whitelist_chain(RuntimeOrigin::root(), dest_id)); - assert_noop!( - Pallet::::transfer_fungible( - RELAYER_A, - dest_id, - resource_id, - dest_account, - transfer_amount - ), - Error::::FeeTooExpensive - ); - }) -} - -#[test] -fn transfer_fungible_insufficient_free_balance() { - new_test_ext().execute_with(|| { - let dest_id: BridgeChainId = 0; - let resource_id = derive_resource_id(dest_id, b"remark"); - let dest_account: Vec = vec![1]; - let fee: BalanceOf = 10; - let transfer_amount = 100; - assert_ok!(Pallet::::update_fee(RuntimeOrigin::root(), dest_id, fee)); - assert_ok!(Pallet::::whitelist_chain(RuntimeOrigin::root(), dest_id)); - assert_noop!( - Pallet::::transfer_fungible( - 0x7, - dest_id, - resource_id, - dest_account, - transfer_amount - ), - Error::::InsufficientBalance - ); - }) -} diff --git a/pallets/bridge/src/weights.rs b/pallets/bridge/src/weights.rs index 78903b785f..3ece69f9db 100644 --- a/pallets/bridge/src/weights.rs +++ b/pallets/bridge/src/weights.rs @@ -48,12 +48,9 @@ use sp_std::marker::PhantomData; /// Weight functions needed for pallet_bridge. pub trait WeightInfo { fn set_threshold() -> Weight; - fn set_resource() -> Weight; - fn remove_resource() -> Weight; fn whitelist_chain() -> Weight; fn add_relayer() -> Weight; fn remove_relayer() -> Weight; - fn update_fee() -> Weight; fn acknowledge_proposal() -> Weight; fn reject_proposal() -> Weight; fn eval_vote_state() -> Weight; @@ -67,16 +64,6 @@ impl WeightInfo for LitentryWeight { Weight::from_parts(12_574_000 as u64, 0) .saturating_add(T::DbWeight::get().writes(1 as u64)) } - // Storage: ChainBridge Resources (r:0 w:1) - fn set_resource() -> Weight { - Weight::from_parts(5_120_000 as u64, 0) - .saturating_add(T::DbWeight::get().writes(1 as u64)) - } - // Storage: ChainBridge Resources (r:0 w:1) - fn remove_resource() -> Weight { - Weight::from_parts(4_819_000 as u64, 0) - .saturating_add(T::DbWeight::get().writes(1 as u64)) - } // Storage: ChainBridge ChainNonces (r:1 w:1) fn whitelist_chain() -> Weight { Weight::from_parts(15_179_000 as u64, 0) @@ -97,11 +84,6 @@ impl WeightInfo for LitentryWeight { .saturating_add(T::DbWeight::get().reads(2 as u64)) .saturating_add(T::DbWeight::get().writes(2 as u64)) } - // Storage: ChainBridge BridgeFee (r:0 w:1) - fn update_fee() -> Weight { - Weight::from_parts(13_085_000 as u64, 0) - .saturating_add(T::DbWeight::get().writes(1 as u64)) - } // Storage: ChainBridge Relayers (r:1 w:0) // Storage: ChainBridge ChainNonces (r:1 w:0) // Storage: ChainBridge Resources (r:1 w:0) @@ -141,16 +123,6 @@ impl WeightInfo for () { Weight::from_parts(12_574_000 as u64, 0) .saturating_add(RocksDbWeight::get().writes(1 as u64)) } - // Storage: ChainBridge Resources (r:0 w:1) - fn set_resource() -> Weight { - Weight::from_parts(5_120_000 as u64, 0) - .saturating_add(RocksDbWeight::get().writes(1 as u64)) - } - // Storage: ChainBridge Resources (r:0 w:1) - fn remove_resource() -> Weight { - Weight::from_parts(4_819_000 as u64, 0) - .saturating_add(RocksDbWeight::get().writes(1 as u64)) - } // Storage: ChainBridge ChainNonces (r:1 w:1) fn whitelist_chain() -> Weight { Weight::from_parts(15_179_000 as u64, 0) @@ -171,11 +143,6 @@ impl WeightInfo for () { .saturating_add(RocksDbWeight::get().reads(2 as u64)) .saturating_add(RocksDbWeight::get().writes(2 as u64)) } - // Storage: ChainBridge BridgeFee (r:0 w:1) - fn update_fee() -> Weight { - Weight::from_parts(13_085_000 as u64, 0) - .saturating_add(RocksDbWeight::get().writes(1 as u64)) - } // Storage: ChainBridge Relayers (r:1 w:0) // Storage: ChainBridge ChainNonces (r:1 w:0) // Storage: ChainBridge Resources (r:1 w:0) diff --git a/pallets/parachain-staking/src/lib.rs b/pallets/parachain-staking/src/lib.rs index aa37caf4ea..045c7f25e1 100644 --- a/pallets/parachain-staking/src/lib.rs +++ b/pallets/parachain-staking/src/lib.rs @@ -1376,7 +1376,6 @@ pub mod pallet { ) -> Percent { >::auto_compound(candidate, delegator) } - ///??? /// Caller must ensure candidate is active before calling pub(crate) fn update_active(candidate: T::AccountId, total: BalanceOf) { let mut candidates = >::get(); diff --git a/precompiles/assets-erc20/src/mock.rs b/precompiles/assets-erc20/src/mock.rs index acbfb784a6..3156990c7a 100644 --- a/precompiles/assets-erc20/src/mock.rs +++ b/precompiles/assets-erc20/src/mock.rs @@ -211,6 +211,8 @@ impl pallet_assets::Config for Runtime { type RemoveItemsLimit = ConstU32<0>; type AssetIdParameter = AssetId; type CallbackHandle = (); + #[cfg(feature = "runtime-benchmarks")] + type BenchmarkHelper = (); } // Configure a mock runtime to test the pallet. diff --git a/precompiles/bridge-transfer/BridgeInterface.sol b/precompiles/bridge-transfer/BridgeInterface.sol index 50dde9ce1a..c0c3bc1865 100644 --- a/precompiles/bridge-transfer/BridgeInterface.sol +++ b/precompiles/bridge-transfer/BridgeInterface.sol @@ -1,20 +1,13 @@ // SPDX-License-Identifier: GPL-3.0-only pragma solidity >=0.8.3; -/// @author The Litentry Team -/// @title Pallet Bridge Transfer Interface -/// @dev The interface through which solidity contracts will interact with Bridge Transfer -/// We follow this same interface including four-byte function selectors, in the precompile that -/// wraps the pallet -interface BridgeTransfer { - /// @dev Transfers some amount of the native token to some recipient on a (whitelisted) destination chain - /// @custom:selector c7358d27 - /// @param amount the delegator that made the delegation - /// @param receipt the candidate for which the delegation was made - /// @param dest_id a pending request exists for such delegation - function transferNative( - uint256 amount, - bytes calldata receipt, - uint8 dest_id - ) external; +interface IBridgeTransfer { + /// @notice Used to transfer assets through token bridge. + /// @param amount: The amount of tokens to be transferred. + /// @param dest_id: The destination chain id indicator + /// @param resource_id: Resource indicator of type of assets transferred + /// @param recipient: Recipient address, typically H160/H256 + /// @custom:selector 0x6e700f9a + /// transferAssets(uint256,uint8,bytes32,bytes) + function transferAssets(uint256 amount, uint8 dest_id, bytes32 resource_id, bytes calldata recipient) external; } diff --git a/precompiles/bridge-transfer/Cargo.toml b/precompiles/bridge-transfer/Cargo.toml index 0e8e447820..f04f9cfe4a 100644 --- a/precompiles/bridge-transfer/Cargo.toml +++ b/precompiles/bridge-transfer/Cargo.toml @@ -1,37 +1,47 @@ [package] authors = ["Trust Computing GmbH "] edition = '2021' -name = 'pallet-evm-precompile-bridge-transfer' +name = "pallet-evm-precompile-bridge-transfer" version = '0.1.0' [dependencies] log = { workspace = true } num_enum = { workspace = true } -parity-scale-codec = { workspace = true } -rustc-hex = { workspace = true } +paste = { workspace = true } -pallet-bridge = { workspace = true } -pallet-bridge-transfer = { workspace = true } +# Moonbeam precompile-utils = { workspace = true } -fp-evm = { workspace = true } +# Substrate frame-support = { workspace = true } frame-system = { workspace = true } -pallet-evm = { workspace = true } +pallet-bridge-transfer = { workspace = true } +pallet-timestamp = { workspace = true } +parity-scale-codec = { workspace = true, features = ["max-encoded-len"] } +scale-info = { workspace = true, features = ["derive"] } sp-core = { workspace = true } sp-io = { workspace = true } sp-runtime = { workspace = true } sp-std = { workspace = true } +# Frontier +fp-evm = { workspace = true } +pallet-evm = { workspace = true, features = ["forbid-evm-reentrancy"] } + [dev-dependencies] derive_more = { workspace = true } hex-literal = { workspace = true } -scale-info = { workspace = true } +libsecp256k1 = { workspace = true } serde = { workspace = true } sha3 = { workspace = true } -precompile-utils = { workspace = true, features = ["testing"] } -pallet-balances = { workspace = true, features = ["std", "insecure_zero_ed"] } + +# Moonbeam +precompile-utils = { workspace = true, features = ["std", "testing"] } + pallet-timestamp = { workspace = true, features = ["std"] } +parity-scale-codec = { workspace = true, features = ["max-encoded-len", "std"] } +scale-info = { workspace = true, features = ["derive"] } +sp-runtime = { workspace = true, features = ["std"] } [features] default = ["std"] @@ -39,11 +49,13 @@ std = [ "fp-evm/std", "frame-support/std", "frame-system/std", - "pallet-bridge/std", "pallet-bridge-transfer/std", + "pallet-evm/std", + "pallet-timestamp/std", "parity-scale-codec/std", "precompile-utils/std", "sp-core/std", + "sp-io/std", "sp-runtime/std", "sp-std/std", ] diff --git a/precompiles/bridge-transfer/src/lib.rs b/precompiles/bridge-transfer/src/lib.rs index dfca79f0b2..fad4fbe283 100644 --- a/precompiles/bridge-transfer/src/lib.rs +++ b/precompiles/bridge-transfer/src/lib.rs @@ -1,18 +1,3 @@ -// Copyright 2020-2024 Trust Computing GmbH. -// This file is part of Litentry. -// -// Litentry is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// Litentry is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with Litentry. If not, see . #![cfg_attr(not(feature = "std"), no_std)] use fp_evm::{PrecompileFailure, PrecompileHandle}; @@ -22,16 +7,11 @@ use pallet_evm::AddressMapping; use precompile_utils::prelude::*; use sp_runtime::traits::Dispatchable; -use sp_core::U256; +use sp_core::{H256, U256}; use sp_std::{marker::PhantomData, vec::Vec}; use pallet_bridge_transfer::BalanceOf; -#[cfg(test)] -mod mock; -#[cfg(test)] -mod tests; - pub struct BridgeTransferPrecompile(PhantomData); #[precompile_utils::precompile] @@ -43,24 +23,27 @@ where ::RuntimeOrigin: From>, BalanceOf: TryFrom + Into, { - #[precompile::public("transferNative(uint256,bytes,uint8)")] - fn transfer_native( + #[precompile::public("transferAssets(uint256,uint8,bytes32,bytes)")] + fn transfer_assets( handle: &mut impl PrecompileHandle, amount: U256, - receipt: UnboundedBytes, dest_id: u8, + resource_id: H256, + recipient: UnboundedBytes, ) -> EvmResult { let origin = Runtime::AddressMapping::into_account_id(handle.context().caller); let amount: BalanceOf = amount.try_into().map_err(|_| { Into::::into(RevertReason::value_is_too_large("balance type")) })?; - let receipt: Vec = receipt.into(); + let recipient: Vec = recipient.into(); + let resource_id = resource_id.into(); - let call = pallet_bridge_transfer::Call::::transfer_native { + let call = pallet_bridge_transfer::Call::::transfer_assets { amount, - recipient: receipt, + recipient, dest_id, + resource_id, }; RuntimeHelper::::try_dispatch(handle, Some(origin).into(), call)?; diff --git a/precompiles/bridge-transfer/src/tests.rs b/precompiles/bridge-transfer/src/tests.rs deleted file mode 100644 index 35257e482e..0000000000 --- a/precompiles/bridge-transfer/src/tests.rs +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright 2020-2024 Trust Computing GmbH. -// This file is part of Litentry. -// -// Litentry is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// Litentry is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with Litentry. If not, see . - -extern crate alloc; -use crate::{mock::*, *}; -use frame_support::assert_ok; -use precompile_utils::testing::*; - -fn precompiles() -> BridgeTransferMockPrecompile { - PrecompilesValue::get() -} - -#[test] -fn transfer_native_is_ok() { - new_test_ext().execute_with(|| { - let dest_bridge_id: pallet_bridge::BridgeChainId = 0; - let resource_id = NativeTokenResourceId::get(); - let mut dest_account: [u8; 64] = [0; 64]; - dest_account[63] = 1u8; - - assert_ok!(pallet_bridge::Pallet::::update_fee( - RuntimeOrigin::root(), - dest_bridge_id, - 10 - )); - assert_ok!(pallet_bridge::Pallet::::whitelist_chain( - RuntimeOrigin::root(), - dest_bridge_id - )); - - precompiles() - .prepare_test( - U8Wrapper(1u8), - precompile_address(), - PCall::::transfer_native { - amount: 100u128.into(), - receipt: dest_account.into(), - dest_id: dest_bridge_id, - }, - ) - .expect_no_logs() - .execute_returns(()); - - assert_eq!( - pallet_balances::Pallet::::free_balance(TreasuryAccount::get()), - ENDOWED_BALANCE + 10 - ); - assert_eq!( - pallet_balances::Pallet::::free_balance(Into::::into(U8Wrapper(1u8))), - ENDOWED_BALANCE - 100 - ); - assert_events(vec![ - mock::RuntimeEvent::Balances(pallet_balances::Event::Deposit { - who: TreasuryAccount::get(), - amount: 10, - }), - RuntimeEvent::Bridge(pallet_bridge::Event::FungibleTransfer( - dest_bridge_id, - 1, - resource_id, - 100 - 10, - dest_account.to_vec(), - )), - ]); - }) -} diff --git a/runtime/litentry/Cargo.toml b/runtime/litentry/Cargo.toml index 698d5de382..f3d9db338c 100644 --- a/runtime/litentry/Cargo.toml +++ b/runtime/litentry/Cargo.toml @@ -30,6 +30,7 @@ frame-system-rpc-runtime-api = { workspace = true } frame-try-runtime = { workspace = true, optional = true } pallet-assets = { workspace = true } +pallet-assets-handler = { workspace = true } pallet-aura = { workspace = true } pallet-authorship = { workspace = true } pallet-balances = { workspace = true } @@ -113,6 +114,9 @@ runtime-benchmarks = [ "frame-support/runtime-benchmarks", "frame-system-benchmarking/runtime-benchmarks", "frame-system/runtime-benchmarks", + "pallet-account-fix/runtime-benchmarks", + "pallet-asset-manager/runtime-benchmarks", + "pallet-assets-handler/runtime-benchmarks", "pallet-balances/runtime-benchmarks", "pallet-bounties/runtime-benchmarks", "pallet-collective/runtime-benchmarks", @@ -138,8 +142,6 @@ runtime-benchmarks = [ "pallet-bridge-transfer/runtime-benchmarks", "pallet-extrinsic-filter/runtime-benchmarks", "cumulus-pallet-xcmp-queue/runtime-benchmarks", - "pallet-account-fix/runtime-benchmarks", - "pallet-asset-manager/runtime-benchmarks", ] std = [ "parity-scale-codec/std", @@ -166,6 +168,7 @@ std = [ "pallet-account-fix/std", "pallet-asset-manager/std", "pallet-assets/std", + "pallet-assets-handler/std", "pallet-aura/std", "pallet-authorship/std", "pallet-balances/std", @@ -232,6 +235,7 @@ try-runtime = [ "pallet-account-fix/try-runtime", "pallet-asset-manager/try-runtime", "pallet-assets/try-runtime", + "pallet-assets-handler/try-runtime", "pallet-aura/try-runtime", "pallet-authorship/try-runtime", "pallet-balances/try-runtime", diff --git a/runtime/litentry/src/asset_config.rs b/runtime/litentry/src/asset_config.rs index 9ef633c363..e116865f51 100644 --- a/runtime/litentry/src/asset_config.rs +++ b/runtime/litentry/src/asset_config.rs @@ -36,6 +36,16 @@ parameter_types! { pub const AssetAccountDeposit: Balance = deposit(1, 18); } +pub struct AssetsBenchmarkHelper; +#[cfg(feature = "runtime-benchmarks")] +impl> pallet_assets::BenchmarkHelper + for AssetsBenchmarkHelper +{ + fn create_asset_id_parameter(id: u32) -> AssetIdParameter { + AssetId::from(id).into() + } +} + impl pallet_assets::Config for Runtime { type RuntimeEvent = RuntimeEvent; type Balance = Balance; @@ -57,6 +67,8 @@ impl pallet_assets::Config for Runtime { type RemoveItemsLimit = ConstU32<1000>; type AssetIdParameter = Compact; type CallbackHandle = (); + #[cfg(feature = "runtime-benchmarks")] + type BenchmarkHelper = AssetsBenchmarkHelper; } impl pallet_asset_manager::Config for Runtime { diff --git a/runtime/litentry/src/lib.rs b/runtime/litentry/src/lib.rs index a40b175a4f..0acd027489 100644 --- a/runtime/litentry/src/lib.rs +++ b/runtime/litentry/src/lib.rs @@ -134,8 +134,7 @@ pub type Executive = frame_executive::Executive< // It was reverse order before. // See the comment before collation related pallets too. AllPalletsWithSystem, - (migration::ReplaceParachainStakingStorage,), - (migration::ReplaceBalancesRelatedStorage,), + (migration::ReplaceParachainStakingStorage,migration::ReplaceBalancesRelatedStorage,migration::ReplaceBridgeRelatedStorage,), >; impl_opaque_keys! { @@ -769,7 +768,7 @@ impl pallet_parachain_staking::Config for Runtime { type OnCollatorPayout = (); type OnNewRound = (); type WeightInfo = weights::pallet_parachain_staking::WeightInfo; - type IssuanceAdapter = BridgeTransfer; + type IssuanceAdapter = AssetsHandler; } parameter_types! { @@ -801,9 +800,8 @@ impl pallet_bridge::Config for Runtime { type BridgeCommitteeOrigin = EnsureRootOrHalfCouncil; type Proposal = RuntimeCall; type BridgeChainId = BridgeChainId; - type Currency = Balances; + type Balance = Balance; type ProposalLifetime = ProposalLifetime; - type TreasuryAccount = TreasuryAccount; type WeightInfo = weights::pallet_bridge::WeightInfo; } @@ -816,8 +814,8 @@ parameter_types! { } // allow anyone to call transfer_native -pub struct TransferNativeAnyone; -impl SortedMembers for TransferNativeAnyone { +pub struct TransferAssetsAnyone; +impl SortedMembers for TransferAssetsAnyone { fn sorted_members() -> Vec { vec![] } @@ -833,14 +831,18 @@ impl SortedMembers for TransferNativeAnyone { } impl pallet_bridge_transfer::Config for Runtime { - type RuntimeEvent = RuntimeEvent; + type BridgeHandler = AssetsHandler; type BridgeOrigin = pallet_bridge::EnsureBridge; - type TransferNativeMembers = TransferNativeAnyone; + type TransferAssetsMembers = TransferAssetsAnyone; + type WeightInfo = weights::pallet_bridge_transfer::WeightInfo; +} + +impl pallet_assets_handler::Config for Runtime { + type RuntimeEvent = RuntimeEvent; + type TreasuryAccount = TreasuryAccount; type SetMaximumIssuanceOrigin = EnsureRootOrHalfCouncil; - type NativeTokenResourceId = NativeTokenResourceId; type DefaultMaximumIssuance = MaximumIssuance; type ExternalTotalIssuance = ExternalTotalIssuance; - type WeightInfo = weights::pallet_bridge_transfer::WeightInfo; } impl pallet_extrinsic_filter::Config for Runtime { @@ -943,6 +945,7 @@ construct_runtime! { AssetManager: pallet_asset_manager = 64, Teebag: pallet_teebag = 65, Bitacross: pallet_bitacross = 66, + AssetsHandler: pallet_assets_handler = 68, // TMP AccountFix: pallet_account_fix = 254, diff --git a/runtime/litentry/src/migration/bridge_related.rs b/runtime/litentry/src/migration/bridge_related.rs new file mode 100644 index 0000000000..b8033f4b4d --- /dev/null +++ b/runtime/litentry/src/migration/bridge_related.rs @@ -0,0 +1,298 @@ +// Copyright 2020-2024 Trust Computing GmbH. +// This file is part of Litentry. +// +// Litentry is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// Litentry is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with Litentry. If not, see . +#![allow(clippy::type_complexity)] + +use frame_support::{ + migration::{clear_storage_prefix, storage_key_iter}, + pallet_prelude::*, + traits::{Get, OnRuntimeUpgrade}, + Blake2_256, Twox64Concat, +}; +use pallet_assets_handler::{AssetInfo, ExternalBalances, MaximumIssuance, ResourceToAssetInfo}; +use pallet_balances::AccountData; +use pallet_bridge::{BridgeChainId, ResourceId}; +use sp_std::{marker::PhantomData, vec::Vec}; + +pub const DECIMAL_CONVERTOR: u128 = 1_000_000u128; + +use hex_literal::hex; +#[cfg(feature = "try-runtime")] +use parity_scale_codec::Encode; +use storage::migration::get_storage_value; + +mod old { + use super::*; + #[frame_support::storage_alias] + pub type BridgeBalances = StorageDoubleMap< + pallet_bridge_transfer::Pallet, + Twox64Concat, + ResourceId, + Twox64Concat, + ::AccountId, + u128, + >; + + #[frame_support::storage_alias] + pub type Resources = + StorageMap, Blake2_256, ResourceId, Vec>; + + #[frame_support::storage_alias] + pub type BridgeFee = + StorageMap, Twox64Concat, BridgeChainId, u128>; +} + +pub const NATIVE_TOKEN_RESOURCE_ID: [u8; 32] = + hex!("00000000000000000000000000000063a7e2be78898ba83824b0c0cc8dfb6001"); +// Hard coded key of NATIVE_TOKEN_RESOURCE_ID +pub const BLAKE2_256_KEY: [u8; 32] = + hex!("560cf5c8bfa0719141e0d1b33ae9fec279c53682ce13220d526ad79cccc8aead"); + +// Replace Frame System Storage for Decimal Change from 12 to 18 +// Replace Balances Storage for Decimal Change from 12 to 18 +pub struct ReplaceBridgeRelatedStorage(PhantomData); +impl ReplaceBridgeRelatedStorage +where + T: frame_system::Config> + + pallet_assets::Config + + pallet_assets_handler::Config + + pallet_balances::Config + + pallet_bridge::Config + + pallet_bridge_transfer::Config, +{ + pub fn relocate_resource_fee_storage() -> frame_support::weights::Weight { + log::info!( + target: "ReplaceBridgeRelatedStorage", + "running migration to Bridge Resources/Bridge Fee" + ); + + // We get only one resource registed + // Which is native tokrn + // Resources Storage is using Blake2_256 + // So we can not reverse it out + // Must hardcode back in + let pallet_prefix: &[u8] = b"Bridge"; + let storage_item_prefix_resources: &[u8] = b"Resources"; + let _ = clear_storage_prefix(pallet_prefix, storage_item_prefix_resources, &[], None, None); + // Must hardcode back in + let resource_id: ResourceId = NATIVE_TOKEN_RESOURCE_ID; + + // This is fee for native token + // There should be only 1 item + let storage_item_prefix_fee: &[u8] = b"BridgeFee"; + let stored_data_fee: Vec<_> = storage_key_iter::( + pallet_prefix, + storage_item_prefix_fee, + ) + .collect(); + let _ = clear_storage_prefix(pallet_prefix, storage_item_prefix_fee, &[], None, None); + + // Replace into new storage of AssetsHandler + let fee: u128 = stored_data_fee[0].1.saturating_mul(DECIMAL_CONVERTOR); + let asset_info: AssetInfo = AssetInfo { + fee, + asset: None, // None for native token Asset Id + }; + >::insert(resource_id, asset_info); + + let weight = T::DbWeight::get(); + frame_support::weights::Weight::from_parts(0, 2 * (weight.write + weight.read)) + } + pub fn delete_bridge_balances_storage() -> frame_support::weights::Weight { + log::info!( + target: "ReplaceBridgeRelatedStorage", + "running migration to Bridge Transfer Bridge Balances" + ); + + let result = old::BridgeBalances::::clear(u32::MAX, None); + + let weight = T::DbWeight::get(); + frame_support::weights::Weight::from_parts( + 0, + u64::from(result.unique).saturating_mul(weight.write + weight.read), + ) + } + pub fn relocate_external_balance_storage() -> frame_support::weights::Weight { + log::info!( + target: "ReplaceBridgeRelatedStorage", + "running migration to ExternalBalances" + ); + let pallet_prefix: &[u8] = b"BridgeTransfer"; + let storage_item_prefix: &[u8] = b"ExternalBalances"; + let stored_data = get_storage_value::(pallet_prefix, storage_item_prefix, b"") + .expect("Storage query fails: BridgeTransfer ExternalBalances"); + let _ = clear_storage_prefix(pallet_prefix, storage_item_prefix, &[], None, None); + + >::put(stored_data.saturating_mul(DECIMAL_CONVERTOR)); + let weight = T::DbWeight::get(); + frame_support::weights::Weight::from_parts(0, weight.write + weight.read) + } + pub fn relocate_maximum_issuance_storage() -> frame_support::weights::Weight { + log::info!( + target: "ReplaceBridgeRelatedStorage", + "running migration to MaximumIssuance" + ); + let pallet_prefix: &[u8] = b"BridgeTransfer"; + let storage_item_prefix: &[u8] = b"MaximumIssuance"; + let stored_data = get_storage_value::(pallet_prefix, storage_item_prefix, b"") + .expect("Storage query fails: BridgeTransfer MaximumIssuance"); + let _ = clear_storage_prefix(pallet_prefix, storage_item_prefix, &[], None, None); + + >::put(stored_data.saturating_mul(DECIMAL_CONVERTOR)); + let weight = T::DbWeight::get(); + frame_support::weights::Weight::from_parts(0, weight.write + weight.read) + } +} + +#[cfg(feature = "try-runtime")] +impl ReplaceBridgeRelatedStorage +where + T: frame_system::Config> + + pallet_assets::Config + + pallet_assets_handler::Config + + pallet_balances::Config + + pallet_bridge::Config + + pallet_bridge_transfer::Config, +{ + pub fn pre_upgrade_resource_fee_storage() -> Result, &'static str> { + assert_eq!( + old::Resources::::hashed_key_for(NATIVE_TOKEN_RESOURCE_ID), + b"BridgeTransfer.transfer".to_vec() + ); + + let mut fee_iter = old::BridgeFee::::iter(); + // Just For Reference + // Ethereum: chain_id=0 + // substrate_Litmus: chain_id=1 + // substrate_Litentry:chain_id=2 + // Rinkeby: chain_id=4 + // substrate_Rococo:chain_id=3 + // substrate_Stage: chain_id=5 + // Goerli: chain_id=6 + assert_eq!(fee_iter.next(), Some((0u8, 16_000_000_000_000u128))); + assert!(fee_iter.next().is_none()); + + Ok(Vec::new()) + } + pub fn post_upgrade_resource_fee_storage(_state: Vec) -> Result<(), &'static str> { + assert!(!old::Resources::::contains_key(NATIVE_TOKEN_RESOURCE_ID)); + + let mut fee_iter = old::BridgeFee::::iter(); + assert_eq!(fee_iter.next(), None); + + // Check AssetsHandler Storage + let mut new_resource_fee_iter = >::iter(); + let expected_asset_info = AssetInfo { + fee: 16_000_000_000_000u128.saturating_mul(DECIMAL_CONVERTOR), + asset: None, + }; + assert_eq!( + new_resource_fee_iter.next(), + Some((NATIVE_TOKEN_RESOURCE_ID, expected_asset_info)) + ); + Ok(()) + } + pub fn pre_upgrade_bridge_balances_storage() -> Result, &'static str> { + Ok(Vec::new()) + } + pub fn post_upgrade_bridge_balances_storage(_state: Vec) -> Result<(), &'static str> { + assert!(old::BridgeBalances::::iter().next().is_none()); + Ok(()) + } + pub fn pre_upgrade_external_balance_storage() -> Result, &'static str> { + let pallet_prefix: &[u8] = b"BridgeTransfer"; + let storage_item_prefix: &[u8] = b"ExternalBalances"; + let stored_data = get_storage_value::(pallet_prefix, storage_item_prefix, b"") + .expect("Storage query fails: BridgeTransfer ExternalBalances"); + Ok(stored_data.saturating_mul(DECIMAL_CONVERTOR).encode()) + } + pub fn post_upgrade_external_balance_storage(state: Vec) -> Result<(), &'static str> { + let expected_state = u128::decode(&mut &state[..]) + .map_err(|_| "Failed to decode BridgeTransfer ExternalBalances")?; + + let pallet_prefix: &[u8] = b"AssetsHandler"; + let storage_item_prefix: &[u8] = b"ExternalBalances"; + let actual_state = get_storage_value::(pallet_prefix, storage_item_prefix, b"") + .expect("Storage query fails: BridgeTransfer ExternalBalances"); + assert_eq!(expected_state, actual_state); + Ok(()) + } + pub fn pre_upgrade_maximum_issuance_storage() -> Result, &'static str> { + let pallet_prefix: &[u8] = b"BridgeTransfer"; + let storage_item_prefix: &[u8] = b"MaximumIssuance"; + let stored_data = get_storage_value::(pallet_prefix, storage_item_prefix, b"") + .expect("Storage query fails: BridgeTransfer MaximumIssuance"); + Ok(stored_data.saturating_mul(DECIMAL_CONVERTOR).encode()) + } + pub fn post_upgrade_maximum_issuance_storage(state: Vec) -> Result<(), &'static str> { + let expected_state = u128::decode(&mut &state[..]) + .map_err(|_| "Failed to decode BridgeTransfer MaximumIssuance")?; + + let pallet_prefix: &[u8] = b"AssetsHandler"; + let storage_item_prefix: &[u8] = b"MaximumIssuance"; + let actual_state = get_storage_value::(pallet_prefix, storage_item_prefix, b"") + .expect("Storage query fails: BridgeTransfer MaximumIssuance"); + assert_eq!(expected_state, actual_state); + Ok(()) + } +} + +impl OnRuntimeUpgrade for ReplaceBridgeRelatedStorage +where + T: frame_system::Config> + + pallet_assets::Config + + pallet_assets_handler::Config + + pallet_balances::Config + + pallet_bridge::Config + + pallet_bridge_transfer::Config, +{ + #[cfg(feature = "try-runtime")] + fn pre_upgrade() -> Result, &'static str> { + let _ = Self::pre_upgrade_resource_fee_storage()?; + let _ = Self::pre_upgrade_bridge_balances_storage()?; + + let external_balances_vec = Self::pre_upgrade_external_balance_storage()?; + let maximum_issuance_vec = Self::pre_upgrade_maximum_issuance_storage()?; + + Ok((external_balances_vec, maximum_issuance_vec).encode()) + } + + fn on_runtime_upgrade() -> frame_support::weights::Weight { + let mut weight = frame_support::weights::Weight::from_parts(0, 0); + + // Replace Old Bridge's Resources, BridgeFee with AssetsHandler's ResourceToAssetInfo + weight += Self::relocate_resource_fee_storage(); + // Delete BridgeTransfer's Bridge Balances Storage + weight += Self::delete_bridge_balances_storage(); + + weight += Self::relocate_external_balance_storage(); + weight += Self::relocate_maximum_issuance_storage(); + weight + } + + #[cfg(feature = "try-runtime")] + fn post_upgrade(state: Vec) -> Result<(), &'static str> { + let pre_vec: (Vec, Vec) = + Decode::decode(&mut &state[..]).map_err(|_| "Failed to decode Tuple")?; + + Self::post_upgrade_resource_fee_storage(Vec::::new())?; + Self::post_upgrade_bridge_balances_storage(Vec::::new())?; + + Self::post_upgrade_external_balance_storage(pre_vec.0)?; + Self::post_upgrade_maximum_issuance_storage(pre_vec.1)?; + + Ok(()) + } +} diff --git a/runtime/litentry/src/migration/mod.rs b/runtime/litentry/src/migration/mod.rs index 2ace63ae8d..bd5e6a22bc 100644 --- a/runtime/litentry/src/migration/mod.rs +++ b/runtime/litentry/src/migration/mod.rs @@ -1,3 +1,5 @@ +pub mod bridge_related; +pub use bridge_related::ReplaceBridgeRelatedStorage; pub mod parachain_staking; pub use parachain_staking::ReplaceParachainStakingStorage; pub mod balances_transaction_payment; diff --git a/runtime/litentry/src/weights/pallet_bridge.rs b/runtime/litentry/src/weights/pallet_bridge.rs index d856d6c374..4482e5eecc 100644 --- a/runtime/litentry/src/weights/pallet_bridge.rs +++ b/runtime/litentry/src/weights/pallet_bridge.rs @@ -60,28 +60,6 @@ impl pallet_bridge::WeightInfo for WeightInfo { .saturating_add(Weight::from_parts(0, 0)) .saturating_add(T::DbWeight::get().writes(1)) } - /// Storage: ChainBridge Resources (r:0 w:1) - /// Proof Skipped: ChainBridge Resources (max_values: None, max_size: None, mode: Measured) - fn set_resource() -> Weight { - // Proof Size summary in bytes: - // Measured: `0` - // Estimated: `0` - // Minimum execution time: 5_353_000 picoseconds. - Weight::from_parts(5_579_000, 0) - .saturating_add(Weight::from_parts(0, 0)) - .saturating_add(T::DbWeight::get().writes(1)) - } - /// Storage: ChainBridge Resources (r:0 w:1) - /// Proof Skipped: ChainBridge Resources (max_values: None, max_size: None, mode: Measured) - fn remove_resource() -> Weight { - // Proof Size summary in bytes: - // Measured: `0` - // Estimated: `0` - // Minimum execution time: 4_557_000 picoseconds. - Weight::from_parts(4_783_000, 0) - .saturating_add(Weight::from_parts(0, 0)) - .saturating_add(T::DbWeight::get().writes(1)) - } /// Storage: ChainBridge ChainNonces (r:1 w:1) /// Proof Skipped: ChainBridge ChainNonces (max_values: None, max_size: None, mode: Measured) fn whitelist_chain() -> Weight { @@ -122,17 +100,6 @@ impl pallet_bridge::WeightInfo for WeightInfo { .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(2)) } - /// Storage: ChainBridge BridgeFee (r:0 w:1) - /// Proof Skipped: ChainBridge BridgeFee (max_values: None, max_size: None, mode: Measured) - fn update_fee() -> Weight { - // Proof Size summary in bytes: - // Measured: `0` - // Estimated: `0` - // Minimum execution time: 11_695_000 picoseconds. - Weight::from_parts(11_966_000, 0) - .saturating_add(Weight::from_parts(0, 0)) - .saturating_add(T::DbWeight::get().writes(1)) - } /// Storage: ChainBridge Relayers (r:1 w:0) /// Proof Skipped: ChainBridge Relayers (max_values: None, max_size: None, mode: Measured) /// Storage: ChainBridge ChainNonces (r:1 w:0) diff --git a/runtime/litentry/src/weights/pallet_bridge_transfer.rs b/runtime/litentry/src/weights/pallet_bridge_transfer.rs index 39a778eaad..122e72cce0 100644 --- a/runtime/litentry/src/weights/pallet_bridge_transfer.rs +++ b/runtime/litentry/src/weights/pallet_bridge_transfer.rs @@ -14,16 +14,14 @@ // You should have received a copy of the GNU General Public License // along with Litentry. If not, see . -//! Autogenerated weights for `pallet_bridge_transfer` +//! Autogenerated weights for pallet_bridge_transfer //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2023-10-17, STEPS: `20`, REPEAT: `50`, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! WORST CASE MAP SIZE: `1000000` -//! HOSTNAME: `parachain-benchmark`, CPU: `Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz` +//! DATE: 2022-09-29, STEPS: `20`, REPEAT: 50, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("litentry-dev"), DB CACHE: 20 // Executed Command: -// ./litentry-collator +// ./target/release/litentry-collator // benchmark // pallet // --chain=litentry-dev @@ -36,76 +34,36 @@ // --steps=20 // --repeat=50 // --header=./LICENSE_HEADER -// --output=./runtime/litentry/src/weights/pallet_bridge_transfer.rs +// --template=./templates/benchmark/pallet-weight-template.hbs +// --output=./pallets/bridge-transfer/src/weights.rs #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] #![allow(unused_imports)] -#![allow(missing_docs)] +#![allow(clippy::unnecessary_cast)] -use frame_support::{traits::Get, weights::Weight}; -use core::marker::PhantomData; +use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}}; +use sp_std::marker::PhantomData; -/// Weight functions for `pallet_bridge_transfer`. +/// Weights for pallet_bridge_transfer using the Litentry node and recommended hardware. pub struct WeightInfo(PhantomData); impl pallet_bridge_transfer::WeightInfo for WeightInfo { - /// Storage: BridgeTransfer ExternalBalances (r:1 w:1) - /// Proof Skipped: BridgeTransfer ExternalBalances (max_values: Some(1), max_size: None, mode: Measured) - /// Storage: ChainBridge ChainNonces (r:1 w:1) - /// Proof Skipped: ChainBridge ChainNonces (max_values: None, max_size: None, mode: Measured) - /// Storage: ChainBridge BridgeFee (r:1 w:0) - /// Proof Skipped: ChainBridge BridgeFee (max_values: None, max_size: None, mode: Measured) - /// Storage: System Account (r:2 w:2) - /// Proof: System Account (max_values: None, max_size: Some(128), added: 2603, mode: MaxEncodedLen) - /// Storage: ChainBridge BridgeEvents (r:1 w:1) - /// Proof Skipped: ChainBridge BridgeEvents (max_values: Some(1), max_size: None, mode: Measured) - fn transfer_native() -> Weight { - // Proof Size summary in bytes: - // Measured: `534` - // Estimated: `6196` - // Minimum execution time: 77_524_000 picoseconds. - Weight::from_parts(79_688_000, 0) - .saturating_add(Weight::from_parts(0, 6196)) - .saturating_add(T::DbWeight::get().reads(6)) - .saturating_add(T::DbWeight::get().writes(5)) + // Storage: BridgeTransfer ExternalBalances (r:1 w:1) + // Storage: ChainBridge ChainNonces (r:1 w:1) + // Storage: ChainBridge BridgeFee (r:1 w:0) + // Storage: System Account (r:2 w:2) + // Storage: ChainBridge BridgeEvents (r:1 w:1) + fn transfer_assets() -> Weight { + Weight::from_parts(59_963_000 as u64, 0) + .saturating_add(T::DbWeight::get().reads(6 as u64)) + .saturating_add(T::DbWeight::get().writes(5 as u64)) } - /// Storage: BridgeTransfer MaximumIssuance (r:1 w:0) - /// Proof Skipped: BridgeTransfer MaximumIssuance (max_values: Some(1), max_size: None, mode: Measured) - /// Storage: BridgeTransfer ExternalBalances (r:1 w:1) - /// Proof Skipped: BridgeTransfer ExternalBalances (max_values: Some(1), max_size: None, mode: Measured) - /// Storage: System Account (r:1 w:1) - /// Proof: System Account (max_values: None, max_size: Some(128), added: 2603, mode: MaxEncodedLen) + // Storage: BridgeTransfer MaximumIssuance (r:1 w:0) + // Storage: BridgeTransfer ExternalBalances (r:1 w:1) + // Storage: System Account (r:1 w:1) fn transfer() -> Weight { - // Proof Size summary in bytes: - // Measured: `212` - // Estimated: `3593` - // Minimum execution time: 44_116_000 picoseconds. - Weight::from_parts(45_735_000, 0) - .saturating_add(Weight::from_parts(0, 3593)) - .saturating_add(T::DbWeight::get().reads(3)) - .saturating_add(T::DbWeight::get().writes(2)) - } - /// Storage: BridgeTransfer MaximumIssuance (r:1 w:1) - /// Proof Skipped: BridgeTransfer MaximumIssuance (max_values: Some(1), max_size: None, mode: Measured) - fn set_maximum_issuance() -> Weight { - // Proof Size summary in bytes: - // Measured: `109` - // Estimated: `1594` - // Minimum execution time: 14_962_000 picoseconds. - Weight::from_parts(15_338_000, 0) - .saturating_add(Weight::from_parts(0, 1594)) - .saturating_add(T::DbWeight::get().reads(1)) - .saturating_add(T::DbWeight::get().writes(1)) - } - /// Storage: BridgeTransfer ExternalBalances (r:0 w:1) - /// Proof Skipped: BridgeTransfer ExternalBalances (max_values: Some(1), max_size: None, mode: Measured) - fn set_external_balances() -> Weight { - // Proof Size summary in bytes: - // Measured: `0` - // Estimated: `0` - // Minimum execution time: 4_372_000 picoseconds. - Weight::from_parts(4_539_000, 0) - .saturating_add(Weight::from_parts(0, 0)) - .saturating_add(T::DbWeight::get().writes(1)) + Weight::from_parts(29_134_000 as u64, 0) + .saturating_add(T::DbWeight::get().reads(3 as u64)) + .saturating_add(T::DbWeight::get().writes(2 as u64)) } } diff --git a/runtime/litmus/Cargo.toml b/runtime/litmus/Cargo.toml index 3666435bc8..38f23c9866 100644 --- a/runtime/litmus/Cargo.toml +++ b/runtime/litmus/Cargo.toml @@ -30,6 +30,7 @@ frame-system-rpc-runtime-api = { workspace = true } frame-try-runtime = { workspace = true, optional = true } pallet-assets = { workspace = true } +pallet-assets-handler = { workspace = true } pallet-aura = { workspace = true } pallet-authorship = { workspace = true } pallet-balances = { workspace = true } @@ -116,6 +117,7 @@ runtime-benchmarks = [ "frame-system-benchmarking/runtime-benchmarks", "frame-system/runtime-benchmarks", "pallet-asset-manager/runtime-benchmarks", + "pallet-assets-handler/runtime-benchmarks", "pallet-balances/runtime-benchmarks", "pallet-bounties/runtime-benchmarks", # This module returned an error when ran the benchmark, temporarily chose to comment it out @@ -171,6 +173,7 @@ std = [ "orml-xtokens/std", "pallet-asset-manager/std", "pallet-assets/std", + "pallet-assets-handler/std", "pallet-aura/std", "pallet-authorship/std", "pallet-balances/std", @@ -238,6 +241,7 @@ try-runtime = [ "orml-xtokens/try-runtime", "pallet-asset-manager/try-runtime", "pallet-assets/try-runtime", + "pallet-assets-handler/try-runtime", "pallet-aura/try-runtime", "pallet-authorship/try-runtime", "pallet-balances/try-runtime", diff --git a/runtime/litmus/src/asset_config.rs b/runtime/litmus/src/asset_config.rs index 9ef633c363..e116865f51 100644 --- a/runtime/litmus/src/asset_config.rs +++ b/runtime/litmus/src/asset_config.rs @@ -36,6 +36,16 @@ parameter_types! { pub const AssetAccountDeposit: Balance = deposit(1, 18); } +pub struct AssetsBenchmarkHelper; +#[cfg(feature = "runtime-benchmarks")] +impl> pallet_assets::BenchmarkHelper + for AssetsBenchmarkHelper +{ + fn create_asset_id_parameter(id: u32) -> AssetIdParameter { + AssetId::from(id).into() + } +} + impl pallet_assets::Config for Runtime { type RuntimeEvent = RuntimeEvent; type Balance = Balance; @@ -57,6 +67,8 @@ impl pallet_assets::Config for Runtime { type RemoveItemsLimit = ConstU32<1000>; type AssetIdParameter = Compact; type CallbackHandle = (); + #[cfg(feature = "runtime-benchmarks")] + type BenchmarkHelper = AssetsBenchmarkHelper; } impl pallet_asset_manager::Config for Runtime { diff --git a/runtime/litmus/src/lib.rs b/runtime/litmus/src/lib.rs index 23b802a891..abf358d535 100644 --- a/runtime/litmus/src/lib.rs +++ b/runtime/litmus/src/lib.rs @@ -137,7 +137,7 @@ pub type Executive = frame_executive::Executive< // it was reverse order before. // See the comment before collation related pallets too. AllPalletsWithSystem, - (migration::ReplaceBalancesRelatedStorage,), + (migration::ReplaceBridgeRelatedStorage, migration::ReplaceBalancesRelatedStorage,), >; impl_opaque_keys! { @@ -740,9 +740,8 @@ impl pallet_bridge::Config for Runtime { type BridgeCommitteeOrigin = EnsureRootOrHalfCouncil; type Proposal = RuntimeCall; type BridgeChainId = BridgeChainId; - type Currency = Balances; + type Balance = Balance; type ProposalLifetime = ProposalLifetime; - type TreasuryAccount = TreasuryAccount; type WeightInfo = weights::pallet_bridge::WeightInfo; } @@ -755,8 +754,8 @@ parameter_types! { } // allow anyone to call transfer_native -pub struct TransferNativeAnyone; -impl SortedMembers for TransferNativeAnyone { +pub struct TransferAssetsAnyone; +impl SortedMembers for TransferAssetsAnyone { fn sorted_members() -> Vec { vec![] } @@ -772,14 +771,18 @@ impl SortedMembers for TransferNativeAnyone { } impl pallet_bridge_transfer::Config for Runtime { - type RuntimeEvent = RuntimeEvent; + type BridgeHandler = AssetsHandler; type BridgeOrigin = pallet_bridge::EnsureBridge; - type TransferNativeMembers = TransferNativeAnyone; + type TransferAssetsMembers = TransferAssetsAnyone; + type WeightInfo = weights::pallet_bridge_transfer::WeightInfo; +} + +impl pallet_assets_handler::Config for Runtime { + type RuntimeEvent = RuntimeEvent; + type TreasuryAccount = TreasuryAccount; type SetMaximumIssuanceOrigin = EnsureRootOrHalfCouncil; - type NativeTokenResourceId = NativeTokenResourceId; type DefaultMaximumIssuance = MaximumIssuance; type ExternalTotalIssuance = ExternalTotalIssuance; - type WeightInfo = weights::pallet_bridge_transfer::WeightInfo; } impl pallet_extrinsic_filter::Config for Runtime { @@ -881,6 +884,7 @@ construct_runtime! { AssetManager: pallet_asset_manager = 65, Teebag: pallet_teebag = 66, Bitacross: pallet_bitacross = 67, + AssetsHandler: pallet_assets_handler = 68, } } diff --git a/runtime/litmus/src/migration/bridge_related.rs b/runtime/litmus/src/migration/bridge_related.rs new file mode 100644 index 0000000000..b8033f4b4d --- /dev/null +++ b/runtime/litmus/src/migration/bridge_related.rs @@ -0,0 +1,298 @@ +// Copyright 2020-2024 Trust Computing GmbH. +// This file is part of Litentry. +// +// Litentry is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// Litentry is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with Litentry. If not, see . +#![allow(clippy::type_complexity)] + +use frame_support::{ + migration::{clear_storage_prefix, storage_key_iter}, + pallet_prelude::*, + traits::{Get, OnRuntimeUpgrade}, + Blake2_256, Twox64Concat, +}; +use pallet_assets_handler::{AssetInfo, ExternalBalances, MaximumIssuance, ResourceToAssetInfo}; +use pallet_balances::AccountData; +use pallet_bridge::{BridgeChainId, ResourceId}; +use sp_std::{marker::PhantomData, vec::Vec}; + +pub const DECIMAL_CONVERTOR: u128 = 1_000_000u128; + +use hex_literal::hex; +#[cfg(feature = "try-runtime")] +use parity_scale_codec::Encode; +use storage::migration::get_storage_value; + +mod old { + use super::*; + #[frame_support::storage_alias] + pub type BridgeBalances = StorageDoubleMap< + pallet_bridge_transfer::Pallet, + Twox64Concat, + ResourceId, + Twox64Concat, + ::AccountId, + u128, + >; + + #[frame_support::storage_alias] + pub type Resources = + StorageMap, Blake2_256, ResourceId, Vec>; + + #[frame_support::storage_alias] + pub type BridgeFee = + StorageMap, Twox64Concat, BridgeChainId, u128>; +} + +pub const NATIVE_TOKEN_RESOURCE_ID: [u8; 32] = + hex!("00000000000000000000000000000063a7e2be78898ba83824b0c0cc8dfb6001"); +// Hard coded key of NATIVE_TOKEN_RESOURCE_ID +pub const BLAKE2_256_KEY: [u8; 32] = + hex!("560cf5c8bfa0719141e0d1b33ae9fec279c53682ce13220d526ad79cccc8aead"); + +// Replace Frame System Storage for Decimal Change from 12 to 18 +// Replace Balances Storage for Decimal Change from 12 to 18 +pub struct ReplaceBridgeRelatedStorage(PhantomData); +impl ReplaceBridgeRelatedStorage +where + T: frame_system::Config> + + pallet_assets::Config + + pallet_assets_handler::Config + + pallet_balances::Config + + pallet_bridge::Config + + pallet_bridge_transfer::Config, +{ + pub fn relocate_resource_fee_storage() -> frame_support::weights::Weight { + log::info!( + target: "ReplaceBridgeRelatedStorage", + "running migration to Bridge Resources/Bridge Fee" + ); + + // We get only one resource registed + // Which is native tokrn + // Resources Storage is using Blake2_256 + // So we can not reverse it out + // Must hardcode back in + let pallet_prefix: &[u8] = b"Bridge"; + let storage_item_prefix_resources: &[u8] = b"Resources"; + let _ = clear_storage_prefix(pallet_prefix, storage_item_prefix_resources, &[], None, None); + // Must hardcode back in + let resource_id: ResourceId = NATIVE_TOKEN_RESOURCE_ID; + + // This is fee for native token + // There should be only 1 item + let storage_item_prefix_fee: &[u8] = b"BridgeFee"; + let stored_data_fee: Vec<_> = storage_key_iter::( + pallet_prefix, + storage_item_prefix_fee, + ) + .collect(); + let _ = clear_storage_prefix(pallet_prefix, storage_item_prefix_fee, &[], None, None); + + // Replace into new storage of AssetsHandler + let fee: u128 = stored_data_fee[0].1.saturating_mul(DECIMAL_CONVERTOR); + let asset_info: AssetInfo = AssetInfo { + fee, + asset: None, // None for native token Asset Id + }; + >::insert(resource_id, asset_info); + + let weight = T::DbWeight::get(); + frame_support::weights::Weight::from_parts(0, 2 * (weight.write + weight.read)) + } + pub fn delete_bridge_balances_storage() -> frame_support::weights::Weight { + log::info!( + target: "ReplaceBridgeRelatedStorage", + "running migration to Bridge Transfer Bridge Balances" + ); + + let result = old::BridgeBalances::::clear(u32::MAX, None); + + let weight = T::DbWeight::get(); + frame_support::weights::Weight::from_parts( + 0, + u64::from(result.unique).saturating_mul(weight.write + weight.read), + ) + } + pub fn relocate_external_balance_storage() -> frame_support::weights::Weight { + log::info!( + target: "ReplaceBridgeRelatedStorage", + "running migration to ExternalBalances" + ); + let pallet_prefix: &[u8] = b"BridgeTransfer"; + let storage_item_prefix: &[u8] = b"ExternalBalances"; + let stored_data = get_storage_value::(pallet_prefix, storage_item_prefix, b"") + .expect("Storage query fails: BridgeTransfer ExternalBalances"); + let _ = clear_storage_prefix(pallet_prefix, storage_item_prefix, &[], None, None); + + >::put(stored_data.saturating_mul(DECIMAL_CONVERTOR)); + let weight = T::DbWeight::get(); + frame_support::weights::Weight::from_parts(0, weight.write + weight.read) + } + pub fn relocate_maximum_issuance_storage() -> frame_support::weights::Weight { + log::info!( + target: "ReplaceBridgeRelatedStorage", + "running migration to MaximumIssuance" + ); + let pallet_prefix: &[u8] = b"BridgeTransfer"; + let storage_item_prefix: &[u8] = b"MaximumIssuance"; + let stored_data = get_storage_value::(pallet_prefix, storage_item_prefix, b"") + .expect("Storage query fails: BridgeTransfer MaximumIssuance"); + let _ = clear_storage_prefix(pallet_prefix, storage_item_prefix, &[], None, None); + + >::put(stored_data.saturating_mul(DECIMAL_CONVERTOR)); + let weight = T::DbWeight::get(); + frame_support::weights::Weight::from_parts(0, weight.write + weight.read) + } +} + +#[cfg(feature = "try-runtime")] +impl ReplaceBridgeRelatedStorage +where + T: frame_system::Config> + + pallet_assets::Config + + pallet_assets_handler::Config + + pallet_balances::Config + + pallet_bridge::Config + + pallet_bridge_transfer::Config, +{ + pub fn pre_upgrade_resource_fee_storage() -> Result, &'static str> { + assert_eq!( + old::Resources::::hashed_key_for(NATIVE_TOKEN_RESOURCE_ID), + b"BridgeTransfer.transfer".to_vec() + ); + + let mut fee_iter = old::BridgeFee::::iter(); + // Just For Reference + // Ethereum: chain_id=0 + // substrate_Litmus: chain_id=1 + // substrate_Litentry:chain_id=2 + // Rinkeby: chain_id=4 + // substrate_Rococo:chain_id=3 + // substrate_Stage: chain_id=5 + // Goerli: chain_id=6 + assert_eq!(fee_iter.next(), Some((0u8, 16_000_000_000_000u128))); + assert!(fee_iter.next().is_none()); + + Ok(Vec::new()) + } + pub fn post_upgrade_resource_fee_storage(_state: Vec) -> Result<(), &'static str> { + assert!(!old::Resources::::contains_key(NATIVE_TOKEN_RESOURCE_ID)); + + let mut fee_iter = old::BridgeFee::::iter(); + assert_eq!(fee_iter.next(), None); + + // Check AssetsHandler Storage + let mut new_resource_fee_iter = >::iter(); + let expected_asset_info = AssetInfo { + fee: 16_000_000_000_000u128.saturating_mul(DECIMAL_CONVERTOR), + asset: None, + }; + assert_eq!( + new_resource_fee_iter.next(), + Some((NATIVE_TOKEN_RESOURCE_ID, expected_asset_info)) + ); + Ok(()) + } + pub fn pre_upgrade_bridge_balances_storage() -> Result, &'static str> { + Ok(Vec::new()) + } + pub fn post_upgrade_bridge_balances_storage(_state: Vec) -> Result<(), &'static str> { + assert!(old::BridgeBalances::::iter().next().is_none()); + Ok(()) + } + pub fn pre_upgrade_external_balance_storage() -> Result, &'static str> { + let pallet_prefix: &[u8] = b"BridgeTransfer"; + let storage_item_prefix: &[u8] = b"ExternalBalances"; + let stored_data = get_storage_value::(pallet_prefix, storage_item_prefix, b"") + .expect("Storage query fails: BridgeTransfer ExternalBalances"); + Ok(stored_data.saturating_mul(DECIMAL_CONVERTOR).encode()) + } + pub fn post_upgrade_external_balance_storage(state: Vec) -> Result<(), &'static str> { + let expected_state = u128::decode(&mut &state[..]) + .map_err(|_| "Failed to decode BridgeTransfer ExternalBalances")?; + + let pallet_prefix: &[u8] = b"AssetsHandler"; + let storage_item_prefix: &[u8] = b"ExternalBalances"; + let actual_state = get_storage_value::(pallet_prefix, storage_item_prefix, b"") + .expect("Storage query fails: BridgeTransfer ExternalBalances"); + assert_eq!(expected_state, actual_state); + Ok(()) + } + pub fn pre_upgrade_maximum_issuance_storage() -> Result, &'static str> { + let pallet_prefix: &[u8] = b"BridgeTransfer"; + let storage_item_prefix: &[u8] = b"MaximumIssuance"; + let stored_data = get_storage_value::(pallet_prefix, storage_item_prefix, b"") + .expect("Storage query fails: BridgeTransfer MaximumIssuance"); + Ok(stored_data.saturating_mul(DECIMAL_CONVERTOR).encode()) + } + pub fn post_upgrade_maximum_issuance_storage(state: Vec) -> Result<(), &'static str> { + let expected_state = u128::decode(&mut &state[..]) + .map_err(|_| "Failed to decode BridgeTransfer MaximumIssuance")?; + + let pallet_prefix: &[u8] = b"AssetsHandler"; + let storage_item_prefix: &[u8] = b"MaximumIssuance"; + let actual_state = get_storage_value::(pallet_prefix, storage_item_prefix, b"") + .expect("Storage query fails: BridgeTransfer MaximumIssuance"); + assert_eq!(expected_state, actual_state); + Ok(()) + } +} + +impl OnRuntimeUpgrade for ReplaceBridgeRelatedStorage +where + T: frame_system::Config> + + pallet_assets::Config + + pallet_assets_handler::Config + + pallet_balances::Config + + pallet_bridge::Config + + pallet_bridge_transfer::Config, +{ + #[cfg(feature = "try-runtime")] + fn pre_upgrade() -> Result, &'static str> { + let _ = Self::pre_upgrade_resource_fee_storage()?; + let _ = Self::pre_upgrade_bridge_balances_storage()?; + + let external_balances_vec = Self::pre_upgrade_external_balance_storage()?; + let maximum_issuance_vec = Self::pre_upgrade_maximum_issuance_storage()?; + + Ok((external_balances_vec, maximum_issuance_vec).encode()) + } + + fn on_runtime_upgrade() -> frame_support::weights::Weight { + let mut weight = frame_support::weights::Weight::from_parts(0, 0); + + // Replace Old Bridge's Resources, BridgeFee with AssetsHandler's ResourceToAssetInfo + weight += Self::relocate_resource_fee_storage(); + // Delete BridgeTransfer's Bridge Balances Storage + weight += Self::delete_bridge_balances_storage(); + + weight += Self::relocate_external_balance_storage(); + weight += Self::relocate_maximum_issuance_storage(); + weight + } + + #[cfg(feature = "try-runtime")] + fn post_upgrade(state: Vec) -> Result<(), &'static str> { + let pre_vec: (Vec, Vec) = + Decode::decode(&mut &state[..]).map_err(|_| "Failed to decode Tuple")?; + + Self::post_upgrade_resource_fee_storage(Vec::::new())?; + Self::post_upgrade_bridge_balances_storage(Vec::::new())?; + + Self::post_upgrade_external_balance_storage(pre_vec.0)?; + Self::post_upgrade_maximum_issuance_storage(pre_vec.1)?; + + Ok(()) + } +} diff --git a/runtime/litmus/src/migration/mod.rs b/runtime/litmus/src/migration/mod.rs index 76af2f1f62..c0ce3280e4 100644 --- a/runtime/litmus/src/migration/mod.rs +++ b/runtime/litmus/src/migration/mod.rs @@ -1,2 +1,5 @@ + +pub mod bridge_related; +pub use bridge_related::ReplaceBridgeRelatedStorage; pub mod balances_transaction_payment; pub use balances_transaction_payment::ReplaceBalancesRelatedStorage; diff --git a/runtime/litmus/src/weights/pallet_bridge.rs b/runtime/litmus/src/weights/pallet_bridge.rs index 709bd638e6..3d6e524fd9 100644 --- a/runtime/litmus/src/weights/pallet_bridge.rs +++ b/runtime/litmus/src/weights/pallet_bridge.rs @@ -60,28 +60,6 @@ impl pallet_bridge::WeightInfo for WeightInfo { .saturating_add(Weight::from_parts(0, 0)) .saturating_add(T::DbWeight::get().writes(1)) } - /// Storage: ChainBridge Resources (r:0 w:1) - /// Proof Skipped: ChainBridge Resources (max_values: None, max_size: None, mode: Measured) - fn set_resource() -> Weight { - // Proof Size summary in bytes: - // Measured: `0` - // Estimated: `0` - // Minimum execution time: 5_196_000 picoseconds. - Weight::from_parts(5_398_000, 0) - .saturating_add(Weight::from_parts(0, 0)) - .saturating_add(T::DbWeight::get().writes(1)) - } - /// Storage: ChainBridge Resources (r:0 w:1) - /// Proof Skipped: ChainBridge Resources (max_values: None, max_size: None, mode: Measured) - fn remove_resource() -> Weight { - // Proof Size summary in bytes: - // Measured: `0` - // Estimated: `0` - // Minimum execution time: 4_483_000 picoseconds. - Weight::from_parts(4_720_000, 0) - .saturating_add(Weight::from_parts(0, 0)) - .saturating_add(T::DbWeight::get().writes(1)) - } /// Storage: ChainBridge ChainNonces (r:1 w:1) /// Proof Skipped: ChainBridge ChainNonces (max_values: None, max_size: None, mode: Measured) fn whitelist_chain() -> Weight { @@ -122,17 +100,6 @@ impl pallet_bridge::WeightInfo for WeightInfo { .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(2)) } - /// Storage: ChainBridge BridgeFee (r:0 w:1) - /// Proof Skipped: ChainBridge BridgeFee (max_values: None, max_size: None, mode: Measured) - fn update_fee() -> Weight { - // Proof Size summary in bytes: - // Measured: `0` - // Estimated: `0` - // Minimum execution time: 11_920_000 picoseconds. - Weight::from_parts(12_729_000, 0) - .saturating_add(Weight::from_parts(0, 0)) - .saturating_add(T::DbWeight::get().writes(1)) - } /// Storage: ChainBridge Relayers (r:1 w:0) /// Proof Skipped: ChainBridge Relayers (max_values: None, max_size: None, mode: Measured) /// Storage: ChainBridge ChainNonces (r:1 w:0) diff --git a/runtime/litmus/src/weights/pallet_bridge_transfer.rs b/runtime/litmus/src/weights/pallet_bridge_transfer.rs index dd44da826c..122e72cce0 100644 --- a/runtime/litmus/src/weights/pallet_bridge_transfer.rs +++ b/runtime/litmus/src/weights/pallet_bridge_transfer.rs @@ -14,19 +14,17 @@ // You should have received a copy of the GNU General Public License // along with Litentry. If not, see . -//! Autogenerated weights for `pallet_bridge_transfer` +//! Autogenerated weights for pallet_bridge_transfer //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2023-10-17, STEPS: `20`, REPEAT: `50`, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! WORST CASE MAP SIZE: `1000000` -//! HOSTNAME: `parachain-benchmark`, CPU: `Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("litmus-dev"), DB CACHE: 20 +//! DATE: 2022-09-29, STEPS: `20`, REPEAT: 50, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("litentry-dev"), DB CACHE: 20 // Executed Command: -// ./litentry-collator +// ./target/release/litentry-collator // benchmark // pallet -// --chain=litmus-dev +// --chain=litentry-dev // --execution=wasm // --db-cache=20 // --wasm-execution=compiled @@ -36,76 +34,36 @@ // --steps=20 // --repeat=50 // --header=./LICENSE_HEADER -// --output=./runtime/litmus/src/weights/pallet_bridge_transfer.rs +// --template=./templates/benchmark/pallet-weight-template.hbs +// --output=./pallets/bridge-transfer/src/weights.rs #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] #![allow(unused_imports)] -#![allow(missing_docs)] +#![allow(clippy::unnecessary_cast)] -use frame_support::{traits::Get, weights::Weight}; -use core::marker::PhantomData; +use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}}; +use sp_std::marker::PhantomData; -/// Weight functions for `pallet_bridge_transfer`. +/// Weights for pallet_bridge_transfer using the Litentry node and recommended hardware. pub struct WeightInfo(PhantomData); impl pallet_bridge_transfer::WeightInfo for WeightInfo { - /// Storage: BridgeTransfer ExternalBalances (r:1 w:1) - /// Proof Skipped: BridgeTransfer ExternalBalances (max_values: Some(1), max_size: None, mode: Measured) - /// Storage: ChainBridge ChainNonces (r:1 w:1) - /// Proof Skipped: ChainBridge ChainNonces (max_values: None, max_size: None, mode: Measured) - /// Storage: ChainBridge BridgeFee (r:1 w:0) - /// Proof Skipped: ChainBridge BridgeFee (max_values: None, max_size: None, mode: Measured) - /// Storage: System Account (r:2 w:2) - /// Proof: System Account (max_values: None, max_size: Some(128), added: 2603, mode: MaxEncodedLen) - /// Storage: ChainBridge BridgeEvents (r:1 w:1) - /// Proof Skipped: ChainBridge BridgeEvents (max_values: Some(1), max_size: None, mode: Measured) - fn transfer_native() -> Weight { - // Proof Size summary in bytes: - // Measured: `567` - // Estimated: `6196` - // Minimum execution time: 78_117_000 picoseconds. - Weight::from_parts(79_433_000, 0) - .saturating_add(Weight::from_parts(0, 6196)) - .saturating_add(T::DbWeight::get().reads(6)) - .saturating_add(T::DbWeight::get().writes(5)) + // Storage: BridgeTransfer ExternalBalances (r:1 w:1) + // Storage: ChainBridge ChainNonces (r:1 w:1) + // Storage: ChainBridge BridgeFee (r:1 w:0) + // Storage: System Account (r:2 w:2) + // Storage: ChainBridge BridgeEvents (r:1 w:1) + fn transfer_assets() -> Weight { + Weight::from_parts(59_963_000 as u64, 0) + .saturating_add(T::DbWeight::get().reads(6 as u64)) + .saturating_add(T::DbWeight::get().writes(5 as u64)) } - /// Storage: BridgeTransfer MaximumIssuance (r:1 w:0) - /// Proof Skipped: BridgeTransfer MaximumIssuance (max_values: Some(1), max_size: None, mode: Measured) - /// Storage: BridgeTransfer ExternalBalances (r:1 w:1) - /// Proof Skipped: BridgeTransfer ExternalBalances (max_values: Some(1), max_size: None, mode: Measured) - /// Storage: System Account (r:1 w:1) - /// Proof: System Account (max_values: None, max_size: Some(128), added: 2603, mode: MaxEncodedLen) + // Storage: BridgeTransfer MaximumIssuance (r:1 w:0) + // Storage: BridgeTransfer ExternalBalances (r:1 w:1) + // Storage: System Account (r:1 w:1) fn transfer() -> Weight { - // Proof Size summary in bytes: - // Measured: `212` - // Estimated: `3593` - // Minimum execution time: 44_778_000 picoseconds. - Weight::from_parts(46_337_000, 0) - .saturating_add(Weight::from_parts(0, 3593)) - .saturating_add(T::DbWeight::get().reads(3)) - .saturating_add(T::DbWeight::get().writes(2)) - } - /// Storage: BridgeTransfer MaximumIssuance (r:1 w:1) - /// Proof Skipped: BridgeTransfer MaximumIssuance (max_values: Some(1), max_size: None, mode: Measured) - fn set_maximum_issuance() -> Weight { - // Proof Size summary in bytes: - // Measured: `109` - // Estimated: `1594` - // Minimum execution time: 15_159_000 picoseconds. - Weight::from_parts(15_789_000, 0) - .saturating_add(Weight::from_parts(0, 1594)) - .saturating_add(T::DbWeight::get().reads(1)) - .saturating_add(T::DbWeight::get().writes(1)) - } - /// Storage: BridgeTransfer ExternalBalances (r:0 w:1) - /// Proof Skipped: BridgeTransfer ExternalBalances (max_values: Some(1), max_size: None, mode: Measured) - fn set_external_balances() -> Weight { - // Proof Size summary in bytes: - // Measured: `0` - // Estimated: `0` - // Minimum execution time: 4_064_000 picoseconds. - Weight::from_parts(4_247_000, 0) - .saturating_add(Weight::from_parts(0, 0)) - .saturating_add(T::DbWeight::get().writes(1)) + Weight::from_parts(29_134_000 as u64, 0) + .saturating_add(T::DbWeight::get().reads(3 as u64)) + .saturating_add(T::DbWeight::get().writes(2 as u64)) } } diff --git a/runtime/rococo/Cargo.toml b/runtime/rococo/Cargo.toml index 4194c4254f..f03e0bb3a5 100644 --- a/runtime/rococo/Cargo.toml +++ b/runtime/rococo/Cargo.toml @@ -79,6 +79,7 @@ core-primitives = { workspace = true } pallet-account-fix = { workspace = true } pallet-asset-manager = { workspace = true } pallet-assets = { workspace = true } +pallet-assets-handler = { workspace = true } pallet-bitacross = { workspace = true } pallet-bitacross-mimic = { workspace = true } pallet-bridge = { workspace = true } @@ -137,6 +138,7 @@ runtime-benchmarks = [ "frame-system-benchmarking/runtime-benchmarks", "frame-system/runtime-benchmarks", "pallet-asset-manager/runtime-benchmarks", + "pallet-assets-handler/runtime-benchmarks", "pallet-balances/runtime-benchmarks", "pallet-bounties/runtime-benchmarks", "pallet-collective/runtime-benchmarks", @@ -194,6 +196,7 @@ std = [ "orml-xtokens/std", "pallet-asset-manager/std", "pallet-assets/std", + "pallet-assets-handler/std", "pallet-aura/std", "pallet-authorship/std", "pallet-balances/std", @@ -281,6 +284,7 @@ try-runtime = [ "pallet-account-fix/try-runtime", "pallet-asset-manager/try-runtime", "pallet-assets/try-runtime", + "pallet-assets-handler/try-runtime", "pallet-aura/try-runtime", "pallet-authorship/try-runtime", "pallet-balances/try-runtime", diff --git a/runtime/rococo/src/asset_config.rs b/runtime/rococo/src/asset_config.rs index 121cd5173b..b86fd07517 100644 --- a/runtime/rococo/src/asset_config.rs +++ b/runtime/rococo/src/asset_config.rs @@ -57,6 +57,16 @@ impl AddressToAssetId for Runtime { } } +pub struct AssetsBenchmarkHelper; +#[cfg(feature = "runtime-benchmarks")] +impl> pallet_assets::BenchmarkHelper + for AssetsBenchmarkHelper +{ + fn create_asset_id_parameter(id: u32) -> AssetIdParameter { + AssetId::from(id).into() + } +} + impl pallet_assets::Config for Runtime { type RuntimeEvent = RuntimeEvent; type Balance = Balance; @@ -78,6 +88,8 @@ impl pallet_assets::Config for Runtime { type RemoveItemsLimit = ConstU32<1000>; type AssetIdParameter = Compact; type CallbackHandle = (); + #[cfg(feature = "runtime-benchmarks")] + type BenchmarkHelper = AssetsBenchmarkHelper; } impl pallet_asset_manager::Config for Runtime { diff --git a/runtime/rococo/src/lib.rs b/runtime/rococo/src/lib.rs index fb0a47b92c..51d5fa799c 100644 --- a/runtime/rococo/src/lib.rs +++ b/runtime/rococo/src/lib.rs @@ -177,8 +177,7 @@ pub type Executive = frame_executive::Executive< // it was reverse order before. // See the comment before collation related pallets too. AllPalletsWithSystem, - (migration::ReplaceParachainStakingStorage,), - (migration::ReplaceBalancesRelatedStorage,), + (migration::ReplaceParachainStakingStorage,migration::ReplaceBalancesRelatedStorage,migration::ReplaceBridgeRelatedStorage,), >; impl fp_self_contained::SelfContainedCall for RuntimeCall { @@ -930,7 +929,7 @@ impl pallet_parachain_staking::Config for Runtime { type OnCollatorPayout = (); type OnNewRound = (); type WeightInfo = weights::pallet_parachain_staking::WeightInfo; - type IssuanceAdapter = BridgeTransfer; + type IssuanceAdapter = AssetsHandler; } parameter_types! { @@ -962,9 +961,8 @@ impl pallet_bridge::Config for Runtime { type BridgeCommitteeOrigin = EnsureRootOrHalfCouncil; type Proposal = RuntimeCall; type BridgeChainId = BridgeChainId; - type Currency = Balances; + type Balance = Balance; type ProposalLifetime = ProposalLifetime; - type TreasuryAccount = TreasuryAccount; type WeightInfo = weights::pallet_bridge::WeightInfo; } @@ -976,8 +974,8 @@ parameter_types! { pub const NativeTokenResourceId: [u8; 32] = hex!("00000000000000000000000000000063a7e2be78898ba83824b0c0cc8dfb6001"); } -pub struct TransferNativeAnyone; -impl SortedMembers for TransferNativeAnyone { +pub struct TransferAssetsAnyone; +impl SortedMembers for TransferAssetsAnyone { fn sorted_members() -> Vec { vec![] } @@ -993,14 +991,18 @@ impl SortedMembers for TransferNativeAnyone { } impl pallet_bridge_transfer::Config for Runtime { - type RuntimeEvent = RuntimeEvent; + type BridgeHandler = AssetsHandler; type BridgeOrigin = pallet_bridge::EnsureBridge; - type TransferNativeMembers = TransferNativeAnyone; + type TransferAssetsMembers = TransferAssetsAnyone; + type WeightInfo = weights::pallet_bridge_transfer::WeightInfo; +} + +impl pallet_assets_handler::Config for Runtime { + type RuntimeEvent = RuntimeEvent; + type TreasuryAccount = TreasuryAccount; type SetMaximumIssuanceOrigin = EnsureRootOrHalfCouncil; - type NativeTokenResourceId = NativeTokenResourceId; type DefaultMaximumIssuance = MaximumIssuance; type ExternalTotalIssuance = ExternalTotalIssuance; - type WeightInfo = weights::pallet_bridge_transfer::WeightInfo; } impl pallet_extrinsic_filter::Config for Runtime { @@ -1301,6 +1303,9 @@ construct_runtime! { DeveloperCommitteeMembership: pallet_membership:: = 74, ScoreStaking: pallet_score_staking = 75, + // New Bridge Added + AssetsHandler: pallet_assets_handler = 76, + // TEE Teebag: pallet_teebag = 93, diff --git a/runtime/rococo/src/migration/bridge_related.rs b/runtime/rococo/src/migration/bridge_related.rs new file mode 100644 index 0000000000..b8033f4b4d --- /dev/null +++ b/runtime/rococo/src/migration/bridge_related.rs @@ -0,0 +1,298 @@ +// Copyright 2020-2024 Trust Computing GmbH. +// This file is part of Litentry. +// +// Litentry is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// Litentry is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with Litentry. If not, see . +#![allow(clippy::type_complexity)] + +use frame_support::{ + migration::{clear_storage_prefix, storage_key_iter}, + pallet_prelude::*, + traits::{Get, OnRuntimeUpgrade}, + Blake2_256, Twox64Concat, +}; +use pallet_assets_handler::{AssetInfo, ExternalBalances, MaximumIssuance, ResourceToAssetInfo}; +use pallet_balances::AccountData; +use pallet_bridge::{BridgeChainId, ResourceId}; +use sp_std::{marker::PhantomData, vec::Vec}; + +pub const DECIMAL_CONVERTOR: u128 = 1_000_000u128; + +use hex_literal::hex; +#[cfg(feature = "try-runtime")] +use parity_scale_codec::Encode; +use storage::migration::get_storage_value; + +mod old { + use super::*; + #[frame_support::storage_alias] + pub type BridgeBalances = StorageDoubleMap< + pallet_bridge_transfer::Pallet, + Twox64Concat, + ResourceId, + Twox64Concat, + ::AccountId, + u128, + >; + + #[frame_support::storage_alias] + pub type Resources = + StorageMap, Blake2_256, ResourceId, Vec>; + + #[frame_support::storage_alias] + pub type BridgeFee = + StorageMap, Twox64Concat, BridgeChainId, u128>; +} + +pub const NATIVE_TOKEN_RESOURCE_ID: [u8; 32] = + hex!("00000000000000000000000000000063a7e2be78898ba83824b0c0cc8dfb6001"); +// Hard coded key of NATIVE_TOKEN_RESOURCE_ID +pub const BLAKE2_256_KEY: [u8; 32] = + hex!("560cf5c8bfa0719141e0d1b33ae9fec279c53682ce13220d526ad79cccc8aead"); + +// Replace Frame System Storage for Decimal Change from 12 to 18 +// Replace Balances Storage for Decimal Change from 12 to 18 +pub struct ReplaceBridgeRelatedStorage(PhantomData); +impl ReplaceBridgeRelatedStorage +where + T: frame_system::Config> + + pallet_assets::Config + + pallet_assets_handler::Config + + pallet_balances::Config + + pallet_bridge::Config + + pallet_bridge_transfer::Config, +{ + pub fn relocate_resource_fee_storage() -> frame_support::weights::Weight { + log::info!( + target: "ReplaceBridgeRelatedStorage", + "running migration to Bridge Resources/Bridge Fee" + ); + + // We get only one resource registed + // Which is native tokrn + // Resources Storage is using Blake2_256 + // So we can not reverse it out + // Must hardcode back in + let pallet_prefix: &[u8] = b"Bridge"; + let storage_item_prefix_resources: &[u8] = b"Resources"; + let _ = clear_storage_prefix(pallet_prefix, storage_item_prefix_resources, &[], None, None); + // Must hardcode back in + let resource_id: ResourceId = NATIVE_TOKEN_RESOURCE_ID; + + // This is fee for native token + // There should be only 1 item + let storage_item_prefix_fee: &[u8] = b"BridgeFee"; + let stored_data_fee: Vec<_> = storage_key_iter::( + pallet_prefix, + storage_item_prefix_fee, + ) + .collect(); + let _ = clear_storage_prefix(pallet_prefix, storage_item_prefix_fee, &[], None, None); + + // Replace into new storage of AssetsHandler + let fee: u128 = stored_data_fee[0].1.saturating_mul(DECIMAL_CONVERTOR); + let asset_info: AssetInfo = AssetInfo { + fee, + asset: None, // None for native token Asset Id + }; + >::insert(resource_id, asset_info); + + let weight = T::DbWeight::get(); + frame_support::weights::Weight::from_parts(0, 2 * (weight.write + weight.read)) + } + pub fn delete_bridge_balances_storage() -> frame_support::weights::Weight { + log::info!( + target: "ReplaceBridgeRelatedStorage", + "running migration to Bridge Transfer Bridge Balances" + ); + + let result = old::BridgeBalances::::clear(u32::MAX, None); + + let weight = T::DbWeight::get(); + frame_support::weights::Weight::from_parts( + 0, + u64::from(result.unique).saturating_mul(weight.write + weight.read), + ) + } + pub fn relocate_external_balance_storage() -> frame_support::weights::Weight { + log::info!( + target: "ReplaceBridgeRelatedStorage", + "running migration to ExternalBalances" + ); + let pallet_prefix: &[u8] = b"BridgeTransfer"; + let storage_item_prefix: &[u8] = b"ExternalBalances"; + let stored_data = get_storage_value::(pallet_prefix, storage_item_prefix, b"") + .expect("Storage query fails: BridgeTransfer ExternalBalances"); + let _ = clear_storage_prefix(pallet_prefix, storage_item_prefix, &[], None, None); + + >::put(stored_data.saturating_mul(DECIMAL_CONVERTOR)); + let weight = T::DbWeight::get(); + frame_support::weights::Weight::from_parts(0, weight.write + weight.read) + } + pub fn relocate_maximum_issuance_storage() -> frame_support::weights::Weight { + log::info!( + target: "ReplaceBridgeRelatedStorage", + "running migration to MaximumIssuance" + ); + let pallet_prefix: &[u8] = b"BridgeTransfer"; + let storage_item_prefix: &[u8] = b"MaximumIssuance"; + let stored_data = get_storage_value::(pallet_prefix, storage_item_prefix, b"") + .expect("Storage query fails: BridgeTransfer MaximumIssuance"); + let _ = clear_storage_prefix(pallet_prefix, storage_item_prefix, &[], None, None); + + >::put(stored_data.saturating_mul(DECIMAL_CONVERTOR)); + let weight = T::DbWeight::get(); + frame_support::weights::Weight::from_parts(0, weight.write + weight.read) + } +} + +#[cfg(feature = "try-runtime")] +impl ReplaceBridgeRelatedStorage +where + T: frame_system::Config> + + pallet_assets::Config + + pallet_assets_handler::Config + + pallet_balances::Config + + pallet_bridge::Config + + pallet_bridge_transfer::Config, +{ + pub fn pre_upgrade_resource_fee_storage() -> Result, &'static str> { + assert_eq!( + old::Resources::::hashed_key_for(NATIVE_TOKEN_RESOURCE_ID), + b"BridgeTransfer.transfer".to_vec() + ); + + let mut fee_iter = old::BridgeFee::::iter(); + // Just For Reference + // Ethereum: chain_id=0 + // substrate_Litmus: chain_id=1 + // substrate_Litentry:chain_id=2 + // Rinkeby: chain_id=4 + // substrate_Rococo:chain_id=3 + // substrate_Stage: chain_id=5 + // Goerli: chain_id=6 + assert_eq!(fee_iter.next(), Some((0u8, 16_000_000_000_000u128))); + assert!(fee_iter.next().is_none()); + + Ok(Vec::new()) + } + pub fn post_upgrade_resource_fee_storage(_state: Vec) -> Result<(), &'static str> { + assert!(!old::Resources::::contains_key(NATIVE_TOKEN_RESOURCE_ID)); + + let mut fee_iter = old::BridgeFee::::iter(); + assert_eq!(fee_iter.next(), None); + + // Check AssetsHandler Storage + let mut new_resource_fee_iter = >::iter(); + let expected_asset_info = AssetInfo { + fee: 16_000_000_000_000u128.saturating_mul(DECIMAL_CONVERTOR), + asset: None, + }; + assert_eq!( + new_resource_fee_iter.next(), + Some((NATIVE_TOKEN_RESOURCE_ID, expected_asset_info)) + ); + Ok(()) + } + pub fn pre_upgrade_bridge_balances_storage() -> Result, &'static str> { + Ok(Vec::new()) + } + pub fn post_upgrade_bridge_balances_storage(_state: Vec) -> Result<(), &'static str> { + assert!(old::BridgeBalances::::iter().next().is_none()); + Ok(()) + } + pub fn pre_upgrade_external_balance_storage() -> Result, &'static str> { + let pallet_prefix: &[u8] = b"BridgeTransfer"; + let storage_item_prefix: &[u8] = b"ExternalBalances"; + let stored_data = get_storage_value::(pallet_prefix, storage_item_prefix, b"") + .expect("Storage query fails: BridgeTransfer ExternalBalances"); + Ok(stored_data.saturating_mul(DECIMAL_CONVERTOR).encode()) + } + pub fn post_upgrade_external_balance_storage(state: Vec) -> Result<(), &'static str> { + let expected_state = u128::decode(&mut &state[..]) + .map_err(|_| "Failed to decode BridgeTransfer ExternalBalances")?; + + let pallet_prefix: &[u8] = b"AssetsHandler"; + let storage_item_prefix: &[u8] = b"ExternalBalances"; + let actual_state = get_storage_value::(pallet_prefix, storage_item_prefix, b"") + .expect("Storage query fails: BridgeTransfer ExternalBalances"); + assert_eq!(expected_state, actual_state); + Ok(()) + } + pub fn pre_upgrade_maximum_issuance_storage() -> Result, &'static str> { + let pallet_prefix: &[u8] = b"BridgeTransfer"; + let storage_item_prefix: &[u8] = b"MaximumIssuance"; + let stored_data = get_storage_value::(pallet_prefix, storage_item_prefix, b"") + .expect("Storage query fails: BridgeTransfer MaximumIssuance"); + Ok(stored_data.saturating_mul(DECIMAL_CONVERTOR).encode()) + } + pub fn post_upgrade_maximum_issuance_storage(state: Vec) -> Result<(), &'static str> { + let expected_state = u128::decode(&mut &state[..]) + .map_err(|_| "Failed to decode BridgeTransfer MaximumIssuance")?; + + let pallet_prefix: &[u8] = b"AssetsHandler"; + let storage_item_prefix: &[u8] = b"MaximumIssuance"; + let actual_state = get_storage_value::(pallet_prefix, storage_item_prefix, b"") + .expect("Storage query fails: BridgeTransfer MaximumIssuance"); + assert_eq!(expected_state, actual_state); + Ok(()) + } +} + +impl OnRuntimeUpgrade for ReplaceBridgeRelatedStorage +where + T: frame_system::Config> + + pallet_assets::Config + + pallet_assets_handler::Config + + pallet_balances::Config + + pallet_bridge::Config + + pallet_bridge_transfer::Config, +{ + #[cfg(feature = "try-runtime")] + fn pre_upgrade() -> Result, &'static str> { + let _ = Self::pre_upgrade_resource_fee_storage()?; + let _ = Self::pre_upgrade_bridge_balances_storage()?; + + let external_balances_vec = Self::pre_upgrade_external_balance_storage()?; + let maximum_issuance_vec = Self::pre_upgrade_maximum_issuance_storage()?; + + Ok((external_balances_vec, maximum_issuance_vec).encode()) + } + + fn on_runtime_upgrade() -> frame_support::weights::Weight { + let mut weight = frame_support::weights::Weight::from_parts(0, 0); + + // Replace Old Bridge's Resources, BridgeFee with AssetsHandler's ResourceToAssetInfo + weight += Self::relocate_resource_fee_storage(); + // Delete BridgeTransfer's Bridge Balances Storage + weight += Self::delete_bridge_balances_storage(); + + weight += Self::relocate_external_balance_storage(); + weight += Self::relocate_maximum_issuance_storage(); + weight + } + + #[cfg(feature = "try-runtime")] + fn post_upgrade(state: Vec) -> Result<(), &'static str> { + let pre_vec: (Vec, Vec) = + Decode::decode(&mut &state[..]).map_err(|_| "Failed to decode Tuple")?; + + Self::post_upgrade_resource_fee_storage(Vec::::new())?; + Self::post_upgrade_bridge_balances_storage(Vec::::new())?; + + Self::post_upgrade_external_balance_storage(pre_vec.0)?; + Self::post_upgrade_maximum_issuance_storage(pre_vec.1)?; + + Ok(()) + } +} diff --git a/runtime/rococo/src/migration/mod.rs b/runtime/rococo/src/migration/mod.rs index 2ace63ae8d..bd5e6a22bc 100644 --- a/runtime/rococo/src/migration/mod.rs +++ b/runtime/rococo/src/migration/mod.rs @@ -1,3 +1,5 @@ +pub mod bridge_related; +pub use bridge_related::ReplaceBridgeRelatedStorage; pub mod parachain_staking; pub use parachain_staking::ReplaceParachainStakingStorage; pub mod balances_transaction_payment; diff --git a/runtime/rococo/src/weights/pallet_bridge.rs b/runtime/rococo/src/weights/pallet_bridge.rs index b08be4dbeb..6e48ad7452 100644 --- a/runtime/rococo/src/weights/pallet_bridge.rs +++ b/runtime/rococo/src/weights/pallet_bridge.rs @@ -60,28 +60,6 @@ impl pallet_bridge::WeightInfo for WeightInfo { .saturating_add(Weight::from_parts(0, 0)) .saturating_add(T::DbWeight::get().writes(1)) } - /// Storage: ChainBridge Resources (r:0 w:1) - /// Proof Skipped: ChainBridge Resources (max_values: None, max_size: None, mode: Measured) - fn set_resource() -> Weight { - // Proof Size summary in bytes: - // Measured: `0` - // Estimated: `0` - // Minimum execution time: 5_198_000 picoseconds. - Weight::from_parts(5_361_000, 0) - .saturating_add(Weight::from_parts(0, 0)) - .saturating_add(T::DbWeight::get().writes(1)) - } - /// Storage: ChainBridge Resources (r:0 w:1) - /// Proof Skipped: ChainBridge Resources (max_values: None, max_size: None, mode: Measured) - fn remove_resource() -> Weight { - // Proof Size summary in bytes: - // Measured: `0` - // Estimated: `0` - // Minimum execution time: 4_399_000 picoseconds. - Weight::from_parts(4_584_000, 0) - .saturating_add(Weight::from_parts(0, 0)) - .saturating_add(T::DbWeight::get().writes(1)) - } /// Storage: ChainBridge ChainNonces (r:1 w:1) /// Proof Skipped: ChainBridge ChainNonces (max_values: None, max_size: None, mode: Measured) fn whitelist_chain() -> Weight { @@ -122,17 +100,6 @@ impl pallet_bridge::WeightInfo for WeightInfo { .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(2)) } - /// Storage: ChainBridge BridgeFee (r:0 w:1) - /// Proof Skipped: ChainBridge BridgeFee (max_values: None, max_size: None, mode: Measured) - fn update_fee() -> Weight { - // Proof Size summary in bytes: - // Measured: `0` - // Estimated: `0` - // Minimum execution time: 11_350_000 picoseconds. - Weight::from_parts(11_739_000, 0) - .saturating_add(Weight::from_parts(0, 0)) - .saturating_add(T::DbWeight::get().writes(1)) - } /// Storage: ChainBridge Relayers (r:1 w:0) /// Proof Skipped: ChainBridge Relayers (max_values: None, max_size: None, mode: Measured) /// Storage: ChainBridge ChainNonces (r:1 w:0) diff --git a/runtime/rococo/src/weights/pallet_bridge_transfer.rs b/runtime/rococo/src/weights/pallet_bridge_transfer.rs index 938737145c..122e72cce0 100644 --- a/runtime/rococo/src/weights/pallet_bridge_transfer.rs +++ b/runtime/rococo/src/weights/pallet_bridge_transfer.rs @@ -14,19 +14,17 @@ // You should have received a copy of the GNU General Public License // along with Litentry. If not, see . -//! Autogenerated weights for `pallet_bridge_transfer` +//! Autogenerated weights for pallet_bridge_transfer //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2023-10-17, STEPS: `20`, REPEAT: `50`, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! WORST CASE MAP SIZE: `1000000` -//! HOSTNAME: `parachain-benchmark`, CPU: `Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("rococo-dev"), DB CACHE: 20 +//! DATE: 2022-09-29, STEPS: `20`, REPEAT: 50, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("litentry-dev"), DB CACHE: 20 // Executed Command: -// ./litentry-collator +// ./target/release/litentry-collator // benchmark // pallet -// --chain=rococo-dev +// --chain=litentry-dev // --execution=wasm // --db-cache=20 // --wasm-execution=compiled @@ -36,76 +34,36 @@ // --steps=20 // --repeat=50 // --header=./LICENSE_HEADER -// --output=./runtime/rococo/src/weights/pallet_bridge_transfer.rs +// --template=./templates/benchmark/pallet-weight-template.hbs +// --output=./pallets/bridge-transfer/src/weights.rs #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] #![allow(unused_imports)] -#![allow(missing_docs)] +#![allow(clippy::unnecessary_cast)] -use frame_support::{traits::Get, weights::Weight}; -use core::marker::PhantomData; +use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}}; +use sp_std::marker::PhantomData; -/// Weight functions for `pallet_bridge_transfer`. +/// Weights for pallet_bridge_transfer using the Litentry node and recommended hardware. pub struct WeightInfo(PhantomData); impl pallet_bridge_transfer::WeightInfo for WeightInfo { - /// Storage: BridgeTransfer ExternalBalances (r:1 w:1) - /// Proof Skipped: BridgeTransfer ExternalBalances (max_values: Some(1), max_size: None, mode: Measured) - /// Storage: ChainBridge ChainNonces (r:1 w:1) - /// Proof Skipped: ChainBridge ChainNonces (max_values: None, max_size: None, mode: Measured) - /// Storage: ChainBridge BridgeFee (r:1 w:0) - /// Proof Skipped: ChainBridge BridgeFee (max_values: None, max_size: None, mode: Measured) - /// Storage: System Account (r:2 w:2) - /// Proof: System Account (max_values: None, max_size: Some(128), added: 2603, mode: MaxEncodedLen) - /// Storage: ChainBridge BridgeEvents (r:1 w:1) - /// Proof Skipped: ChainBridge BridgeEvents (max_values: Some(1), max_size: None, mode: Measured) - fn transfer_native() -> Weight { - // Proof Size summary in bytes: - // Measured: `567` - // Estimated: `6196` - // Minimum execution time: 77_571_000 picoseconds. - Weight::from_parts(78_723_000, 0) - .saturating_add(Weight::from_parts(0, 6196)) - .saturating_add(T::DbWeight::get().reads(6)) - .saturating_add(T::DbWeight::get().writes(5)) + // Storage: BridgeTransfer ExternalBalances (r:1 w:1) + // Storage: ChainBridge ChainNonces (r:1 w:1) + // Storage: ChainBridge BridgeFee (r:1 w:0) + // Storage: System Account (r:2 w:2) + // Storage: ChainBridge BridgeEvents (r:1 w:1) + fn transfer_assets() -> Weight { + Weight::from_parts(59_963_000 as u64, 0) + .saturating_add(T::DbWeight::get().reads(6 as u64)) + .saturating_add(T::DbWeight::get().writes(5 as u64)) } - /// Storage: BridgeTransfer MaximumIssuance (r:1 w:0) - /// Proof Skipped: BridgeTransfer MaximumIssuance (max_values: Some(1), max_size: None, mode: Measured) - /// Storage: BridgeTransfer ExternalBalances (r:1 w:1) - /// Proof Skipped: BridgeTransfer ExternalBalances (max_values: Some(1), max_size: None, mode: Measured) - /// Storage: System Account (r:1 w:1) - /// Proof: System Account (max_values: None, max_size: Some(128), added: 2603, mode: MaxEncodedLen) + // Storage: BridgeTransfer MaximumIssuance (r:1 w:0) + // Storage: BridgeTransfer ExternalBalances (r:1 w:1) + // Storage: System Account (r:1 w:1) fn transfer() -> Weight { - // Proof Size summary in bytes: - // Measured: `212` - // Estimated: `3593` - // Minimum execution time: 44_216_000 picoseconds. - Weight::from_parts(44_876_000, 0) - .saturating_add(Weight::from_parts(0, 3593)) - .saturating_add(T::DbWeight::get().reads(3)) - .saturating_add(T::DbWeight::get().writes(2)) - } - /// Storage: BridgeTransfer MaximumIssuance (r:1 w:1) - /// Proof Skipped: BridgeTransfer MaximumIssuance (max_values: Some(1), max_size: None, mode: Measured) - fn set_maximum_issuance() -> Weight { - // Proof Size summary in bytes: - // Measured: `109` - // Estimated: `1594` - // Minimum execution time: 14_869_000 picoseconds. - Weight::from_parts(15_264_000, 0) - .saturating_add(Weight::from_parts(0, 1594)) - .saturating_add(T::DbWeight::get().reads(1)) - .saturating_add(T::DbWeight::get().writes(1)) - } - /// Storage: BridgeTransfer ExternalBalances (r:0 w:1) - /// Proof Skipped: BridgeTransfer ExternalBalances (max_values: Some(1), max_size: None, mode: Measured) - fn set_external_balances() -> Weight { - // Proof Size summary in bytes: - // Measured: `0` - // Estimated: `0` - // Minimum execution time: 3_910_000 picoseconds. - Weight::from_parts(4_150_000, 0) - .saturating_add(Weight::from_parts(0, 0)) - .saturating_add(T::DbWeight::get().writes(1)) + Weight::from_parts(29_134_000 as u64, 0) + .saturating_add(T::DbWeight::get().reads(3 as u64)) + .saturating_add(T::DbWeight::get().writes(2 as u64)) } } diff --git a/scripts/launch-local-bridge-binary.sh b/scripts/launch-local-bridge-binary.sh index 04b3303763..27808e8638 100755 --- a/scripts/launch-local-bridge-binary.sh +++ b/scripts/launch-local-bridge-binary.sh @@ -5,7 +5,7 @@ LITENTRY_PARACHAIN_DIR=${LITENTRY_PARACHAIN_DIR:-"/tmp/parachain_dev"} ROOTDIR=$(git rev-parse --show-toplevel) -GOPATH=${HOME}/go go install github.com/litentry/ChainBridge/cmd/chainbridge@dev +GOPATH=${HOME}/go go install github.com/collab-ai-network/ChainBridge/cmd/chainbridge@sol0.8.19 cp ${HOME}/go/bin/chainbridge $LITENTRY_PARACHAIN_DIR/chainbridge diff --git a/ts-tests/common/abi/bridge/Bridge.json b/ts-tests/common/abi/bridge/Bridge.json index 464017026b..0faecd5b4f 100644 --- a/ts-tests/common/abi/bridge/Bridge.json +++ b/ts-tests/common/abi/bridge/Bridge.json @@ -1,32220 +1,51803 @@ { - "contractName": "Bridge", - "abi": [ + "contractName": "Bridge", + "abi": [ + { + "inputs": [ { - "inputs": [ - { - "internalType": "uint8", - "name": "chainID", - "type": "uint8" - }, - { - "internalType": "address[]", - "name": "initialRelayers", - "type": "address[]" - }, - { - "internalType": "uint256", - "name": "initialRelayerThreshold", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "fee", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "expiry", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" + "internalType": "uint8", + "name": "chainID", + "type": "uint8" }, { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint8", - "name": "destinationChainID", - "type": "uint8" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "resourceID", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "uint64", - "name": "depositNonce", - "type": "uint64" - } - ], - "name": "Deposit", - "type": "event" + "internalType": "address[]", + "name": "initialRelayers", + "type": "address[]" }, { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "Paused", - "type": "event" + "internalType": "uint256", + "name": "initialRelayerThreshold", + "type": "uint256" }, { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint8", - "name": "originChainID", - "type": "uint8" - }, - { - "indexed": true, - "internalType": "uint64", - "name": "depositNonce", - "type": "uint64" - }, - { - "indexed": true, - "internalType": "enum Bridge.ProposalStatus", - "name": "status", - "type": "uint8" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "resourceID", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "dataHash", - "type": "bytes32" - } - ], - "name": "ProposalEvent", - "type": "event" + "internalType": "uint256", + "name": "fee", + "type": "uint256" }, { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint8", - "name": "originChainID", - "type": "uint8" - }, - { - "indexed": true, - "internalType": "uint64", - "name": "depositNonce", - "type": "uint64" - }, - { - "indexed": true, - "internalType": "enum Bridge.ProposalStatus", - "name": "status", - "type": "uint8" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "resourceID", - "type": "bytes32" - } - ], - "name": "ProposalVote", - "type": "event" - }, + "internalType": "uint256", + "name": "expiry", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "relayer", - "type": "address" - } - ], - "name": "RelayerAdded", - "type": "event" + "indexed": true, + "internalType": "uint8", + "name": "destinationChainID", + "type": "uint8" }, { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "relayer", - "type": "address" - } - ], - "name": "RelayerRemoved", - "type": "event" + "indexed": true, + "internalType": "bytes32", + "name": "resourceID", + "type": "bytes32" }, { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "newThreshold", - "type": "uint256" - } - ], - "name": "RelayerThresholdChanged", - "type": "event" - }, + "indexed": true, + "internalType": "uint64", + "name": "depositNonce", + "type": "uint64" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "previousAdminRole", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "newAdminRole", - "type": "bytes32" - } - ], - "name": "RoleAdminChanged", - "type": "event" - }, + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "RoleGranted", - "type": "event" + "indexed": true, + "internalType": "uint8", + "name": "originChainID", + "type": "uint8" }, { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "RoleRevoked", - "type": "event" + "indexed": true, + "internalType": "uint64", + "name": "depositNonce", + "type": "uint64" }, { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "Unpaused", - "type": "event" + "indexed": true, + "internalType": "enum Bridge.ProposalStatus", + "name": "status", + "type": "uint8" }, { - "inputs": [], - "name": "DEFAULT_ADMIN_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true + "indexed": false, + "internalType": "bytes32", + "name": "resourceID", + "type": "bytes32" }, { - "inputs": [], - "name": "RELAYER_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true + "indexed": false, + "internalType": "bytes32", + "name": "dataHash", + "type": "bytes32" + } + ], + "name": "ProposalEvent", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "newThreshold", + "type": "uint256" + } + ], + "name": "RelayerThresholdChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" }, { - "inputs": [], - "name": "_chainID", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" }, { - "inputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "name": "_depositCounts", - "outputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" }, { - "inputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - }, - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "name": "_depositRecords", - "outputs": [ - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" }, { - "inputs": [], - "name": "_expiry", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" }, { - "inputs": [], - "name": "_fee", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" }, { - "inputs": [ - { - "internalType": "uint72", - "name": "", - "type": "uint72" - }, - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "_hasVotedOnProposal", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "EXECUTOR_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "RELAYER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "_chainID", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "name": "_depositCounts", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" }, { - "inputs": [ - { - "internalType": "uint72", - "name": "", - "type": "uint72" - }, - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "name": "_proposals", - "outputs": [ - { - "internalType": "bytes32", - "name": "_resourceID", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "_dataHash", - "type": "bytes32" - }, - { - "internalType": "enum Bridge.ProposalStatus", - "name": "_status", - "type": "uint8" - }, - { - "internalType": "uint256", - "name": "_proposedBlock", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "name": "_depositRecords", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "_expiry", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "_fee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint72", + "name": "", + "type": "uint72" }, { - "inputs": [], - "name": "_relayerThreshold", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true + "internalType": "bytes32", + "name": "", + "type": "bytes32" }, { - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "name": "_resourceIDToHandlerAddress", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "_hasVotedOnProposal", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint72", + "name": "", + "type": "uint72" }, { - "inputs": [], - "name": "_totalProposals", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "_proposals", + "outputs": [ + { + "internalType": "bytes32", + "name": "_resourceID", + "type": "bytes32" }, { - "inputs": [], - "name": "_totalRelayers", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true + "internalType": "bytes32", + "name": "_dataHash", + "type": "bytes32" }, { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - } - ], - "name": "getRoleAdmin", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true + "internalType": "enum Bridge.ProposalStatus", + "name": "_status", + "type": "uint8" }, { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "index", - "type": "uint256" - } - ], - "name": "getRoleMember", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true - }, + "internalType": "uint256", + "name": "_proposedBlock", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "_relayerThreshold", + "outputs": [ { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - } - ], - "name": "getRoleMemberCount", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "_resourceIDToHandlerAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "_totalProposals", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" }, { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "grantRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getRoleMember", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleMemberCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" }, { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "hasRole", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" }, { - "inputs": [], - "name": "paused", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" }, { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "renounceRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" }, { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "revokeRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "relayer", + "type": "address" + } + ], + "name": "isRelayer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "renounceAdmin", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "adminPauseTransfers", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "adminUnpauseTransfers", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "newThreshold", + "type": "uint256" + } + ], + "name": "adminChangeRelayerThreshold", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "relayerAddress", + "type": "address" + } + ], + "name": "adminAddRelayer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "relayerAddress", + "type": "address" + } + ], + "name": "adminRemoveRelayer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "executorAddress", + "type": "address" + } + ], + "name": "relayerAddExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "executorAddress", + "type": "address" + } + ], + "name": "relayerRemoveExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "handlerAddress", + "type": "address" }, { - "inputs": [ - { - "internalType": "address", - "name": "relayer", - "type": "address" - } - ], - "name": "isRelayer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true + "internalType": "bytes32", + "name": "resourceID", + "type": "bytes32" }, { - "inputs": [ - { - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "renounceAdmin", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "internalType": "address", + "name": "tokenAddress", + "type": "address" + } + ], + "name": "adminSetResource", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "handlerAddress", + "type": "address" }, { - "inputs": [], - "name": "adminPauseTransfers", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "internalType": "bytes32", + "name": "resourceID", + "type": "bytes32" }, { - "inputs": [], - "name": "adminUnpauseTransfers", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "internalType": "address", + "name": "contractAddress", + "type": "address" }, { - "inputs": [ - { - "internalType": "uint256", - "name": "newThreshold", - "type": "uint256" - } - ], - "name": "adminChangeRelayerThreshold", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "internalType": "bytes4", + "name": "depositFunctionSig", + "type": "bytes4" }, { - "inputs": [ - { - "internalType": "address", - "name": "relayerAddress", - "type": "address" - } - ], - "name": "adminAddRelayer", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "internalType": "bytes4", + "name": "executeFunctionSig", + "type": "bytes4" + } + ], + "name": "adminSetGenericResource", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "handlerAddress", + "type": "address" }, { - "inputs": [ - { - "internalType": "address", - "name": "relayerAddress", - "type": "address" - } - ], - "name": "adminRemoveRelayer", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "internalType": "address", + "name": "tokenAddress", + "type": "address" + } + ], + "name": "adminSetBurnable", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "originChainID", + "type": "uint8" }, { - "inputs": [ - { - "internalType": "address", - "name": "handlerAddress", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "resourceID", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "tokenAddress", - "type": "address" - } - ], - "name": "adminSetResource", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "internalType": "uint64", + "name": "depositNonce", + "type": "uint64" }, { - "inputs": [ - { - "internalType": "address", - "name": "handlerAddress", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "resourceID", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "contractAddress", - "type": "address" - }, - { - "internalType": "bytes4", - "name": "depositFunctionSig", - "type": "bytes4" - }, - { - "internalType": "bytes4", - "name": "executeFunctionSig", - "type": "bytes4" - } - ], - "name": "adminSetGenericResource", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "internalType": "bytes32", + "name": "dataHash", + "type": "bytes32" + } + ], + "name": "getProposal", + "outputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "_resourceID", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "_dataHash", + "type": "bytes32" + }, + { + "internalType": "address[]", + "name": "_yesVotes", + "type": "address[]" + }, + { + "internalType": "address[]", + "name": "_noVotes", + "type": "address[]" + }, + { + "internalType": "enum Bridge.ProposalStatus", + "name": "_status", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "_proposedBlock", + "type": "uint256" + } + ], + "internalType": "struct Bridge.Proposal", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "newFee", + "type": "uint256" + } + ], + "name": "adminChangeFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "newExpiry", + "type": "uint256" + } + ], + "name": "adminExpiry", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "handlerAddress", + "type": "address" }, { - "inputs": [ - { - "internalType": "address", - "name": "handlerAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "tokenAddress", - "type": "address" - } - ], - "name": "adminSetBurnable", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "internalType": "address", + "name": "tokenAddress", + "type": "address" }, { - "inputs": [ - { - "internalType": "address", - "name": "handlerAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "tokenAddress", - "type": "address" - }, - { - "internalType": "uint8", - "name": "srcDecimals", - "type": "uint8" - }, - { - "internalType": "uint8", - "name": "destDecimals", - "type": "uint8" - } - ], - "name": "adminSetDecimals", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "internalType": "address", + "name": "recipient", + "type": "address" }, { - "inputs": [ - { - "internalType": "uint8", - "name": "chainId", - "type": "uint8" - }, - { - "internalType": "uint64", - "name": "depositNonce", - "type": "uint64" - } - ], - "name": "adminSetDepositNonce", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "internalType": "uint256", + "name": "amountOrTokenID", + "type": "uint256" + } + ], + "name": "adminWithdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "destinationChainID", + "type": "uint8" }, { - "inputs": [ - { - "internalType": "uint8", - "name": "originChainID", - "type": "uint8" - }, - { - "internalType": "uint64", - "name": "depositNonce", - "type": "uint64" - }, - { - "internalType": "bytes32", - "name": "dataHash", - "type": "bytes32" - } - ], - "name": "getProposal", - "outputs": [ - { - "components": [ - { - "internalType": "bytes32", - "name": "_resourceID", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "_dataHash", - "type": "bytes32" - }, - { - "internalType": "address[]", - "name": "_yesVotes", - "type": "address[]" - }, - { - "internalType": "address[]", - "name": "_noVotes", - "type": "address[]" - }, - { - "internalType": "enum Bridge.ProposalStatus", - "name": "_status", - "type": "uint8" - }, - { - "internalType": "uint256", - "name": "_proposedBlock", - "type": "uint256" - } - ], - "internalType": "struct Bridge.Proposal", - "name": "", - "type": "tuple" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true + "internalType": "bytes32", + "name": "resourceID", + "type": "bytes32" }, { - "inputs": [ - { - "internalType": "uint256", - "name": "newFee", - "type": "uint256" - } - ], - "name": "adminChangeFee", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "chainID", + "type": "uint8" + }, + { + "internalType": "uint64", + "name": "depositNonce", + "type": "uint64" + }, + { + "internalType": "bytes32", + "name": "resourceID", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "voteProposal", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "chainID", + "type": "uint8" + }, + { + "internalType": "uint64", + "name": "depositNonce", + "type": "uint64" + }, + { + "internalType": "bytes32", + "name": "dataHash", + "type": "bytes32" + } + ], + "name": "cancelProposal", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "chainID", + "type": "uint8" + }, + { + "internalType": "uint64", + "name": "depositNonce", + "type": "uint64" }, { - "inputs": [ + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "bytes32", + "name": "resourceID", + "type": "bytes32" + } + ], + "name": "executeProposal", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address payable[]", + "name": "addrs", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "name": "transferFunds", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "metadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"chainID\",\"type\":\"uint8\"},{\"internalType\":\"address[]\",\"name\":\"initialRelayers\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"initialRelayerThreshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"destinationChainID\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"originChainID\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"enum Bridge.ProposalStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"dataHash\",\"type\":\"bytes32\"}],\"name\":\"ProposalEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newThreshold\",\"type\":\"uint256\"}],\"name\":\"RelayerThresholdChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"EXECUTOR_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RELAYER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_chainID\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"_depositCounts\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"_depositRecords\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_expiry\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_fee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint72\",\"name\":\"\",\"type\":\"uint72\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"_hasVotedOnProposal\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint72\",\"name\":\"\",\"type\":\"uint72\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"_proposals\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"_resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_dataHash\",\"type\":\"bytes32\"},{\"internalType\":\"enum Bridge.ProposalStatus\",\"name\":\"_status\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"_proposedBlock\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_relayerThreshold\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"_resourceIDToHandlerAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_totalProposals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayerAddress\",\"type\":\"address\"}],\"name\":\"adminAddRelayer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"adminChangeFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newThreshold\",\"type\":\"uint256\"}],\"name\":\"adminChangeRelayerThreshold\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newExpiry\",\"type\":\"uint256\"}],\"name\":\"adminExpiry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"adminPauseTransfers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayerAddress\",\"type\":\"address\"}],\"name\":\"adminRemoveRelayer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"handlerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"adminSetBurnable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"handlerAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"depositFunctionSig\",\"type\":\"bytes4\"},{\"internalType\":\"bytes4\",\"name\":\"executeFunctionSig\",\"type\":\"bytes4\"}],\"name\":\"adminSetGenericResource\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"handlerAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"adminSetResource\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"adminUnpauseTransfers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"handlerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOrTokenID\",\"type\":\"uint256\"}],\"name\":\"adminWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"chainID\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"dataHash\",\"type\":\"bytes32\"}],\"name\":\"cancelProposal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"destinationChainID\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"chainID\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"}],\"name\":\"executeProposal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"originChainID\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"dataHash\",\"type\":\"bytes32\"}],\"name\":\"getProposal\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"_resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_dataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"_yesVotes\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"_noVotes\",\"type\":\"address[]\"},{\"internalType\":\"enum Bridge.ProposalStatus\",\"name\":\"_status\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"_proposedBlock\",\"type\":\"uint256\"}],\"internalType\":\"struct Bridge.Proposal\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"}],\"name\":\"isRelayer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"executorAddress\",\"type\":\"address\"}],\"name\":\"relayerAddExecutor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"executorAddress\",\"type\":\"address\"}],\"name\":\"relayerRemoveExecutor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"renounceAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable[]\",\"name\":\"addrs\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"transferFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"chainID\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"voteProposal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"ChainSafe Systems.\",\"events\":{\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this. _Available since v3.1._\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"}},\"kind\":\"dev\",\"methods\":{\"adminAddRelayer(address)\":{\"params\":{\"relayerAddress\":\"Address of relayer to be added.\"}},\"adminChangeFee(uint256)\":{\"params\":{\"newFee\":\"Value {_fee} will be updated to.\"}},\"adminChangeRelayerThreshold(uint256)\":{\"params\":{\"newThreshold\":\"Value {_relayerThreshold} will be changed to.\"}},\"adminExpiry(uint256)\":{\"params\":{\"newExpiry\":\"Value {_expiry} will be updated to.\"}},\"adminRemoveRelayer(address)\":{\"params\":{\"relayerAddress\":\"Address of relayer to be removed.\"}},\"adminSetBurnable(address,address)\":{\"params\":{\"handlerAddress\":\"Address of handler resource will be set for.\",\"tokenAddress\":\"Address of contract to be called when a deposit is made and a deposited is executed.\"}},\"adminSetGenericResource(address,bytes32,address,bytes4,bytes4)\":{\"params\":{\"contractAddress\":\"Address of contract to be called when a deposit is made and a deposited is executed.\",\"handlerAddress\":\"Address of handler resource will be set for.\",\"resourceID\":\"ResourceID to be used when making deposits.\"}},\"adminSetResource(address,bytes32,address)\":{\"params\":{\"handlerAddress\":\"Address of handler resource will be set for.\",\"resourceID\":\"ResourceID to be used when making deposits.\",\"tokenAddress\":\"Address of contract to be called when a deposit is made and a deposited is executed.\"}},\"adminWithdraw(address,address,address,uint256)\":{\"params\":{\"amountOrTokenID\":\"Either the amount of ERC20 tokens or the ERC721 token ID to withdraw.\",\"handlerAddress\":\"Address of handler to withdraw from.\",\"recipient\":\"Address to withdraw tokens to.\",\"tokenAddress\":\"Address of token to withdraw.\"}},\"cancelProposal(uint8,uint64,bytes32)\":{\"params\":{\"chainID\":\"ID of chain deposit originated from.\",\"dataHash\":\"Hash of data originally provided when deposit was made.\",\"depositNonce\":\"ID of deposited generated by origin Bridge contract.\"}},\"constructor\":{\"params\":{\"chainID\":\"ID of chain the Bridge contract exists on.\",\"initialRelayerThreshold\":\"Number of votes needed for a deposit proposal to be considered passed.\",\"initialRelayers\":\"Addresses that should be initially granted the relayer role.\"}},\"deposit(uint8,bytes32,bytes)\":{\"params\":{\"data\":\"Additional data to be passed to specified handler.\",\"destinationChainID\":\"ID of chain deposit will be bridged to.\",\"resourceID\":\"ResourceID used to find address of handler to be used for deposit.\"}},\"executeProposal(uint8,uint64,bytes,bytes32)\":{\"params\":{\"chainID\":\"ID of chain deposit originated from.\",\"data\":\"Data originally provided when deposit was made.\",\"depositNonce\":\"ID of deposited generated by origin Bridge contract.\",\"resourceID\":\"ResourceID to be used when making deposits.\"}},\"getProposal(uint8,uint64,bytes32)\":{\"params\":{\"dataHash\":\"Hash of data to be provided when deposit proposal is executed.\",\"depositNonce\":\"ID of proposal generated by proposal's origin Bridge contract.\",\"originChainID\":\"Chain ID deposit originated from.\"},\"returns\":{\"_0\":\"Proposal which consists of: - _dataHash Hash of data to be provided when deposit proposal is executed. - _yesVotes Number of votes in favor of proposal. - _noVotes Number of votes against proposal. - _status Current status of proposal.\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"isRelayer(address)\":{\"params\":{\"relayer\":\"Address to check.\"}},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"relayerAddExecutor(address)\":{\"params\":{\"executorAddress\":\"Address of executor to be added.\"}},\"relayerRemoveExecutor(address)\":{\"params\":{\"executorAddress\":\"Address of executor to be removed.\"}},\"renounceAdmin(address)\":{\"params\":{\"newAdmin\":\"Address that admin role will be granted to.\"}},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"transferFunds(address[],uint256[])\":{\"params\":{\"addrs\":\"Array of addresses to transfer {amounts} to.\",\"amounts\":\"Array of amonuts to transfer to {addrs}.\"}},\"voteProposal(uint8,uint64,bytes32,bytes)\":{\"params\":{\"chainID\":\"ID of chain deposit originated from.\",\"data\":\"Data provided when deposit was made.\",\"depositNonce\":\"ID of deposited generated by origin Bridge contract.\"}}},\"title\":\"Facilitates deposits, creation and votiing of deposit proposals, and deposit executions.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"adminAddRelayer(address)\":{\"notice\":\"Grants {relayerAddress} the relayer role.Only callable by an address that currently has the admin role.\"},\"adminChangeFee(uint256)\":{\"notice\":\"Changes deposit fee.Only callable by admin.\"},\"adminChangeRelayerThreshold(uint256)\":{\"notice\":\"Modifies the number of votes required for a proposal to be considered passed.Only callable by an address that currently has the admin role.Emits {RelayerThresholdChanged} event.\"},\"adminExpiry(uint256)\":{\"notice\":\"Changes xpiry.Only callable by admin.\"},\"adminPauseTransfers()\":{\"notice\":\"Pauses deposits, proposal creation and voting, and deposit executions.Only callable by an address that currently has the admin role.\"},\"adminRemoveRelayer(address)\":{\"notice\":\"Removes relayer role for {relayerAddress}.Only callable by an address that currently has the admin role.\"},\"adminSetBurnable(address,address)\":{\"notice\":\"Sets a resource as burnable for handler contracts that use the IERCHandler interface.Only callable by an address that currently has the admin role.\"},\"adminSetGenericResource(address,bytes32,address,bytes4,bytes4)\":{\"notice\":\"Sets a new resource for handler contracts that use the IGenericHandler interface, and maps the {handlerAddress} to {resourceID} in {_resourceIDToHandlerAddress}.Only callable by an address that currently has the admin role.\"},\"adminSetResource(address,bytes32,address)\":{\"notice\":\"Sets a new resource for handler contracts that use the IERCHandler interface, and maps the {handlerAddress} to {resourceID} in {_resourceIDToHandlerAddress}.Only callable by an address that currently has the admin role.\"},\"adminUnpauseTransfers()\":{\"notice\":\"Unpauses deposits, proposal creation and voting, and deposit executions.Only callable by an address that currently has the admin role.\"},\"adminWithdraw(address,address,address,uint256)\":{\"notice\":\"Used to manually withdraw funds from ERC safes.\"},\"cancelProposal(uint8,uint64,bytes32)\":{\"notice\":\"Executes a deposit proposal that is considered passed using a specified handler contract.Only callable by relayers when Bridge is not paused.Proposal must be past expiry threshold.Emits {ProposalEvent} event with status {Cancelled}.\"},\"constructor\":{\"notice\":\"Initializes Bridge, creates and grants {msg.sender} the admin role, creates and grants {initialRelayers} the relayer role.\"},\"deposit(uint8,bytes32,bytes)\":{\"notice\":\"Initiates a transfer using a specified handler contract.Only callable when Bridge is not paused.Emits {Deposit} event.\"},\"executeProposal(uint8,uint64,bytes,bytes32)\":{\"notice\":\"Executes a deposit proposal that is considered passed using a specified handler contract.callable by Executor or above when Bridge is not paused.Proposal must have Passed status.Hash of {data} must equal proposal's {dataHash}.Emits {ProposalEvent} event with status {Executed}.\"},\"getProposal(uint8,uint64,bytes32)\":{\"notice\":\"Returns a proposal.\"},\"isRelayer(address)\":{\"notice\":\"Returns true if {relayer} has the relayer role.\"},\"relayerAddExecutor(address)\":{\"notice\":\"Grants {executorAddress} the executor role.Only callable by an address that currently has the relayer role.\"},\"relayerRemoveExecutor(address)\":{\"notice\":\"Removes relayer role for {executorAddress}.Only callable by an address that currently has the relayer role.\"},\"renounceAdmin(address)\":{\"notice\":\"Removes admin role from {msg.sender} and grants it to {newAdmin}.Only callable by an address that currently has the admin role.\"},\"transferFunds(address[],uint256[])\":{\"notice\":\"Transfers eth in the contract to the specified addresses. The parameters addrs and amounts are mapped 1-1. This means that the address at index 0 for addrs will receive the amount (in WEI) from amounts at index 0.\"},\"voteProposal(uint8,uint64,bytes32,bytes)\":{\"notice\":\"When called, {msg.sender} will be marked as voting in favor of proposal.Only callable by relayers when Bridge is not paused.Proposal must not have already been passed or executed.{msg.sender} must not have already voted on proposal.Emits {ProposalEvent} event with status indicating the proposal status.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/Bridge.sol\":\"Bridge\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"project:/contracts/Bridge.sol\":{\"keccak256\":\"0x7d99283c38c82d162135003eccac048a9cc13c31d57e6d01b6f5fc53d4be35d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d0d803c0c4521b090642b41ea5d42a33e7fd4ee2770219898d4dd63af4e17bcc\",\"dweb:/ipfs/Qmdmd8faP4YkTsmYgARKttALXEcT7BvfvxBtjbguRSpUqX\"]},\"project:/contracts/interfaces/IBridge.sol\":{\"keccak256\":\"0x282dd851b65cf0f0ce05b15fcab20b75c7a4b06a2d553022b26997ef15728dab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11f3be6fd7b373c8585c1576f097633257f6d9c8ad7959b5e562d621b80a0576\",\"dweb:/ipfs/QmYoB98cp4kwDvrq5B3Tv4UvqaKviRx954wbZbLNhkPZim\"]},\"project:/contracts/interfaces/IDepositExecute.sol\":{\"keccak256\":\"0x2ca59cc65955ce56c174361335387738a9c04e9953966fc7e7e8a5e24360342b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c70943daf286672ec6d9e629a6e06a54edc9374f486b17955c31a3e53d433761\",\"dweb:/ipfs/QmW5FxsMc93iDMr4wtqD5NRLgUWbaX48SyFViduH5wSiPJ\"]},\"project:/contracts/interfaces/IERCHandler.sol\":{\"keccak256\":\"0xd603e031bccb0731cbc1a579f4c47b59b29a4e817b71c2d523fd9dfdd010b930\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1f35fdd978917075a238d74bc8f04867c74e651eebf9324b6a1f2fa88b9294a7\",\"dweb:/ipfs/QmUXqfKNNyqTEgNDEn4gwhDHTYj4BTHH4Q2Ah1XmbjNyn3\"]},\"project:/contracts/interfaces/IGenericHandler.sol\":{\"keccak256\":\"0x8b56c7cb93a29d31d93e82d893edd547e8f6d141b062d38743cd91a1fcc56f30\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc339468c87abf44a5a137446761cafb0dc07ba76918999682c08c1a3c214e6e\",\"dweb:/ipfs/QmRe5JfQ7k9T8tQcEEPTgVuzGCiF4ExPR5fqnnJNPS46m9\"]},\"project:/contracts/openzeppelin/AccessControl.sol\":{\"keccak256\":\"0xdae96a90cf7ebe1af6d3a6ce965f6c1f4bcf8c2931d6b0fecc54acf29c1ee92b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dfc9858247b6ac358a4850a74189190a311548333041bdd9b3f75feeef409d47\",\"dweb:/ipfs/QmXs3uTH6jAV66r4CuvNwKJxpUiDpcmVjWQugDripnvo6V\"]},\"project:/contracts/openzeppelin/AccessControlEnumerable.sol\":{\"keccak256\":\"0x429abe98d2cb675b8653b983c40902a24b9c0ad6f005bee3601a9339961e8dc3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7dfd1a8023ee1892980a7a01eaa4ec229087bf0bee99bf5155c105969b1217f5\",\"dweb:/ipfs/QmeYccn3MSv5P1bjfCDvjZFgWSwigfqsqQXU94GkTRomg7\"]},\"project:/contracts/openzeppelin/Context.sol\":{\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a367861093b74443b137564d3f3c472f70bcf114739e62059c939f25e315706c\",\"dweb:/ipfs/Qmd7JMpcxD9RuQjK3uM3EzJUgSqdN8vzp8eytEiuwxQJ6h\"]},\"project:/contracts/openzeppelin/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"project:/contracts/openzeppelin/EnumerableSet.sol\":{\"keccak256\":\"0x9f4357008a8f7d8c8bf5d48902e789637538d8c016be5766610901b4bba81514\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20bf19b2b851f58a4c24543de80ae70b3e08621f9230eb335dc75e2d4f43f5df\",\"dweb:/ipfs/QmSYuH1AhvJkPK8hNvoPqtExBcgTB42pPRHgTHkS5c5zYW\"]},\"project:/contracts/openzeppelin/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"project:/contracts/openzeppelin/IAccessControlEnumerable.sol\":{\"keccak256\":\"0xba4459ab871dfa300f5212c6c30178b63898c03533a1ede28436f11546626676\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dcc7b09bfa6e18aab262ca372f4a9b1fc82e294b430706a4e1378cf58e6a276\",\"dweb:/ipfs/QmT8oSAcesdctR15HMLhr2a1HRpXymxdjTfdtfTYJcj2N2\"]},\"project:/contracts/openzeppelin/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"project:/contracts/openzeppelin/Math.sol\":{\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c\",\"dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS\"]},\"project:/contracts/openzeppelin/Pausable.sol\":{\"keccak256\":\"0xedd9e645af02d14f88ed7974006a39c27ca29475a20088c6c89b60f2e9007df9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0af0fc5c16b687431b0b203343f1910f5647c405c0d8f779cd9a710176f6c1a0\",\"dweb:/ipfs/QmcVjS4kmWobHkZbWXAKGJ9DVD7F2ZRb7uKMfSjt9goJs5\"]},\"project:/contracts/openzeppelin/SignedMath.sol\":{\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7\",\"dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6\"]},\"project:/contracts/openzeppelin/Strings.sol\":{\"keccak256\":\"0x0e86814fd3efc59443d122909fa36b268e2b7364f1e3103fa74931858ee636b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://38f060c0c03021efa043f6f1cca18ffbaa542994865ee889d930498d86b3445b\",\"dweb:/ipfs/QmXFbcG4WEt5bDng7EpouKXjyakkXRjwueM7sNjot1o6Gr\"]}},\"version\":1}", + "bytecode": "0x60806040523480156200001157600080fd5b506040516200693b3803806200693b833981810160405281019062000037919062000ada565b60008060006101000a81548160ff02191690831515021790555084600360006101000a81548160ff021916908360ff160217905550826004819055508160068190555080600781905550620000966000801b33620001d360201b60201c565b620000cb7fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc46000801b620001e960201b60201c565b620000fd7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6333620001d360201b60201c565b6200014f7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e637fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc4620001e960201b60201c565b60008451905060005b81811015620001c657620001b07fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc48783815181106200019c576200019b62000b81565b5b60200260200101516200024d60201b60201c565b8080620001bd9062000bdf565b91505062000158565b5050505050505062000f23565b620001e582826200028660201b60201c565b5050565b6000620001fc83620002c460201b60201c565b90508160016000858152602001908152602001600020600101819055508181847fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff60405160405180910390a4505050565b6200025e82620002c460201b60201c565b6200026f81620002e460201b60201c565b6200028183836200028660201b60201c565b505050565b6200029882826200030860201b60201c565b620002bf8160026000858152602001908152602001600020620003f960201b90919060201c565b505050565b600060016000838152602001908152602001600020600101549050919050565b6200030581620002f96200043160201b60201c565b6200043960201b60201c565b50565b6200031a8282620004db60201b60201c565b620003f557600180600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200039a6200043160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600062000429836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6200054660201b60201c565b905092915050565b600033905090565b6200044b8282620004db60201b60201c565b620004d7576200046181620005c060201b60201c565b620004778360001c6020620005f560201b60201c565b6040516020016200048a92919062000d45565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004ce919062000dd9565b60405180910390fd5b5050565b60006001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60006200055a83836200085060201b60201c565b620005b5578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050620005ba565b600090505b92915050565b6060620005ee8273ffffffffffffffffffffffffffffffffffffffff16601460ff16620005f560201b60201c565b9050919050565b6060600060028360026200060a919062000dfd565b62000616919062000e48565b67ffffffffffffffff811115620006325762000631620008db565b5b6040519080825280601f01601f191660200182016040528015620006655781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110620006a0576200069f62000b81565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811062000707576200070662000b81565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000600184600262000749919062000dfd565b62000755919062000e48565b90505b6001811115620007ff577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106200079b576200079a62000b81565b5b1a60f81b828281518110620007b557620007b462000b81565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080620007f79062000e83565b905062000758565b506000841462000846576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200083d9062000f01565b60405180910390fd5b8091505092915050565b600080836001016000848152602001908152602001600020541415905092915050565b6000604051905090565b600080fd5b600080fd5b600060ff82169050919050565b6200089f8162000887565b8114620008ab57600080fd5b50565b600081519050620008bf8162000894565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200091582620008ca565b810181811067ffffffffffffffff82111715620009375762000936620008db565b5b80604052505050565b60006200094c62000873565b90506200095a82826200090a565b919050565b600067ffffffffffffffff8211156200097d576200097c620008db565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620009c08262000993565b9050919050565b620009d281620009b3565b8114620009de57600080fd5b50565b600081519050620009f281620009c7565b92915050565b600062000a0f62000a09846200095f565b62000940565b9050808382526020820190506020840283018581111562000a355762000a346200098e565b5b835b8181101562000a62578062000a4d8882620009e1565b84526020840193505060208101905062000a37565b5050509392505050565b600082601f83011262000a845762000a83620008c5565b5b815162000a96848260208601620009f8565b91505092915050565b6000819050919050565b62000ab48162000a9f565b811462000ac057600080fd5b50565b60008151905062000ad48162000aa9565b92915050565b600080600080600060a0868803121562000af95762000af86200087d565b5b600062000b0988828901620008ae565b955050602086015167ffffffffffffffff81111562000b2d5762000b2c62000882565b5b62000b3b8882890162000a6c565b945050604062000b4e8882890162000ac3565b935050606062000b618882890162000ac3565b925050608062000b748882890162000ac3565b9150509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000bec8262000a9f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362000c215762000c2062000bb0565b5b600182019050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b600062000c6f60178362000c2c565b915062000c7c8262000c37565b601782019050919050565b600081519050919050565b60005b8381101562000cb257808201518184015260208101905062000c95565b60008484015250505050565b600062000ccb8262000c87565b62000cd7818562000c2c565b935062000ce981856020860162000c92565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b600062000d2d60118362000c2c565b915062000d3a8262000cf5565b601182019050919050565b600062000d528262000c60565b915062000d60828562000cbe565b915062000d6d8262000d1e565b915062000d7b828462000cbe565b91508190509392505050565b600082825260208201905092915050565b600062000da58262000c87565b62000db1818562000d87565b935062000dc381856020860162000c92565b62000dce81620008ca565b840191505092915050565b6000602082019050818103600083015262000df5818462000d98565b905092915050565b600062000e0a8262000a9f565b915062000e178362000a9f565b925082820262000e278162000a9f565b9150828204841483151762000e415762000e4062000bb0565b5b5092915050565b600062000e558262000a9f565b915062000e628362000a9f565b925082820190508082111562000e7d5762000e7c62000bb0565b5b92915050565b600062000e908262000a9f565b91506000820362000ea65762000ea562000bb0565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b600062000ee960208362000d87565b915062000ef68262000eb1565b602082019050919050565b6000602082019050818103600083015262000f1c8162000eda565b9050919050565b615a088062000f336000396000f3fe60806040526004361061025c5760003560e01c806384db809f11610144578063beab7131116100b6578063cb10f2151161007a578063cb10f21514610932578063cdb0f73a1461095b578063d547741f14610984578063d7a9cd79146109ad578063e8437ee7146109d8578063ffaac0eb14610a015761025c565b8063beab71311461084b578063c0331b3e14610876578063c5b37c221461089f578063c5ec8970146108ca578063ca15c873146108f55761025c565b8063926d7d7f11610108578063926d7d7f1461073b5780639d5773e0146107665780639d82dd6314610791578063a217fddf146107ba578063a9cf69fa146107e5578063ba5c523c146108225761025c565b806384db809f146106325780638c0c26311461066f5780639010d07c1461069857806391c404ac146106d557806391d14854146106fe5761025c565b80634454b20d116101dd578063541d5548116101a1578063541d5548146105245780635c975abb146105615780635e1fab0f1461058c578063780cf004146105b55780637febe63f146105de57806380ae1c281461061b5761025c565b80634454b20d1461042c5780634603ae38146104555780634b0b919d1461047e5780634e056005146104bb57806350598719146104e45761025c565b8063248a9ca311610224578063248a9ca3146103375780632f2ff15d1461037457806336568abe1461039d5780633ee7094a146103c65780633f47585e146104035761025c565b806301ffc9a71461026157806305e2ca171461029e57806307bd0265146102ba5780631149af51146102e557806317f03ce51461030e575b600080fd5b34801561026d57600080fd5b5061028860048036038101906102839190613892565b610a18565b60405161029591906138da565b60405180910390f35b6102b860048036038101906102b391906139c9565b610a92565b005b3480156102c657600080fd5b506102cf610cf4565b6040516102dc9190613a4c565b60405180910390f35b3480156102f157600080fd5b5061030c60048036038101906103079190613ac5565b610d18565b005b34801561031a57600080fd5b5061033560048036038101906103309190613b32565b610e17565b005b34801561034357600080fd5b5061035e60048036038101906103599190613b85565b611056565b60405161036b9190613a4c565b60405180910390f35b34801561038057600080fd5b5061039b60048036038101906103969190613bb2565b611076565b005b3480156103a957600080fd5b506103c460048036038101906103bf9190613bb2565b611097565b005b3480156103d257600080fd5b506103ed60048036038101906103e89190613bf2565b61111a565b6040516103fa9190613cc2565b60405180910390f35b34801561040f57600080fd5b5061042a60048036038101906104259190613d1a565b6111c7565b005b34801561043857600080fd5b50610453600480360381019061044e9190613d47565b61121d565b005b34801561046157600080fd5b5061047c60048036038101906104779190613e7b565b611537565b005b34801561048a57600080fd5b506104a560048036038101906104a09190613efc565b611680565b6040516104b29190613f38565b60405180910390f35b3480156104c757600080fd5b506104e260048036038101906104dd9190613d1a565b6116a7565b005b3480156104f057600080fd5b5061050b60048036038101906105069190613f94565b61172a565b60405161051b949392919061405a565b60405180910390f35b34801561053057600080fd5b5061054b60048036038101906105469190613ac5565b611774565b60405161055891906138da565b60405180910390f35b34801561056d57600080fd5b506105766117a7565b60405161058391906138da565b60405180910390f35b34801561059857600080fd5b506105b360048036038101906105ae9190613ac5565b6117bd565b005b3480156105c157600080fd5b506105dc60048036038101906105d7919061409f565b611826565b005b3480156105ea57600080fd5b5061060560048036038101906106009190614106565b6118ed565b60405161061291906138da565b60405180910390f35b34801561062757600080fd5b50610630611929565b005b34801561063e57600080fd5b5061065960048036038101906106549190613b85565b61197f565b6040516106669190614168565b60405180910390f35b34801561067b57600080fd5b5061069660048036038101906106919190614183565b6119b2565b005b3480156106a457600080fd5b506106bf60048036038101906106ba91906141c3565b611a73565b6040516106cc9190614168565b60405180910390f35b3480156106e157600080fd5b506106fc60048036038101906106f79190613d1a565b611aa2565b005b34801561070a57600080fd5b5061072560048036038101906107209190613bb2565b611b3c565b60405161073291906138da565b60405180910390f35b34801561074757600080fd5b50610750611ba7565b60405161075d9190613a4c565b60405180910390f35b34801561077257600080fd5b5061077b611bcb565b6040516107889190614203565b60405180910390f35b34801561079d57600080fd5b506107b860048036038101906107b39190613ac5565b611bd1565b005b3480156107c657600080fd5b506107cf611cb3565b6040516107dc9190613a4c565b60405180910390f35b3480156107f157600080fd5b5061080c60048036038101906108079190613b32565b611cba565b6040516108199190614399565b60405180910390f35b34801561082e57600080fd5b5061084960048036038101906108449190613ac5565b611ea9565b005b34801561085757600080fd5b50610860611fa9565b60405161086d91906143ca565b60405180910390f35b34801561088257600080fd5b5061089d600480360381019061089891906143e5565b611fbc565b005b3480156108ab57600080fd5b506108b46128dc565b6040516108c19190614203565b60405180910390f35b3480156108d657600080fd5b506108df6128e2565b6040516108ec9190614203565b60405180910390f35b34801561090157600080fd5b5061091c60048036038101906109179190613b85565b6128e8565b6040516109299190614203565b60405180910390f35b34801561093e57600080fd5b506109596004803603810190610954919061446d565b61290c565b005b34801561096757600080fd5b50610982600480360381019061097d9190613ac5565b612a22565b005b34801561099057600080fd5b506109ab60048036038101906109a69190613bb2565b612b05565b005b3480156109b957600080fd5b506109c2612b26565b6040516109cf9190614203565b60405180910390f35b3480156109e457600080fd5b506109ff60048036038101906109fa91906144c0565b612b2c565b005b348015610a0d57600080fd5b50610a16612c48565b005b60007f5a05180f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610a8b5750610a8a82612c9e565b5b9050919050565b610a9a612d18565b6006543414610ade576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad590614598565b60405180910390fd5b60006009600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7c90614604565b60405180910390fd5b6000600860008760ff1660ff168152602001908152602001600020600081819054906101000a900467ffffffffffffffff16610bc090614653565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905590508383600a60008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008960ff1660ff1681526020019081526020016000209182610c349291906148c9565b5060008290508073ffffffffffffffffffffffffffffffffffffffff166338995da9878985338a8a6040518763ffffffff1660e01b8152600401610c7d969594939291906149d5565b600060405180830381600087803b158015610c9757600080fd5b505af1158015610cab573d6000803e3d6000fd5b505050508167ffffffffffffffff16868860ff167fdbb69440df8433824a026ef190652f29929eb64b4d1d5d2a69be8afe3e6eaed860405160405180910390a450505050505050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b610d427fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc433611b3c565b610d81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7890614a7d565b60405180910390fd5b610dab7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6382611b3c565b610dea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de190614ae9565b60405180910390fd5b610e147fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6382612b05565b50565b610e246000801b33611b3c565b80610e555750610e547fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc433611b3c565b5b610e94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8b90614b55565b60405180910390fd5b60008360ff1660088467ffffffffffffffff1668ffffffffffffffffff16901b1790506000600b60008368ffffffffffffffffff1668ffffffffffffffffff16815260200190815260200160002060008481526020019081526020016000209050600480811115610f0857610f07613fd4565b5b8160040160009054906101000a900460ff166004811115610f2c57610f2b613fd4565b5b03610f6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6390614bc1565b60405180910390fd5b600754816005015443610f7f9190614be1565b11610fbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb690614c61565b60405180910390fd5b60048160040160006101000a81548160ff02191690836004811115610fe757610fe6613fd4565b5b0217905550600480811115610fff57610ffe613fd4565b5b8467ffffffffffffffff168660ff167f803c5a12f6bde629cea32e63d4b92d1b560816a6fb72e939d3c89e1cab65041784600001548560010154604051611047929190614c81565b60405180910390a45050505050565b600060016000838152602001908152602001600020600101549050919050565b61107f82611056565b61108881612d62565b6110928383612d76565b505050565b61109f612daa565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461110c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110390614d1c565b60405180910390fd5b6111168282612db2565b5050565b600a602052816000526040600020602052806000526040600020600091509150508054611146906146ec565b80601f0160208091040260200160405190810160405280929190818152602001828054611172906146ec565b80156111bf5780601f10611194576101008083540402835291602001916111bf565b820191906000526020600020905b8154815290600101906020018083116111a257829003601f168201915b505050505081565b6111d46000801b33611b3c565b611213576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120a90614d88565b60405180910390fd5b8060078190555050565b6112477fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc433611b3c565b8061127857506112777fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6333611b3c565b5b8061128c575061128b6000801b33611b3c565b5b6112cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c290614e1a565b60405180910390fd5b6112d3612d18565b60006009600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008660ff1660088767ffffffffffffffff1668ffffffffffffffffff16901b179050600082868660405160200161134593929190614eb2565b6040516020818303038152906040528051906020012090506000600b60008468ffffffffffffffffff1668ffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000209050848160000154146113e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d890614f28565b60405180910390fd5b600260048111156113f5576113f4613fd4565b5b8160040160009054906101000a900460ff16600481111561141957611418613fd4565b5b14611459576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145090614fba565b60405180910390fd5b611464878787612de6565b6114a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149a90615026565b60405180910390fd5b60038160040160006101000a81548160ff021916908360048111156114cb576114ca613fd4565b5b0217905550600360048111156114e4576114e3613fd4565b5b8867ffffffffffffffff168a60ff167f803c5a12f6bde629cea32e63d4b92d1b560816a6fb72e939d3c89e1cab6504178886604051611524929190614c81565b60405180910390a4505050505050505050565b6115446000801b33611b3c565b611583576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157a90614d88565b60405180910390fd5b8181905084849050146115cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c2906150b8565b60405180910390fd5b600084849050905060005b81811015611678578585828181106115f1576115f06150d8565b5b90506020020160208101906116069190615145565b73ffffffffffffffffffffffffffffffffffffffff166108fc858584818110611632576116316150d8565b5b905060200201359081150290604051600060405180830381858888f19350505050158015611664573d6000803e3d6000fd5b50808061167090615172565b9150506115d6565b505050505050565b60086020528060005260406000206000915054906101000a900467ffffffffffffffff1681565b6116b46000801b33611b3c565b6116f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ea90614d88565b60405180910390fd5b80600481905550807fa20d6b84cd798a24038be305eff8a45ca82ef54a2aa2082005d8e14c0a4746c860405160405180910390a250565b600b602052816000526040600020602052806000526040600020600091509150508060000154908060010154908060040160009054906101000a900460ff16908060050154905084565b60006117a07fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc483611b3c565b9050919050565b60008060009054906101000a900460ff16905090565b6117ca6000801b33611b3c565b611809576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180090614d88565b60405180910390fd5b6118166000801b82611076565b6118236000801b33611097565b50565b6118336000801b33611b3c565b611872576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186990614d88565b60405180910390fd5b60008490508073ffffffffffffffffffffffffffffffffffffffff1663d9caed128585856040518463ffffffff1660e01b81526004016118b4939291906151ba565b600060405180830381600087803b1580156118ce57600080fd5b505af11580156118e2573d6000803e3d6000fd5b505050505050505050565b600c602052826000526040600020602052816000526040600020602052806000526040600020600092509250509054906101000a900460ff1681565b6119366000801b33611b3c565b611975576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196c90614d88565b60405180910390fd5b61197d612ea2565b565b60096020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6119bf6000801b33611b3c565b6119fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f590614d88565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff166307b7ed99836040518263ffffffff1660e01b8152600401611a3c9190614168565b600060405180830381600087803b158015611a5657600080fd5b505af1158015611a6a573d6000803e3d6000fd5b50505050505050565b6000611a9a8260026000868152602001908152602001600020612f0490919063ffffffff16565b905092915050565b611aaf6000801b33611b3c565b611aee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae590614d88565b60405180910390fd5b8060065403611b32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b299061523d565b60405180910390fd5b8060068190555050565b60006001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b7fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc481565b60055481565b611bde6000801b33611b3c565b611c1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1490614d88565b60405180910390fd5b611c477fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc482611b3c565b611c86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7d906152a9565b60405180910390fd5b611cb07fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc482612b05565b50565b6000801b81565b611cc261373b565b60008460ff1660088567ffffffffffffffff1668ffffffffffffffffff16901b179050600b60008268ffffffffffffffffff1668ffffffffffffffffff16815260200190815260200160002060008481526020019081526020016000206040518060c0016040529081600082015481526020016001820154815260200160028201805480602002602001604051908101604052809291908181526020018280548015611dc357602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611d79575b5050505050815260200160038201805480602002602001604051908101604052809291908181526020018280548015611e5157602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611e07575b505050505081526020016004820160009054906101000a900460ff166004811115611e7f57611e7e613fd4565b5b6004811115611e9157611e90613fd4565b5b81526020016005820154815250509150509392505050565b611ed37fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc433611b3c565b611f12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0990614a7d565b60405180910390fd5b611f3c7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6382611b3c565b15611f7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7390615315565b60405180910390fd5b611fa67fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6382611076565b50565b600360009054906101000a900460ff1681565b611fe67fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc433611b3c565b612025576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201c90614a7d565b60405180910390fd5b61202d612d18565b60006009600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600081848460405160200161207c93929190614eb2565b60405160208183030381529060405280519060200120905060008760ff1660088867ffffffffffffffff1668ffffffffffffffffff16901b1790506000600b60008368ffffffffffffffffff1668ffffffffffffffffff16815260200190815260200160002060008481526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff166009600089815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612197576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218e90615381565b60405180910390fd5b60018160040160009054906101000a900460ff1660048111156121bd576121bc613fd4565b5b11156121fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f590615413565b60405180910390fd5b600c60008368ffffffffffffffffff1668ffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156122c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ba9061547f565b60405180910390fd5b60008160040160009054906101000a900460ff1660048111156122e9576122e8613fd4565b5b0361255c576005600081546122fd90615172565b919050819055506040518060c00160405280888152602001848152602001600167ffffffffffffffff8111156123365761233561468e565b5b6040519080825280602002602001820160405280156123645781602001602082028036833780820191505090505b508152602001600067ffffffffffffffff8111156123855761238461468e565b5b6040519080825280602002602001820160405280156123b35781602001602082028036833780820191505090505b508152602001600160048111156123cd576123cc613fd4565b5b815260200143815250600b60008468ffffffffffffffffff1668ffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060008201518160000155602082015181600101556040820151816002019080519060200190612440929190613789565b50606082015181600301908051906020019061245d929190613789565b5060808201518160040160006101000a81548160ff0219169083600481111561248957612488613fd4565b5b021790555060a0820151816005015590505033816002016000815481106124b3576124b26150d8565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600481111561250f5761250e613fd4565b5b8867ffffffffffffffff168a60ff167f803c5a12f6bde629cea32e63d4b92d1b560816a6fb72e939d3c89e1cab6504178a8760405161254f929190614c81565b60405180910390a46126af565b60075481600501544361256f9190614be1565b11156126025760048160040160006101000a81548160ff0219169083600481111561259d5761259c613fd4565b5b02179055506004808111156125b5576125b4613fd4565b5b8867ffffffffffffffff168a60ff167f803c5a12f6bde629cea32e63d4b92d1b560816a6fb72e939d3c89e1cab6504178a876040516125f5929190614c81565b60405180910390a46126ae565b86816000015414612648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263f90615511565b60405180910390fd5b80600201339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b6004808111156126c2576126c1613fd4565b5b8160040160009054906101000a900460ff1660048111156126e6576126e5613fd4565b5b146128d0576001600c60008468ffffffffffffffffff1668ffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016004541115806127965750600454816002018054905010155b156128cf576127a6868689612de6565b1561283d5760038160040160006101000a81548160ff021916908360048111156127d3576127d2613fd4565b5b0217905550600360048111156127ec576127eb613fd4565b5b8867ffffffffffffffff168a60ff167f803c5a12f6bde629cea32e63d4b92d1b560816a6fb72e939d3c89e1cab6504178a8760405161282c929190614c81565b60405180910390a4505050506128d5565b60028160040160006101000a81548160ff0219169083600481111561286557612864613fd4565b5b02179055506002600481111561287e5761287d613fd4565b5b8867ffffffffffffffff168a60ff167f803c5a12f6bde629cea32e63d4b92d1b560816a6fb72e939d3c89e1cab6504178a876040516128be929190614c81565b60405180910390a4505050506128d5565b5b505050505b5050505050565b60065481565b60075481565b600061290560026000848152602001908152602001600020612f1e565b9050919050565b6129196000801b33611b3c565b612958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294f90614d88565b60405180910390fd5b826009600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008390508073ffffffffffffffffffffffffffffffffffffffff1663b8fa373684846040518363ffffffff1660e01b81526004016129ea929190615531565b600060405180830381600087803b158015612a0457600080fd5b505af1158015612a18573d6000803e3d6000fd5b5050505050505050565b612a2f6000801b33611b3c565b612a6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6590614d88565b60405180910390fd5b612a987fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc482611b3c565b15612ad8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612acf906155a6565b60405180910390fd5b612b027fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc482611076565b50565b612b0e82611056565b612b1781612d62565b612b218383612db2565b505050565b60045481565b612b396000801b33611b3c565b612b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6f90614d88565b60405180910390fd5b846009600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008590508073ffffffffffffffffffffffffffffffffffffffff1663bba8185a868686866040518563ffffffff1660e01b8152600401612c0e94939291906155d5565b600060405180830381600087803b158015612c2857600080fd5b505af1158015612c3c573d6000803e3d6000fd5b50505050505050505050565b612c556000801b33611b3c565b612c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8b90614d88565b60405180910390fd5b612c9c612f33565b565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612d115750612d1082612f95565b5b9050919050565b612d206117a7565b15612d60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5790615666565b60405180910390fd5b565b612d7381612d6e612daa565b612fff565b50565b612d808282613084565b612da5816002600085815260200190815260200160002061316490919063ffffffff16565b505050565b600033905090565b612dbc8282613194565b612de1816002600085815260200190815260200160002061327690919063ffffffff16565b505050565b6000806009600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663e248cff28487876040518463ffffffff1660e01b8152600401612e5c93929190615686565b600060405180830381600087803b158015612e7657600080fd5b505af1925050508015612e87575060015b612e95576000915050612e9b565b60019150505b9392505050565b612eaa612d18565b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612eed612daa565b604051612efa9190614168565b60405180910390a1565b6000612f1383600001836132a6565b60001c905092915050565b6000612f2c826000016132d1565b9050919050565b612f3b6132e2565b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612f7e612daa565b604051612f8b9190614168565b60405180910390a1565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6130098282611b3c565b613080576130168161332b565b6130248360001c6020613358565b604051602001613035929190615797565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613077919061580a565b60405180910390fd5b5050565b61308e8282611b3c565b61316057600180600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613105612daa565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600061318c836000018373ffffffffffffffffffffffffffffffffffffffff1660001b613594565b905092915050565b61319e8282611b3c565b156132725760006001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613217612daa565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b600061329e836000018373ffffffffffffffffffffffffffffffffffffffff1660001b613604565b905092915050565b60008260000182815481106132be576132bd6150d8565b5b9060005260206000200154905092915050565b600081600001805490509050919050565b6132ea6117a7565b613329576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161332090615878565b60405180910390fd5b565b60606133518273ffffffffffffffffffffffffffffffffffffffff16601460ff16613358565b9050919050565b60606000600283600261336b9190615898565b61337591906158da565b67ffffffffffffffff81111561338e5761338d61468e565b5b6040519080825280601f01601f1916602001820160405280156133c05781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106133f8576133f76150d8565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061345c5761345b6150d8565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000600184600261349c9190615898565b6134a691906158da565b90505b6001811115613546577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106134e8576134e76150d8565b5b1a60f81b8282815181106134ff576134fe6150d8565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061353f9061590e565b90506134a9565b506000841461358a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161358190615983565b60405180910390fd5b8091505092915050565b60006135a08383613718565b6135f95782600001829080600181540180825580915050600190039060005260206000200160009091909190915055826000018054905083600101600084815260200190815260200160002081905550600190506135fe565b600090505b92915050565b6000808360010160008481526020019081526020016000205490506000811461370c5760006001826136369190614be1565b905060006001866000018054905061364e9190614be1565b90508181146136bd57600086600001828154811061366f5761366e6150d8565b5b9060005260206000200154905080876000018481548110613693576136926150d8565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b856000018054806136d1576136d06159a3565b5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050613712565b60009150505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b6040518060c00160405280600080191681526020016000801916815260200160608152602001606081526020016000600481111561377c5761377b613fd4565b5b8152602001600081525090565b828054828255906000526020600020908101928215613802579160200282015b828111156138015782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906137a9565b5b50905061380f9190613813565b5090565b5b8082111561382c576000816000905550600101613814565b5090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61386f8161383a565b811461387a57600080fd5b50565b60008135905061388c81613866565b92915050565b6000602082840312156138a8576138a7613830565b5b60006138b68482850161387d565b91505092915050565b60008115159050919050565b6138d4816138bf565b82525050565b60006020820190506138ef60008301846138cb565b92915050565b600060ff82169050919050565b61390b816138f5565b811461391657600080fd5b50565b60008135905061392881613902565b92915050565b6000819050919050565b6139418161392e565b811461394c57600080fd5b50565b60008135905061395e81613938565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261398957613988613964565b5b8235905067ffffffffffffffff8111156139a6576139a5613969565b5b6020830191508360018202830111156139c2576139c161396e565b5b9250929050565b600080600080606085870312156139e3576139e2613830565b5b60006139f187828801613919565b9450506020613a028782880161394f565b935050604085013567ffffffffffffffff811115613a2357613a22613835565b5b613a2f87828801613973565b925092505092959194509250565b613a468161392e565b82525050565b6000602082019050613a616000830184613a3d565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613a9282613a67565b9050919050565b613aa281613a87565b8114613aad57600080fd5b50565b600081359050613abf81613a99565b92915050565b600060208284031215613adb57613ada613830565b5b6000613ae984828501613ab0565b91505092915050565b600067ffffffffffffffff82169050919050565b613b0f81613af2565b8114613b1a57600080fd5b50565b600081359050613b2c81613b06565b92915050565b600080600060608486031215613b4b57613b4a613830565b5b6000613b5986828701613919565b9350506020613b6a86828701613b1d565b9250506040613b7b8682870161394f565b9150509250925092565b600060208284031215613b9b57613b9a613830565b5b6000613ba98482850161394f565b91505092915050565b60008060408385031215613bc957613bc8613830565b5b6000613bd78582860161394f565b9250506020613be885828601613ab0565b9150509250929050565b60008060408385031215613c0957613c08613830565b5b6000613c1785828601613b1d565b9250506020613c2885828601613919565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613c6c578082015181840152602081019050613c51565b60008484015250505050565b6000601f19601f8301169050919050565b6000613c9482613c32565b613c9e8185613c3d565b9350613cae818560208601613c4e565b613cb781613c78565b840191505092915050565b60006020820190508181036000830152613cdc8184613c89565b905092915050565b6000819050919050565b613cf781613ce4565b8114613d0257600080fd5b50565b600081359050613d1481613cee565b92915050565b600060208284031215613d3057613d2f613830565b5b6000613d3e84828501613d05565b91505092915050565b600080600080600060808688031215613d6357613d62613830565b5b6000613d7188828901613919565b9550506020613d8288828901613b1d565b945050604086013567ffffffffffffffff811115613da357613da2613835565b5b613daf88828901613973565b93509350506060613dc28882890161394f565b9150509295509295909350565b60008083601f840112613de557613de4613964565b5b8235905067ffffffffffffffff811115613e0257613e01613969565b5b602083019150836020820283011115613e1e57613e1d61396e565b5b9250929050565b60008083601f840112613e3b57613e3a613964565b5b8235905067ffffffffffffffff811115613e5857613e57613969565b5b602083019150836020820283011115613e7457613e7361396e565b5b9250929050565b60008060008060408587031215613e9557613e94613830565b5b600085013567ffffffffffffffff811115613eb357613eb2613835565b5b613ebf87828801613dcf565b9450945050602085013567ffffffffffffffff811115613ee257613ee1613835565b5b613eee87828801613e25565b925092505092959194509250565b600060208284031215613f1257613f11613830565b5b6000613f2084828501613919565b91505092915050565b613f3281613af2565b82525050565b6000602082019050613f4d6000830184613f29565b92915050565b600068ffffffffffffffffff82169050919050565b613f7181613f53565b8114613f7c57600080fd5b50565b600081359050613f8e81613f68565b92915050565b60008060408385031215613fab57613faa613830565b5b6000613fb985828601613f7f565b9250506020613fca8582860161394f565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6005811061401457614013613fd4565b5b50565b600081905061402582614003565b919050565b600061403582614017565b9050919050565b6140458161402a565b82525050565b61405481613ce4565b82525050565b600060808201905061406f6000830187613a3d565b61407c6020830186613a3d565b614089604083018561403c565b614096606083018461404b565b95945050505050565b600080600080608085870312156140b9576140b8613830565b5b60006140c787828801613ab0565b94505060206140d887828801613ab0565b93505060406140e987828801613ab0565b92505060606140fa87828801613d05565b91505092959194509250565b60008060006060848603121561411f5761411e613830565b5b600061412d86828701613f7f565b935050602061413e8682870161394f565b925050604061414f86828701613ab0565b9150509250925092565b61416281613a87565b82525050565b600060208201905061417d6000830184614159565b92915050565b6000806040838503121561419a57614199613830565b5b60006141a885828601613ab0565b92505060206141b985828601613ab0565b9150509250929050565b600080604083850312156141da576141d9613830565b5b60006141e88582860161394f565b92505060206141f985828601613d05565b9150509250929050565b6000602082019050614218600083018461404b565b92915050565b6142278161392e565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61426281613a87565b82525050565b60006142748383614259565b60208301905092915050565b6000602082019050919050565b60006142988261422d565b6142a28185614238565b93506142ad83614249565b8060005b838110156142de5781516142c58882614268565b97506142d083614280565b9250506001810190506142b1565b5085935050505092915050565b6142f48161402a565b82525050565b61430381613ce4565b82525050565b600060c083016000830151614321600086018261421e565b506020830151614334602086018261421e565b506040830151848203604086015261434c828261428d565b91505060608301518482036060860152614366828261428d565b915050608083015161437b60808601826142eb565b5060a083015161438e60a08601826142fa565b508091505092915050565b600060208201905081810360008301526143b38184614309565b905092915050565b6143c4816138f5565b82525050565b60006020820190506143df60008301846143bb565b92915050565b60008060008060006080868803121561440157614400613830565b5b600061440f88828901613919565b955050602061442088828901613b1d565b94505060406144318882890161394f565b935050606086013567ffffffffffffffff81111561445257614451613835565b5b61445e88828901613973565b92509250509295509295909350565b60008060006060848603121561448657614485613830565b5b600061449486828701613ab0565b93505060206144a58682870161394f565b92505060406144b686828701613ab0565b9150509250925092565b600080600080600060a086880312156144dc576144db613830565b5b60006144ea88828901613ab0565b95505060206144fb8882890161394f565b945050604061450c88828901613ab0565b935050606061451d8882890161387d565b925050608061452e8882890161387d565b9150509295509295909350565b600082825260208201905092915050565b7f496e636f72726563742066656520737570706c69656400000000000000000000600082015250565b600061458260168361453b565b915061458d8261454c565b602082019050919050565b600060208201905081810360008301526145b181614575565b9050919050565b7f7265736f757263654944206e6f74206d617070656420746f2068616e646c6572600082015250565b60006145ee60208361453b565b91506145f9826145b8565b602082019050919050565b6000602082019050818103600083015261461d816145e1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061465e82613af2565b915067ffffffffffffffff820361467857614677614624565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061470457607f821691505b602082108103614717576147166146bd565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261477f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82614742565b6147898683614742565b95508019841693508086168417925050509392505050565b6000819050919050565b60006147c66147c16147bc84613ce4565b6147a1565b613ce4565b9050919050565b6000819050919050565b6147e0836147ab565b6147f46147ec826147cd565b84845461474f565b825550505050565b600090565b6148096147fc565b6148148184846147d7565b505050565b5b818110156148385761482d600082614801565b60018101905061481a565b5050565b601f82111561487d5761484e8161471d565b61485784614732565b81016020851015614866578190505b61487a61487285614732565b830182614819565b50505b505050565b600082821c905092915050565b60006148a060001984600802614882565b1980831691505092915050565b60006148b9838361488f565b9150826002028217905092915050565b6148d38383614683565b67ffffffffffffffff8111156148ec576148eb61468e565b5b6148f682546146ec565b61490182828561483c565b6000601f831160018114614930576000841561491e578287013590505b61492885826148ad565b865550614990565b601f19841661493e8661471d565b60005b8281101561496657848901358255600182019150602085019450602081019050614941565b86831015614983578489013561497f601f89168261488f565b8355505b6001600288020188555050505b50505050505050565b82818337600083830152505050565b60006149b48385613c3d565b93506149c1838584614999565b6149ca83613c78565b840190509392505050565b600060a0820190506149ea6000830189613a3d565b6149f760208301886143bb565b614a046040830187613f29565b614a116060830186614159565b8181036080830152614a248184866149a8565b9050979650505050505050565b7f73656e64657220646f65736e277420686176652072656c6179657220726f6c65600082015250565b6000614a6760208361453b565b9150614a7282614a31565b602082019050919050565b60006020820190508181036000830152614a9681614a5a565b9050919050565b7f6164647220646f65736e27742068617665206578656375746f7220726f6c6521600082015250565b6000614ad360208361453b565b9150614ade82614a9d565b602082019050919050565b60006020820190508181036000830152614b0281614ac6565b9050919050565b7f73656e646572206973206e6f742072656c61796572206f722061646d696e0000600082015250565b6000614b3f601e8361453b565b9150614b4a82614b09565b602082019050919050565b60006020820190508181036000830152614b6e81614b32565b9050919050565b7f50726f706f73616c20616c72656164792063616e63656c6c6564000000000000600082015250565b6000614bab601a8361453b565b9150614bb682614b75565b602082019050919050565b60006020820190508181036000830152614bda81614b9e565b9050919050565b6000614bec82613ce4565b9150614bf783613ce4565b9250828203905081811115614c0f57614c0e614624565b5b92915050565b7f50726f706f73616c206e6f7420617420657870697279207468726573686f6c64600082015250565b6000614c4b60208361453b565b9150614c5682614c15565b602082019050919050565b60006020820190508181036000830152614c7a81614c3e565b9050919050565b6000604082019050614c966000830185613a3d565b614ca36020830184613a3d565b9392505050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000614d06602f8361453b565b9150614d1182614caa565b604082019050919050565b60006020820190508181036000830152614d3581614cf9565b9050919050565b7f73656e64657220646f65736e277420686176652061646d696e20726f6c650000600082015250565b6000614d72601e8361453b565b9150614d7d82614d3c565b602082019050919050565b60006020820190508181036000830152614da181614d65565b9050919050565b7f73656e64657220646f65736e27742068617665206578656375746f7220726f6c60008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b6000614e0460218361453b565b9150614e0f82614da8565b604082019050919050565b60006020820190508181036000830152614e3381614df7565b9050919050565b60008160601b9050919050565b6000614e5282614e3a565b9050919050565b6000614e6482614e47565b9050919050565b614e7c614e7782613a87565b614e59565b82525050565b600081905092915050565b6000614e998385614e82565b9350614ea6838584614999565b82840190509392505050565b6000614ebe8286614e6b565b601482019150614ecf828486614e8d565b9150819050949350505050565b7f77726f6e67207265736f75726365206964000000000000000000000000000000600082015250565b6000614f1260118361453b565b9150614f1d82614edc565b602082019050919050565b60006020820190508181036000830152614f4181614f05565b9050919050565b7f70726f706f73616c20616c7265616479207472616e736665727265642f6e6f7460008201527f2066696e616c697a656420796574000000000000000000000000000000000000602082015250565b6000614fa4602e8361453b565b9150614faf82614f48565b604082019050919050565b60006020820190508181036000830152614fd381614f97565b9050919050565b7f457865637574696f6e206e6f74207375636365737366756c0000000000000000600082015250565b600061501060188361453b565b915061501b82614fda565b602082019050919050565b6000602082019050818103600083015261503f81615003565b9050919050565b7f6c656e677468206f66206164647265737320616e6420616d6f756e747320646960008201527f736d617463680000000000000000000000000000000000000000000000000000602082015250565b60006150a260268361453b565b91506150ad82615046565b604082019050919050565b600060208201905081810360008301526150d181615095565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061511282613a67565b9050919050565b61512281615107565b811461512d57600080fd5b50565b60008135905061513f81615119565b92915050565b60006020828403121561515b5761515a613830565b5b600061516984828501615130565b91505092915050565b600061517d82613ce4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036151af576151ae614624565b5b600182019050919050565b60006060820190506151cf6000830186614159565b6151dc6020830185614159565b6151e9604083018461404b565b949350505050565b7f43757272656e742066656520697320657175616c20746f206e65772066656500600082015250565b6000615227601f8361453b565b9150615232826151f1565b602082019050919050565b600060208201905081810360008301526152568161521a565b9050919050565b7f6164647220646f65736e277420686176652072656c6179657220726f6c652100600082015250565b6000615293601f8361453b565b915061529e8261525d565b602082019050919050565b600060208201905081810360008301526152c281615286565b9050919050565b7f6164647220616c726561647920686173206578656375746f7220726f6c652100600082015250565b60006152ff601f8361453b565b915061530a826152c9565b602082019050919050565b6000602082019050818103600083015261532e816152f2565b9050919050565b7f6e6f2068616e646c657220666f72207265736f75726365494400000000000000600082015250565b600061536b60198361453b565b915061537682615335565b602082019050919050565b6000602082019050818103600083015261539a8161535e565b9050919050565b7f70726f706f73616c20616c7265616479207061737365642f657865637574656460008201527f2f63616e63656c6c656400000000000000000000000000000000000000000000602082015250565b60006153fd602a8361453b565b9150615408826153a1565b604082019050919050565b6000602082019050818103600083015261542c816153f0565b9050919050565b7f72656c6179657220616c726561647920766f7465640000000000000000000000600082015250565b600061546960158361453b565b915061547482615433565b602082019050919050565b600060208201905081810360008301526154988161545c565b9050919050565b7f4368656174696e67205269736b3b2052656c6179657220766f7465207769746860008201527f2077726f6e67207265736f757263654944000000000000000000000000000000602082015250565b60006154fb60318361453b565b91506155068261549f565b604082019050919050565b6000602082019050818103600083015261552a816154ee565b9050919050565b60006040820190506155466000830185613a3d565b6155536020830184614159565b9392505050565b7f6164647220616c7265616479206861732072656c6179657220726f6c65210000600082015250565b6000615590601e8361453b565b915061559b8261555a565b602082019050919050565b600060208201905081810360008301526155bf81615583565b9050919050565b6155cf8161383a565b82525050565b60006080820190506155ea6000830187613a3d565b6155f76020830186614159565b61560460408301856155c6565b61561160608301846155c6565b95945050505050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b600061565060108361453b565b915061565b8261561a565b602082019050919050565b6000602082019050818103600083015261567f81615643565b9050919050565b600060408201905061569b6000830186613a3d565b81810360208301526156ae8184866149a8565b9050949350505050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b60006156f96017836156b8565b9150615704826156c3565b601782019050919050565b600081519050919050565b60006157258261570f565b61572f81856156b8565b935061573f818560208601613c4e565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b60006157816011836156b8565b915061578c8261574b565b601182019050919050565b60006157a2826156ec565b91506157ae828561571a565b91506157b982615774565b91506157c5828461571a565b91508190509392505050565b60006157dc8261570f565b6157e6818561453b565b93506157f6818560208601613c4e565b6157ff81613c78565b840191505092915050565b6000602082019050818103600083015261582481846157d1565b905092915050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b600061586260148361453b565b915061586d8261582c565b602082019050919050565b6000602082019050818103600083015261589181615855565b9050919050565b60006158a382613ce4565b91506158ae83613ce4565b92508282026158bc81613ce4565b915082820484148315176158d3576158d2614624565b5b5092915050565b60006158e582613ce4565b91506158f083613ce4565b925082820190508082111561590857615907614624565b5b92915050565b600061591982613ce4565b91506000820361592c5761592b614624565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b600061596d60208361453b565b915061597882615937565b602082019050919050565b6000602082019050818103600083015261599c81615960565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220277a058575bd9cd5e6aa8dfe99c6904102cb263f3594b2b8c9beb40b0a65b7eb64736f6c63430008130033", + "deployedBytecode": "0x60806040526004361061025c5760003560e01c806384db809f11610144578063beab7131116100b6578063cb10f2151161007a578063cb10f21514610932578063cdb0f73a1461095b578063d547741f14610984578063d7a9cd79146109ad578063e8437ee7146109d8578063ffaac0eb14610a015761025c565b8063beab71311461084b578063c0331b3e14610876578063c5b37c221461089f578063c5ec8970146108ca578063ca15c873146108f55761025c565b8063926d7d7f11610108578063926d7d7f1461073b5780639d5773e0146107665780639d82dd6314610791578063a217fddf146107ba578063a9cf69fa146107e5578063ba5c523c146108225761025c565b806384db809f146106325780638c0c26311461066f5780639010d07c1461069857806391c404ac146106d557806391d14854146106fe5761025c565b80634454b20d116101dd578063541d5548116101a1578063541d5548146105245780635c975abb146105615780635e1fab0f1461058c578063780cf004146105b55780637febe63f146105de57806380ae1c281461061b5761025c565b80634454b20d1461042c5780634603ae38146104555780634b0b919d1461047e5780634e056005146104bb57806350598719146104e45761025c565b8063248a9ca311610224578063248a9ca3146103375780632f2ff15d1461037457806336568abe1461039d5780633ee7094a146103c65780633f47585e146104035761025c565b806301ffc9a71461026157806305e2ca171461029e57806307bd0265146102ba5780631149af51146102e557806317f03ce51461030e575b600080fd5b34801561026d57600080fd5b5061028860048036038101906102839190613892565b610a18565b60405161029591906138da565b60405180910390f35b6102b860048036038101906102b391906139c9565b610a92565b005b3480156102c657600080fd5b506102cf610cf4565b6040516102dc9190613a4c565b60405180910390f35b3480156102f157600080fd5b5061030c60048036038101906103079190613ac5565b610d18565b005b34801561031a57600080fd5b5061033560048036038101906103309190613b32565b610e17565b005b34801561034357600080fd5b5061035e60048036038101906103599190613b85565b611056565b60405161036b9190613a4c565b60405180910390f35b34801561038057600080fd5b5061039b60048036038101906103969190613bb2565b611076565b005b3480156103a957600080fd5b506103c460048036038101906103bf9190613bb2565b611097565b005b3480156103d257600080fd5b506103ed60048036038101906103e89190613bf2565b61111a565b6040516103fa9190613cc2565b60405180910390f35b34801561040f57600080fd5b5061042a60048036038101906104259190613d1a565b6111c7565b005b34801561043857600080fd5b50610453600480360381019061044e9190613d47565b61121d565b005b34801561046157600080fd5b5061047c60048036038101906104779190613e7b565b611537565b005b34801561048a57600080fd5b506104a560048036038101906104a09190613efc565b611680565b6040516104b29190613f38565b60405180910390f35b3480156104c757600080fd5b506104e260048036038101906104dd9190613d1a565b6116a7565b005b3480156104f057600080fd5b5061050b60048036038101906105069190613f94565b61172a565b60405161051b949392919061405a565b60405180910390f35b34801561053057600080fd5b5061054b60048036038101906105469190613ac5565b611774565b60405161055891906138da565b60405180910390f35b34801561056d57600080fd5b506105766117a7565b60405161058391906138da565b60405180910390f35b34801561059857600080fd5b506105b360048036038101906105ae9190613ac5565b6117bd565b005b3480156105c157600080fd5b506105dc60048036038101906105d7919061409f565b611826565b005b3480156105ea57600080fd5b5061060560048036038101906106009190614106565b6118ed565b60405161061291906138da565b60405180910390f35b34801561062757600080fd5b50610630611929565b005b34801561063e57600080fd5b5061065960048036038101906106549190613b85565b61197f565b6040516106669190614168565b60405180910390f35b34801561067b57600080fd5b5061069660048036038101906106919190614183565b6119b2565b005b3480156106a457600080fd5b506106bf60048036038101906106ba91906141c3565b611a73565b6040516106cc9190614168565b60405180910390f35b3480156106e157600080fd5b506106fc60048036038101906106f79190613d1a565b611aa2565b005b34801561070a57600080fd5b5061072560048036038101906107209190613bb2565b611b3c565b60405161073291906138da565b60405180910390f35b34801561074757600080fd5b50610750611ba7565b60405161075d9190613a4c565b60405180910390f35b34801561077257600080fd5b5061077b611bcb565b6040516107889190614203565b60405180910390f35b34801561079d57600080fd5b506107b860048036038101906107b39190613ac5565b611bd1565b005b3480156107c657600080fd5b506107cf611cb3565b6040516107dc9190613a4c565b60405180910390f35b3480156107f157600080fd5b5061080c60048036038101906108079190613b32565b611cba565b6040516108199190614399565b60405180910390f35b34801561082e57600080fd5b5061084960048036038101906108449190613ac5565b611ea9565b005b34801561085757600080fd5b50610860611fa9565b60405161086d91906143ca565b60405180910390f35b34801561088257600080fd5b5061089d600480360381019061089891906143e5565b611fbc565b005b3480156108ab57600080fd5b506108b46128dc565b6040516108c19190614203565b60405180910390f35b3480156108d657600080fd5b506108df6128e2565b6040516108ec9190614203565b60405180910390f35b34801561090157600080fd5b5061091c60048036038101906109179190613b85565b6128e8565b6040516109299190614203565b60405180910390f35b34801561093e57600080fd5b506109596004803603810190610954919061446d565b61290c565b005b34801561096757600080fd5b50610982600480360381019061097d9190613ac5565b612a22565b005b34801561099057600080fd5b506109ab60048036038101906109a69190613bb2565b612b05565b005b3480156109b957600080fd5b506109c2612b26565b6040516109cf9190614203565b60405180910390f35b3480156109e457600080fd5b506109ff60048036038101906109fa91906144c0565b612b2c565b005b348015610a0d57600080fd5b50610a16612c48565b005b60007f5a05180f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610a8b5750610a8a82612c9e565b5b9050919050565b610a9a612d18565b6006543414610ade576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad590614598565b60405180910390fd5b60006009600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7c90614604565b60405180910390fd5b6000600860008760ff1660ff168152602001908152602001600020600081819054906101000a900467ffffffffffffffff16610bc090614653565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905590508383600a60008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008960ff1660ff1681526020019081526020016000209182610c349291906148c9565b5060008290508073ffffffffffffffffffffffffffffffffffffffff166338995da9878985338a8a6040518763ffffffff1660e01b8152600401610c7d969594939291906149d5565b600060405180830381600087803b158015610c9757600080fd5b505af1158015610cab573d6000803e3d6000fd5b505050508167ffffffffffffffff16868860ff167fdbb69440df8433824a026ef190652f29929eb64b4d1d5d2a69be8afe3e6eaed860405160405180910390a450505050505050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b610d427fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc433611b3c565b610d81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7890614a7d565b60405180910390fd5b610dab7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6382611b3c565b610dea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de190614ae9565b60405180910390fd5b610e147fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6382612b05565b50565b610e246000801b33611b3c565b80610e555750610e547fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc433611b3c565b5b610e94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8b90614b55565b60405180910390fd5b60008360ff1660088467ffffffffffffffff1668ffffffffffffffffff16901b1790506000600b60008368ffffffffffffffffff1668ffffffffffffffffff16815260200190815260200160002060008481526020019081526020016000209050600480811115610f0857610f07613fd4565b5b8160040160009054906101000a900460ff166004811115610f2c57610f2b613fd4565b5b03610f6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6390614bc1565b60405180910390fd5b600754816005015443610f7f9190614be1565b11610fbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb690614c61565b60405180910390fd5b60048160040160006101000a81548160ff02191690836004811115610fe757610fe6613fd4565b5b0217905550600480811115610fff57610ffe613fd4565b5b8467ffffffffffffffff168660ff167f803c5a12f6bde629cea32e63d4b92d1b560816a6fb72e939d3c89e1cab65041784600001548560010154604051611047929190614c81565b60405180910390a45050505050565b600060016000838152602001908152602001600020600101549050919050565b61107f82611056565b61108881612d62565b6110928383612d76565b505050565b61109f612daa565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461110c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110390614d1c565b60405180910390fd5b6111168282612db2565b5050565b600a602052816000526040600020602052806000526040600020600091509150508054611146906146ec565b80601f0160208091040260200160405190810160405280929190818152602001828054611172906146ec565b80156111bf5780601f10611194576101008083540402835291602001916111bf565b820191906000526020600020905b8154815290600101906020018083116111a257829003601f168201915b505050505081565b6111d46000801b33611b3c565b611213576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120a90614d88565b60405180910390fd5b8060078190555050565b6112477fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc433611b3c565b8061127857506112777fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6333611b3c565b5b8061128c575061128b6000801b33611b3c565b5b6112cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c290614e1a565b60405180910390fd5b6112d3612d18565b60006009600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008660ff1660088767ffffffffffffffff1668ffffffffffffffffff16901b179050600082868660405160200161134593929190614eb2565b6040516020818303038152906040528051906020012090506000600b60008468ffffffffffffffffff1668ffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000209050848160000154146113e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d890614f28565b60405180910390fd5b600260048111156113f5576113f4613fd4565b5b8160040160009054906101000a900460ff16600481111561141957611418613fd4565b5b14611459576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145090614fba565b60405180910390fd5b611464878787612de6565b6114a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149a90615026565b60405180910390fd5b60038160040160006101000a81548160ff021916908360048111156114cb576114ca613fd4565b5b0217905550600360048111156114e4576114e3613fd4565b5b8867ffffffffffffffff168a60ff167f803c5a12f6bde629cea32e63d4b92d1b560816a6fb72e939d3c89e1cab6504178886604051611524929190614c81565b60405180910390a4505050505050505050565b6115446000801b33611b3c565b611583576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157a90614d88565b60405180910390fd5b8181905084849050146115cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c2906150b8565b60405180910390fd5b600084849050905060005b81811015611678578585828181106115f1576115f06150d8565b5b90506020020160208101906116069190615145565b73ffffffffffffffffffffffffffffffffffffffff166108fc858584818110611632576116316150d8565b5b905060200201359081150290604051600060405180830381858888f19350505050158015611664573d6000803e3d6000fd5b50808061167090615172565b9150506115d6565b505050505050565b60086020528060005260406000206000915054906101000a900467ffffffffffffffff1681565b6116b46000801b33611b3c565b6116f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ea90614d88565b60405180910390fd5b80600481905550807fa20d6b84cd798a24038be305eff8a45ca82ef54a2aa2082005d8e14c0a4746c860405160405180910390a250565b600b602052816000526040600020602052806000526040600020600091509150508060000154908060010154908060040160009054906101000a900460ff16908060050154905084565b60006117a07fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc483611b3c565b9050919050565b60008060009054906101000a900460ff16905090565b6117ca6000801b33611b3c565b611809576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180090614d88565b60405180910390fd5b6118166000801b82611076565b6118236000801b33611097565b50565b6118336000801b33611b3c565b611872576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186990614d88565b60405180910390fd5b60008490508073ffffffffffffffffffffffffffffffffffffffff1663d9caed128585856040518463ffffffff1660e01b81526004016118b4939291906151ba565b600060405180830381600087803b1580156118ce57600080fd5b505af11580156118e2573d6000803e3d6000fd5b505050505050505050565b600c602052826000526040600020602052816000526040600020602052806000526040600020600092509250509054906101000a900460ff1681565b6119366000801b33611b3c565b611975576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196c90614d88565b60405180910390fd5b61197d612ea2565b565b60096020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6119bf6000801b33611b3c565b6119fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f590614d88565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff166307b7ed99836040518263ffffffff1660e01b8152600401611a3c9190614168565b600060405180830381600087803b158015611a5657600080fd5b505af1158015611a6a573d6000803e3d6000fd5b50505050505050565b6000611a9a8260026000868152602001908152602001600020612f0490919063ffffffff16565b905092915050565b611aaf6000801b33611b3c565b611aee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae590614d88565b60405180910390fd5b8060065403611b32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b299061523d565b60405180910390fd5b8060068190555050565b60006001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b7fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc481565b60055481565b611bde6000801b33611b3c565b611c1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1490614d88565b60405180910390fd5b611c477fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc482611b3c565b611c86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7d906152a9565b60405180910390fd5b611cb07fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc482612b05565b50565b6000801b81565b611cc261373b565b60008460ff1660088567ffffffffffffffff1668ffffffffffffffffff16901b179050600b60008268ffffffffffffffffff1668ffffffffffffffffff16815260200190815260200160002060008481526020019081526020016000206040518060c0016040529081600082015481526020016001820154815260200160028201805480602002602001604051908101604052809291908181526020018280548015611dc357602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611d79575b5050505050815260200160038201805480602002602001604051908101604052809291908181526020018280548015611e5157602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611e07575b505050505081526020016004820160009054906101000a900460ff166004811115611e7f57611e7e613fd4565b5b6004811115611e9157611e90613fd4565b5b81526020016005820154815250509150509392505050565b611ed37fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc433611b3c565b611f12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0990614a7d565b60405180910390fd5b611f3c7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6382611b3c565b15611f7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7390615315565b60405180910390fd5b611fa67fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6382611076565b50565b600360009054906101000a900460ff1681565b611fe67fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc433611b3c565b612025576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201c90614a7d565b60405180910390fd5b61202d612d18565b60006009600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600081848460405160200161207c93929190614eb2565b60405160208183030381529060405280519060200120905060008760ff1660088867ffffffffffffffff1668ffffffffffffffffff16901b1790506000600b60008368ffffffffffffffffff1668ffffffffffffffffff16815260200190815260200160002060008481526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff166009600089815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612197576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218e90615381565b60405180910390fd5b60018160040160009054906101000a900460ff1660048111156121bd576121bc613fd4565b5b11156121fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f590615413565b60405180910390fd5b600c60008368ffffffffffffffffff1668ffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156122c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ba9061547f565b60405180910390fd5b60008160040160009054906101000a900460ff1660048111156122e9576122e8613fd4565b5b0361255c576005600081546122fd90615172565b919050819055506040518060c00160405280888152602001848152602001600167ffffffffffffffff8111156123365761233561468e565b5b6040519080825280602002602001820160405280156123645781602001602082028036833780820191505090505b508152602001600067ffffffffffffffff8111156123855761238461468e565b5b6040519080825280602002602001820160405280156123b35781602001602082028036833780820191505090505b508152602001600160048111156123cd576123cc613fd4565b5b815260200143815250600b60008468ffffffffffffffffff1668ffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060008201518160000155602082015181600101556040820151816002019080519060200190612440929190613789565b50606082015181600301908051906020019061245d929190613789565b5060808201518160040160006101000a81548160ff0219169083600481111561248957612488613fd4565b5b021790555060a0820151816005015590505033816002016000815481106124b3576124b26150d8565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600481111561250f5761250e613fd4565b5b8867ffffffffffffffff168a60ff167f803c5a12f6bde629cea32e63d4b92d1b560816a6fb72e939d3c89e1cab6504178a8760405161254f929190614c81565b60405180910390a46126af565b60075481600501544361256f9190614be1565b11156126025760048160040160006101000a81548160ff0219169083600481111561259d5761259c613fd4565b5b02179055506004808111156125b5576125b4613fd4565b5b8867ffffffffffffffff168a60ff167f803c5a12f6bde629cea32e63d4b92d1b560816a6fb72e939d3c89e1cab6504178a876040516125f5929190614c81565b60405180910390a46126ae565b86816000015414612648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263f90615511565b60405180910390fd5b80600201339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b6004808111156126c2576126c1613fd4565b5b8160040160009054906101000a900460ff1660048111156126e6576126e5613fd4565b5b146128d0576001600c60008468ffffffffffffffffff1668ffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016004541115806127965750600454816002018054905010155b156128cf576127a6868689612de6565b1561283d5760038160040160006101000a81548160ff021916908360048111156127d3576127d2613fd4565b5b0217905550600360048111156127ec576127eb613fd4565b5b8867ffffffffffffffff168a60ff167f803c5a12f6bde629cea32e63d4b92d1b560816a6fb72e939d3c89e1cab6504178a8760405161282c929190614c81565b60405180910390a4505050506128d5565b60028160040160006101000a81548160ff0219169083600481111561286557612864613fd4565b5b02179055506002600481111561287e5761287d613fd4565b5b8867ffffffffffffffff168a60ff167f803c5a12f6bde629cea32e63d4b92d1b560816a6fb72e939d3c89e1cab6504178a876040516128be929190614c81565b60405180910390a4505050506128d5565b5b505050505b5050505050565b60065481565b60075481565b600061290560026000848152602001908152602001600020612f1e565b9050919050565b6129196000801b33611b3c565b612958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294f90614d88565b60405180910390fd5b826009600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008390508073ffffffffffffffffffffffffffffffffffffffff1663b8fa373684846040518363ffffffff1660e01b81526004016129ea929190615531565b600060405180830381600087803b158015612a0457600080fd5b505af1158015612a18573d6000803e3d6000fd5b5050505050505050565b612a2f6000801b33611b3c565b612a6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6590614d88565b60405180910390fd5b612a987fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc482611b3c565b15612ad8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612acf906155a6565b60405180910390fd5b612b027fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc482611076565b50565b612b0e82611056565b612b1781612d62565b612b218383612db2565b505050565b60045481565b612b396000801b33611b3c565b612b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6f90614d88565b60405180910390fd5b846009600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008590508073ffffffffffffffffffffffffffffffffffffffff1663bba8185a868686866040518563ffffffff1660e01b8152600401612c0e94939291906155d5565b600060405180830381600087803b158015612c2857600080fd5b505af1158015612c3c573d6000803e3d6000fd5b50505050505050505050565b612c556000801b33611b3c565b612c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8b90614d88565b60405180910390fd5b612c9c612f33565b565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612d115750612d1082612f95565b5b9050919050565b612d206117a7565b15612d60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5790615666565b60405180910390fd5b565b612d7381612d6e612daa565b612fff565b50565b612d808282613084565b612da5816002600085815260200190815260200160002061316490919063ffffffff16565b505050565b600033905090565b612dbc8282613194565b612de1816002600085815260200190815260200160002061327690919063ffffffff16565b505050565b6000806009600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663e248cff28487876040518463ffffffff1660e01b8152600401612e5c93929190615686565b600060405180830381600087803b158015612e7657600080fd5b505af1925050508015612e87575060015b612e95576000915050612e9b565b60019150505b9392505050565b612eaa612d18565b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612eed612daa565b604051612efa9190614168565b60405180910390a1565b6000612f1383600001836132a6565b60001c905092915050565b6000612f2c826000016132d1565b9050919050565b612f3b6132e2565b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612f7e612daa565b604051612f8b9190614168565b60405180910390a1565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6130098282611b3c565b613080576130168161332b565b6130248360001c6020613358565b604051602001613035929190615797565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613077919061580a565b60405180910390fd5b5050565b61308e8282611b3c565b61316057600180600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613105612daa565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600061318c836000018373ffffffffffffffffffffffffffffffffffffffff1660001b613594565b905092915050565b61319e8282611b3c565b156132725760006001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613217612daa565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b600061329e836000018373ffffffffffffffffffffffffffffffffffffffff1660001b613604565b905092915050565b60008260000182815481106132be576132bd6150d8565b5b9060005260206000200154905092915050565b600081600001805490509050919050565b6132ea6117a7565b613329576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161332090615878565b60405180910390fd5b565b60606133518273ffffffffffffffffffffffffffffffffffffffff16601460ff16613358565b9050919050565b60606000600283600261336b9190615898565b61337591906158da565b67ffffffffffffffff81111561338e5761338d61468e565b5b6040519080825280601f01601f1916602001820160405280156133c05781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106133f8576133f76150d8565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061345c5761345b6150d8565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000600184600261349c9190615898565b6134a691906158da565b90505b6001811115613546577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106134e8576134e76150d8565b5b1a60f81b8282815181106134ff576134fe6150d8565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061353f9061590e565b90506134a9565b506000841461358a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161358190615983565b60405180910390fd5b8091505092915050565b60006135a08383613718565b6135f95782600001829080600181540180825580915050600190039060005260206000200160009091909190915055826000018054905083600101600084815260200190815260200160002081905550600190506135fe565b600090505b92915050565b6000808360010160008481526020019081526020016000205490506000811461370c5760006001826136369190614be1565b905060006001866000018054905061364e9190614be1565b90508181146136bd57600086600001828154811061366f5761366e6150d8565b5b9060005260206000200154905080876000018481548110613693576136926150d8565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b856000018054806136d1576136d06159a3565b5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050613712565b60009150505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b6040518060c00160405280600080191681526020016000801916815260200160608152602001606081526020016000600481111561377c5761377b613fd4565b5b8152602001600081525090565b828054828255906000526020600020908101928215613802579160200282015b828111156138015782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906137a9565b5b50905061380f9190613813565b5090565b5b8082111561382c576000816000905550600101613814565b5090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61386f8161383a565b811461387a57600080fd5b50565b60008135905061388c81613866565b92915050565b6000602082840312156138a8576138a7613830565b5b60006138b68482850161387d565b91505092915050565b60008115159050919050565b6138d4816138bf565b82525050565b60006020820190506138ef60008301846138cb565b92915050565b600060ff82169050919050565b61390b816138f5565b811461391657600080fd5b50565b60008135905061392881613902565b92915050565b6000819050919050565b6139418161392e565b811461394c57600080fd5b50565b60008135905061395e81613938565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261398957613988613964565b5b8235905067ffffffffffffffff8111156139a6576139a5613969565b5b6020830191508360018202830111156139c2576139c161396e565b5b9250929050565b600080600080606085870312156139e3576139e2613830565b5b60006139f187828801613919565b9450506020613a028782880161394f565b935050604085013567ffffffffffffffff811115613a2357613a22613835565b5b613a2f87828801613973565b925092505092959194509250565b613a468161392e565b82525050565b6000602082019050613a616000830184613a3d565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613a9282613a67565b9050919050565b613aa281613a87565b8114613aad57600080fd5b50565b600081359050613abf81613a99565b92915050565b600060208284031215613adb57613ada613830565b5b6000613ae984828501613ab0565b91505092915050565b600067ffffffffffffffff82169050919050565b613b0f81613af2565b8114613b1a57600080fd5b50565b600081359050613b2c81613b06565b92915050565b600080600060608486031215613b4b57613b4a613830565b5b6000613b5986828701613919565b9350506020613b6a86828701613b1d565b9250506040613b7b8682870161394f565b9150509250925092565b600060208284031215613b9b57613b9a613830565b5b6000613ba98482850161394f565b91505092915050565b60008060408385031215613bc957613bc8613830565b5b6000613bd78582860161394f565b9250506020613be885828601613ab0565b9150509250929050565b60008060408385031215613c0957613c08613830565b5b6000613c1785828601613b1d565b9250506020613c2885828601613919565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613c6c578082015181840152602081019050613c51565b60008484015250505050565b6000601f19601f8301169050919050565b6000613c9482613c32565b613c9e8185613c3d565b9350613cae818560208601613c4e565b613cb781613c78565b840191505092915050565b60006020820190508181036000830152613cdc8184613c89565b905092915050565b6000819050919050565b613cf781613ce4565b8114613d0257600080fd5b50565b600081359050613d1481613cee565b92915050565b600060208284031215613d3057613d2f613830565b5b6000613d3e84828501613d05565b91505092915050565b600080600080600060808688031215613d6357613d62613830565b5b6000613d7188828901613919565b9550506020613d8288828901613b1d565b945050604086013567ffffffffffffffff811115613da357613da2613835565b5b613daf88828901613973565b93509350506060613dc28882890161394f565b9150509295509295909350565b60008083601f840112613de557613de4613964565b5b8235905067ffffffffffffffff811115613e0257613e01613969565b5b602083019150836020820283011115613e1e57613e1d61396e565b5b9250929050565b60008083601f840112613e3b57613e3a613964565b5b8235905067ffffffffffffffff811115613e5857613e57613969565b5b602083019150836020820283011115613e7457613e7361396e565b5b9250929050565b60008060008060408587031215613e9557613e94613830565b5b600085013567ffffffffffffffff811115613eb357613eb2613835565b5b613ebf87828801613dcf565b9450945050602085013567ffffffffffffffff811115613ee257613ee1613835565b5b613eee87828801613e25565b925092505092959194509250565b600060208284031215613f1257613f11613830565b5b6000613f2084828501613919565b91505092915050565b613f3281613af2565b82525050565b6000602082019050613f4d6000830184613f29565b92915050565b600068ffffffffffffffffff82169050919050565b613f7181613f53565b8114613f7c57600080fd5b50565b600081359050613f8e81613f68565b92915050565b60008060408385031215613fab57613faa613830565b5b6000613fb985828601613f7f565b9250506020613fca8582860161394f565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6005811061401457614013613fd4565b5b50565b600081905061402582614003565b919050565b600061403582614017565b9050919050565b6140458161402a565b82525050565b61405481613ce4565b82525050565b600060808201905061406f6000830187613a3d565b61407c6020830186613a3d565b614089604083018561403c565b614096606083018461404b565b95945050505050565b600080600080608085870312156140b9576140b8613830565b5b60006140c787828801613ab0565b94505060206140d887828801613ab0565b93505060406140e987828801613ab0565b92505060606140fa87828801613d05565b91505092959194509250565b60008060006060848603121561411f5761411e613830565b5b600061412d86828701613f7f565b935050602061413e8682870161394f565b925050604061414f86828701613ab0565b9150509250925092565b61416281613a87565b82525050565b600060208201905061417d6000830184614159565b92915050565b6000806040838503121561419a57614199613830565b5b60006141a885828601613ab0565b92505060206141b985828601613ab0565b9150509250929050565b600080604083850312156141da576141d9613830565b5b60006141e88582860161394f565b92505060206141f985828601613d05565b9150509250929050565b6000602082019050614218600083018461404b565b92915050565b6142278161392e565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61426281613a87565b82525050565b60006142748383614259565b60208301905092915050565b6000602082019050919050565b60006142988261422d565b6142a28185614238565b93506142ad83614249565b8060005b838110156142de5781516142c58882614268565b97506142d083614280565b9250506001810190506142b1565b5085935050505092915050565b6142f48161402a565b82525050565b61430381613ce4565b82525050565b600060c083016000830151614321600086018261421e565b506020830151614334602086018261421e565b506040830151848203604086015261434c828261428d565b91505060608301518482036060860152614366828261428d565b915050608083015161437b60808601826142eb565b5060a083015161438e60a08601826142fa565b508091505092915050565b600060208201905081810360008301526143b38184614309565b905092915050565b6143c4816138f5565b82525050565b60006020820190506143df60008301846143bb565b92915050565b60008060008060006080868803121561440157614400613830565b5b600061440f88828901613919565b955050602061442088828901613b1d565b94505060406144318882890161394f565b935050606086013567ffffffffffffffff81111561445257614451613835565b5b61445e88828901613973565b92509250509295509295909350565b60008060006060848603121561448657614485613830565b5b600061449486828701613ab0565b93505060206144a58682870161394f565b92505060406144b686828701613ab0565b9150509250925092565b600080600080600060a086880312156144dc576144db613830565b5b60006144ea88828901613ab0565b95505060206144fb8882890161394f565b945050604061450c88828901613ab0565b935050606061451d8882890161387d565b925050608061452e8882890161387d565b9150509295509295909350565b600082825260208201905092915050565b7f496e636f72726563742066656520737570706c69656400000000000000000000600082015250565b600061458260168361453b565b915061458d8261454c565b602082019050919050565b600060208201905081810360008301526145b181614575565b9050919050565b7f7265736f757263654944206e6f74206d617070656420746f2068616e646c6572600082015250565b60006145ee60208361453b565b91506145f9826145b8565b602082019050919050565b6000602082019050818103600083015261461d816145e1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061465e82613af2565b915067ffffffffffffffff820361467857614677614624565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061470457607f821691505b602082108103614717576147166146bd565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261477f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82614742565b6147898683614742565b95508019841693508086168417925050509392505050565b6000819050919050565b60006147c66147c16147bc84613ce4565b6147a1565b613ce4565b9050919050565b6000819050919050565b6147e0836147ab565b6147f46147ec826147cd565b84845461474f565b825550505050565b600090565b6148096147fc565b6148148184846147d7565b505050565b5b818110156148385761482d600082614801565b60018101905061481a565b5050565b601f82111561487d5761484e8161471d565b61485784614732565b81016020851015614866578190505b61487a61487285614732565b830182614819565b50505b505050565b600082821c905092915050565b60006148a060001984600802614882565b1980831691505092915050565b60006148b9838361488f565b9150826002028217905092915050565b6148d38383614683565b67ffffffffffffffff8111156148ec576148eb61468e565b5b6148f682546146ec565b61490182828561483c565b6000601f831160018114614930576000841561491e578287013590505b61492885826148ad565b865550614990565b601f19841661493e8661471d565b60005b8281101561496657848901358255600182019150602085019450602081019050614941565b86831015614983578489013561497f601f89168261488f565b8355505b6001600288020188555050505b50505050505050565b82818337600083830152505050565b60006149b48385613c3d565b93506149c1838584614999565b6149ca83613c78565b840190509392505050565b600060a0820190506149ea6000830189613a3d565b6149f760208301886143bb565b614a046040830187613f29565b614a116060830186614159565b8181036080830152614a248184866149a8565b9050979650505050505050565b7f73656e64657220646f65736e277420686176652072656c6179657220726f6c65600082015250565b6000614a6760208361453b565b9150614a7282614a31565b602082019050919050565b60006020820190508181036000830152614a9681614a5a565b9050919050565b7f6164647220646f65736e27742068617665206578656375746f7220726f6c6521600082015250565b6000614ad360208361453b565b9150614ade82614a9d565b602082019050919050565b60006020820190508181036000830152614b0281614ac6565b9050919050565b7f73656e646572206973206e6f742072656c61796572206f722061646d696e0000600082015250565b6000614b3f601e8361453b565b9150614b4a82614b09565b602082019050919050565b60006020820190508181036000830152614b6e81614b32565b9050919050565b7f50726f706f73616c20616c72656164792063616e63656c6c6564000000000000600082015250565b6000614bab601a8361453b565b9150614bb682614b75565b602082019050919050565b60006020820190508181036000830152614bda81614b9e565b9050919050565b6000614bec82613ce4565b9150614bf783613ce4565b9250828203905081811115614c0f57614c0e614624565b5b92915050565b7f50726f706f73616c206e6f7420617420657870697279207468726573686f6c64600082015250565b6000614c4b60208361453b565b9150614c5682614c15565b602082019050919050565b60006020820190508181036000830152614c7a81614c3e565b9050919050565b6000604082019050614c966000830185613a3d565b614ca36020830184613a3d565b9392505050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000614d06602f8361453b565b9150614d1182614caa565b604082019050919050565b60006020820190508181036000830152614d3581614cf9565b9050919050565b7f73656e64657220646f65736e277420686176652061646d696e20726f6c650000600082015250565b6000614d72601e8361453b565b9150614d7d82614d3c565b602082019050919050565b60006020820190508181036000830152614da181614d65565b9050919050565b7f73656e64657220646f65736e27742068617665206578656375746f7220726f6c60008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b6000614e0460218361453b565b9150614e0f82614da8565b604082019050919050565b60006020820190508181036000830152614e3381614df7565b9050919050565b60008160601b9050919050565b6000614e5282614e3a565b9050919050565b6000614e6482614e47565b9050919050565b614e7c614e7782613a87565b614e59565b82525050565b600081905092915050565b6000614e998385614e82565b9350614ea6838584614999565b82840190509392505050565b6000614ebe8286614e6b565b601482019150614ecf828486614e8d565b9150819050949350505050565b7f77726f6e67207265736f75726365206964000000000000000000000000000000600082015250565b6000614f1260118361453b565b9150614f1d82614edc565b602082019050919050565b60006020820190508181036000830152614f4181614f05565b9050919050565b7f70726f706f73616c20616c7265616479207472616e736665727265642f6e6f7460008201527f2066696e616c697a656420796574000000000000000000000000000000000000602082015250565b6000614fa4602e8361453b565b9150614faf82614f48565b604082019050919050565b60006020820190508181036000830152614fd381614f97565b9050919050565b7f457865637574696f6e206e6f74207375636365737366756c0000000000000000600082015250565b600061501060188361453b565b915061501b82614fda565b602082019050919050565b6000602082019050818103600083015261503f81615003565b9050919050565b7f6c656e677468206f66206164647265737320616e6420616d6f756e747320646960008201527f736d617463680000000000000000000000000000000000000000000000000000602082015250565b60006150a260268361453b565b91506150ad82615046565b604082019050919050565b600060208201905081810360008301526150d181615095565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061511282613a67565b9050919050565b61512281615107565b811461512d57600080fd5b50565b60008135905061513f81615119565b92915050565b60006020828403121561515b5761515a613830565b5b600061516984828501615130565b91505092915050565b600061517d82613ce4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036151af576151ae614624565b5b600182019050919050565b60006060820190506151cf6000830186614159565b6151dc6020830185614159565b6151e9604083018461404b565b949350505050565b7f43757272656e742066656520697320657175616c20746f206e65772066656500600082015250565b6000615227601f8361453b565b9150615232826151f1565b602082019050919050565b600060208201905081810360008301526152568161521a565b9050919050565b7f6164647220646f65736e277420686176652072656c6179657220726f6c652100600082015250565b6000615293601f8361453b565b915061529e8261525d565b602082019050919050565b600060208201905081810360008301526152c281615286565b9050919050565b7f6164647220616c726561647920686173206578656375746f7220726f6c652100600082015250565b60006152ff601f8361453b565b915061530a826152c9565b602082019050919050565b6000602082019050818103600083015261532e816152f2565b9050919050565b7f6e6f2068616e646c657220666f72207265736f75726365494400000000000000600082015250565b600061536b60198361453b565b915061537682615335565b602082019050919050565b6000602082019050818103600083015261539a8161535e565b9050919050565b7f70726f706f73616c20616c7265616479207061737365642f657865637574656460008201527f2f63616e63656c6c656400000000000000000000000000000000000000000000602082015250565b60006153fd602a8361453b565b9150615408826153a1565b604082019050919050565b6000602082019050818103600083015261542c816153f0565b9050919050565b7f72656c6179657220616c726561647920766f7465640000000000000000000000600082015250565b600061546960158361453b565b915061547482615433565b602082019050919050565b600060208201905081810360008301526154988161545c565b9050919050565b7f4368656174696e67205269736b3b2052656c6179657220766f7465207769746860008201527f2077726f6e67207265736f757263654944000000000000000000000000000000602082015250565b60006154fb60318361453b565b91506155068261549f565b604082019050919050565b6000602082019050818103600083015261552a816154ee565b9050919050565b60006040820190506155466000830185613a3d565b6155536020830184614159565b9392505050565b7f6164647220616c7265616479206861732072656c6179657220726f6c65210000600082015250565b6000615590601e8361453b565b915061559b8261555a565b602082019050919050565b600060208201905081810360008301526155bf81615583565b9050919050565b6155cf8161383a565b82525050565b60006080820190506155ea6000830187613a3d565b6155f76020830186614159565b61560460408301856155c6565b61561160608301846155c6565b95945050505050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b600061565060108361453b565b915061565b8261561a565b602082019050919050565b6000602082019050818103600083015261567f81615643565b9050919050565b600060408201905061569b6000830186613a3d565b81810360208301526156ae8184866149a8565b9050949350505050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b60006156f96017836156b8565b9150615704826156c3565b601782019050919050565b600081519050919050565b60006157258261570f565b61572f81856156b8565b935061573f818560208601613c4e565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b60006157816011836156b8565b915061578c8261574b565b601182019050919050565b60006157a2826156ec565b91506157ae828561571a565b91506157b982615774565b91506157c5828461571a565b91508190509392505050565b60006157dc8261570f565b6157e6818561453b565b93506157f6818560208601613c4e565b6157ff81613c78565b840191505092915050565b6000602082019050818103600083015261582481846157d1565b905092915050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b600061586260148361453b565b915061586d8261582c565b602082019050919050565b6000602082019050818103600083015261589181615855565b9050919050565b60006158a382613ce4565b91506158ae83613ce4565b92508282026158bc81613ce4565b915082820484148315176158d3576158d2614624565b5b5092915050565b60006158e582613ce4565b91506158f083613ce4565b925082820190508082111561590857615907614624565b5b92915050565b600061591982613ce4565b91506000820361592c5761592b614624565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b600061596d60208361453b565b915061597882615937565b602082019050919050565b6000602082019050818103600083015261599c81615960565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220277a058575bd9cd5e6aa8dfe99c6904102cb263f3594b2b8c9beb40b0a65b7eb64736f6c63430008130033", + "immutableReferences": {}, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:11498:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "47:35:40", + "statements": [ { - "internalType": "address", - "name": "handlerAddress", - "type": "address" - }, + "nodeType": "YulAssignment", + "src": "57:19:40", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "73:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "67:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "67:9:40" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "57:6:40" + } + ] + } + ] + }, + "name": "allocate_unbounded", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "40:6:40", + "type": "" + } + ], + "src": "7:75:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "177:28:40", + "statements": [ { - "internalType": "address", - "name": "tokenAddress", - "type": "address" - }, + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "194:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "197:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "187:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "187:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "187:12:40" + } + ] + }, + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulFunctionDefinition", + "src": "88:117:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "300:28:40", + "statements": [ { - "internalType": "address", - "name": "recipient", - "type": "address" - }, + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "317:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "320:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "310:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "310:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "310:12:40" + } + ] + }, + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulFunctionDefinition", + "src": "211:117:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "377:43:40", + "statements": [ { - "internalType": "uint256", - "name": "amountOrTokenID", - "type": "uint256" + "nodeType": "YulAssignment", + "src": "387:27:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "402:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "409:4:40", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "398:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "398:16:40" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "387:7:40" + } + ] } + ] + }, + "name": "cleanup_t_uint8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "359:5:40", + "type": "" + } ], - "name": "adminWithdraw", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "369:7:40", + "type": "" + } + ], + "src": "334:86:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "467:77:40", + "statements": [ { - "internalType": "uint8", - "name": "destinationChainID", - "type": "uint8" - }, + "body": { + "nodeType": "YulBlock", + "src": "522:16:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "531:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "534:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "524:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "524:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "524:12:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "490:5:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "513:5:40" + } + ], + "functionName": { + "name": "cleanup_t_uint8", + "nodeType": "YulIdentifier", + "src": "497:15:40" + }, + "nodeType": "YulFunctionCall", + "src": "497:22:40" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "487:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "487:33:40" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "480:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "480:41:40" + }, + "nodeType": "YulIf", + "src": "477:61:40" + } + ] + }, + "name": "validator_revert_t_uint8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "460:5:40", + "type": "" + } + ], + "src": "426:118:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "611:78:40", + "statements": [ { - "internalType": "bytes32", - "name": "resourceID", - "type": "bytes32" + "nodeType": "YulAssignment", + "src": "621:22:40", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "636:6:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "630:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "630:13:40" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "621:5:40" + } + ] }, { - "internalType": "bytes", - "name": "data", - "type": "bytes" + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "677:5:40" + } + ], + "functionName": { + "name": "validator_revert_t_uint8", + "nodeType": "YulIdentifier", + "src": "652:24:40" + }, + "nodeType": "YulFunctionCall", + "src": "652:31:40" + }, + "nodeType": "YulExpressionStatement", + "src": "652:31:40" } + ] + }, + "name": "abi_decode_t_uint8_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "589:6:40", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "597:3:40", + "type": "" + } ], - "name": "deposit", - "outputs": [], - "stateMutability": "payable", - "type": "function", - "payable": true - }, - { - "inputs": [ + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "605:5:40", + "type": "" + } + ], + "src": "550:139:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "784:28:40", + "statements": [ { - "internalType": "uint8", - "name": "chainID", - "type": "uint8" - }, + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "801:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "804:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "794:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "794:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "794:12:40" + } + ] + }, + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulFunctionDefinition", + "src": "695:117:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "866:54:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "876:38:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "894:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "901:2:40", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "890:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "890:14:40" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "910:2:40", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "906:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "906:7:40" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "886:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "886:28:40" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "876:6:40" + } + ] + } + ] + }, + "name": "round_up_to_mul_of_32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "849:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "result", + "nodeType": "YulTypedName", + "src": "859:6:40", + "type": "" + } + ], + "src": "818:102:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "954:152:40", + "statements": [ { - "internalType": "uint64", - "name": "depositNonce", - "type": "uint64" + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "971:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "974:77:40", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "964:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "964:88:40" + }, + "nodeType": "YulExpressionStatement", + "src": "964:88:40" }, { - "internalType": "bytes32", - "name": "resourceID", - "type": "bytes32" + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1068:1:40", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1071:4:40", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1061:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "1061:15:40" + }, + "nodeType": "YulExpressionStatement", + "src": "1061:15:40" }, { - "internalType": "bytes32", - "name": "dataHash", - "type": "bytes32" + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1092:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1095:4:40", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1085:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "1085:15:40" + }, + "nodeType": "YulExpressionStatement", + "src": "1085:15:40" } - ], - "name": "voteProposal", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ + ] + }, + "name": "panic_error_0x41", + "nodeType": "YulFunctionDefinition", + "src": "926:180:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1155:238:40", + "statements": [ { - "internalType": "uint8", - "name": "chainID", - "type": "uint8" + "nodeType": "YulVariableDeclaration", + "src": "1165:58:40", + "value": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1187:6:40" + }, + { + "arguments": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "1217:4:40" + } + ], + "functionName": { + "name": "round_up_to_mul_of_32", + "nodeType": "YulIdentifier", + "src": "1195:21:40" + }, + "nodeType": "YulFunctionCall", + "src": "1195:27:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1183:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "1183:40:40" + }, + "variables": [ + { + "name": "newFreePtr", + "nodeType": "YulTypedName", + "src": "1169:10:40", + "type": "" + } + ] }, { - "internalType": "uint64", - "name": "depositNonce", - "type": "uint64" + "body": { + "nodeType": "YulBlock", + "src": "1334:22:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "1336:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "1336:18:40" + }, + "nodeType": "YulExpressionStatement", + "src": "1336:18:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "1277:10:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1289:18:40", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1274:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "1274:34:40" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "1313:10:40" + }, + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1325:6:40" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "1310:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "1310:22:40" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "1271:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "1271:62:40" + }, + "nodeType": "YulIf", + "src": "1268:88:40" }, { - "internalType": "bytes32", - "name": "dataHash", - "type": "bytes32" + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1372:2:40", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "1376:10:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1365:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "1365:22:40" + }, + "nodeType": "YulExpressionStatement", + "src": "1365:22:40" } + ] + }, + "name": "finalize_allocation", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "1141:6:40", + "type": "" + }, + { + "name": "size", + "nodeType": "YulTypedName", + "src": "1149:4:40", + "type": "" + } ], - "name": "cancelProposal", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ + "src": "1112:281:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1440:88:40", + "statements": [ { - "internalType": "uint8", - "name": "chainID", - "type": "uint8" + "nodeType": "YulAssignment", + "src": "1450:30:40", + "value": { + "arguments": [], + "functionName": { + "name": "allocate_unbounded", + "nodeType": "YulIdentifier", + "src": "1460:18:40" + }, + "nodeType": "YulFunctionCall", + "src": "1460:20:40" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1450:6:40" + } + ] }, { - "internalType": "uint64", - "name": "depositNonce", - "type": "uint64" + "expression": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1509:6:40" + }, + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "1517:4:40" + } + ], + "functionName": { + "name": "finalize_allocation", + "nodeType": "YulIdentifier", + "src": "1489:19:40" + }, + "nodeType": "YulFunctionCall", + "src": "1489:33:40" + }, + "nodeType": "YulExpressionStatement", + "src": "1489:33:40" + } + ] + }, + "name": "allocate_memory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "size", + "nodeType": "YulTypedName", + "src": "1424:4:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "1433:6:40", + "type": "" + } + ], + "src": "1399:129:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1616:229:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1721:22:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "1723:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "1723:18:40" + }, + "nodeType": "YulExpressionStatement", + "src": "1723:18:40" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1693:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1701:18:40", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1690:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "1690:30:40" + }, + "nodeType": "YulIf", + "src": "1687:56:40" }, { - "internalType": "bytes", - "name": "data", - "type": "bytes" + "nodeType": "YulAssignment", + "src": "1753:25:40", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1765:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1773:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "1761:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "1761:17:40" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "1753:4:40" + } + ] }, { - "internalType": "bytes32", - "name": "resourceID", - "type": "bytes32" + "nodeType": "YulAssignment", + "src": "1815:23:40", + "value": { + "arguments": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "1827:4:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1833:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1823:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "1823:15:40" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "1815:4:40" + } + ] } + ] + }, + "name": "array_allocation_size_t_array$_t_address_$dyn_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "1600:6:40", + "type": "" + } ], - "name": "executeProposal", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address payable[]", - "name": "addrs", - "type": "address[]" - }, + "returnVariables": [ + { + "name": "size", + "nodeType": "YulTypedName", + "src": "1611:4:40", + "type": "" + } + ], + "src": "1534:311:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1940:28:40", + "statements": [ { - "internalType": "uint256[]", - "name": "amounts", - "type": "uint256[]" + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1957:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1960:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1950:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "1950:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "1950:12:40" } - ], - "name": "transferFunds", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "metadata": "{\"compiler\":{\"version\":\"0.7.0+commit.9e61f92b\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"chainID\",\"type\":\"uint8\"},{\"internalType\":\"address[]\",\"name\":\"initialRelayers\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"initialRelayerThreshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"destinationChainID\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"originChainID\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"enum Bridge.ProposalStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"dataHash\",\"type\":\"bytes32\"}],\"name\":\"ProposalEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"originChainID\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"enum Bridge.ProposalStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"}],\"name\":\"ProposalVote\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"}],\"name\":\"RelayerAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"}],\"name\":\"RelayerRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newThreshold\",\"type\":\"uint256\"}],\"name\":\"RelayerThresholdChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RELAYER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_chainID\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"_depositCounts\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"_depositRecords\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_expiry\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_fee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint72\",\"name\":\"\",\"type\":\"uint72\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"_hasVotedOnProposal\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint72\",\"name\":\"\",\"type\":\"uint72\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"_proposals\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"_resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_dataHash\",\"type\":\"bytes32\"},{\"internalType\":\"enum Bridge.ProposalStatus\",\"name\":\"_status\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"_proposedBlock\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_relayerThreshold\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"_resourceIDToHandlerAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_totalProposals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_totalRelayers\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayerAddress\",\"type\":\"address\"}],\"name\":\"adminAddRelayer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"adminChangeFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newThreshold\",\"type\":\"uint256\"}],\"name\":\"adminChangeRelayerThreshold\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"adminPauseTransfers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayerAddress\",\"type\":\"address\"}],\"name\":\"adminRemoveRelayer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"handlerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"adminSetBurnable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"handlerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"srcDecimals\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"destDecimals\",\"type\":\"uint8\"}],\"name\":\"adminSetDecimals\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"chainId\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"}],\"name\":\"adminSetDepositNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"handlerAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"depositFunctionSig\",\"type\":\"bytes4\"},{\"internalType\":\"bytes4\",\"name\":\"executeFunctionSig\",\"type\":\"bytes4\"}],\"name\":\"adminSetGenericResource\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"handlerAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"adminSetResource\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"adminUnpauseTransfers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"handlerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOrTokenID\",\"type\":\"uint256\"}],\"name\":\"adminWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"chainID\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"dataHash\",\"type\":\"bytes32\"}],\"name\":\"cancelProposal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"destinationChainID\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"chainID\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"}],\"name\":\"executeProposal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"originChainID\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"dataHash\",\"type\":\"bytes32\"}],\"name\":\"getProposal\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"_resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_dataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"_yesVotes\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"_noVotes\",\"type\":\"address[]\"},{\"internalType\":\"enum Bridge.ProposalStatus\",\"name\":\"_status\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"_proposedBlock\",\"type\":\"uint256\"}],\"internalType\":\"struct Bridge.Proposal\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"}],\"name\":\"isRelayer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"renounceAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable[]\",\"name\":\"addrs\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"transferFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"chainID\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"dataHash\",\"type\":\"bytes32\"}],\"name\":\"voteProposal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"ChainSafe Systems.\",\"kind\":\"dev\",\"methods\":{\"adminAddRelayer(address)\":{\"params\":{\"relayerAddress\":\"Address of relayer to be added.\"}},\"adminChangeFee(uint256)\":{\"params\":{\"newFee\":\"Value {_fee} will be updated to.\"}},\"adminChangeRelayerThreshold(uint256)\":{\"params\":{\"newThreshold\":\"Value {_relayerThreshold} will be changed to.\"}},\"adminRemoveRelayer(address)\":{\"params\":{\"relayerAddress\":\"Address of relayer to be removed.\"}},\"adminSetBurnable(address,address)\":{\"params\":{\"handlerAddress\":\"Address of handler resource will be set for.\",\"tokenAddress\":\"Address of contract to be called when a deposit is made and a deposited is executed.\"}},\"adminSetDecimals(address,address,uint8,uint8)\":{\"params\":{\"handlerAddress\":\"Address of handler resource will be set for.\",\"tokenAddress\":\"Address of contract to be called when a deposit is made and a deposited is executed.\"}},\"adminSetDepositNonce(uint8,uint64)\":{\"params\":{\"chainId\":\"Dest chain id.\",\"depositNonce\":\"Initial deposit nonce.\"}},\"adminSetGenericResource(address,bytes32,address,bytes4,bytes4)\":{\"params\":{\"contractAddress\":\"Address of contract to be called when a deposit is made and a deposited is executed.\",\"handlerAddress\":\"Address of handler resource will be set for.\",\"resourceID\":\"ResourceID to be used when making deposits.\"}},\"adminSetResource(address,bytes32,address)\":{\"params\":{\"handlerAddress\":\"Address of handler resource will be set for.\",\"resourceID\":\"ResourceID to be used when making deposits.\",\"tokenAddress\":\"Address of contract to be called when a deposit is made and a deposited is executed.\"}},\"adminWithdraw(address,address,address,uint256)\":{\"params\":{\"amountOrTokenID\":\"Either the amount of ERC20 tokens or the ERC721 token ID to withdraw.\",\"handlerAddress\":\"Address of handler to withdraw from.\",\"recipient\":\"Address to withdraw tokens to.\",\"tokenAddress\":\"Address of token to withdraw.\"}},\"cancelProposal(uint8,uint64,bytes32)\":{\"params\":{\"chainID\":\"ID of chain deposit originated from.\",\"dataHash\":\"Hash of data originally provided when deposit was made.\",\"depositNonce\":\"ID of deposited generated by origin Bridge contract.\"}},\"constructor\":{\"params\":{\"chainID\":\"ID of chain the Bridge contract exists on.\",\"initialRelayerThreshold\":\"Number of votes needed for a deposit proposal to be considered passed.\",\"initialRelayers\":\"Addresses that should be initially granted the relayer role.\"}},\"deposit(uint8,bytes32,bytes)\":{\"params\":{\"data\":\"Additional data to be passed to specified handler.\",\"destinationChainID\":\"ID of chain deposit will be bridged to.\",\"resourceID\":\"ResourceID used to find address of handler to be used for deposit.\"}},\"executeProposal(uint8,uint64,bytes,bytes32)\":{\"params\":{\"chainID\":\"ID of chain deposit originated from.\",\"data\":\"Data originally provided when deposit was made.\",\"depositNonce\":\"ID of deposited generated by origin Bridge contract.\",\"resourceID\":\"ResourceID to be used when making deposits.\"}},\"getProposal(uint8,uint64,bytes32)\":{\"params\":{\"dataHash\":\"Hash of data to be provided when deposit proposal is executed.\",\"depositNonce\":\"ID of proposal generated by proposal's origin Bridge contract.\",\"originChainID\":\"Chain ID deposit originated from.\"},\"returns\":{\"_0\":\"Proposal which consists of: - _dataHash Hash of data to be provided when deposit proposal is executed. - _yesVotes Number of votes in favor of proposal. - _noVotes Number of votes against proposal. - _status Current status of proposal.\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"isRelayer(address)\":{\"params\":{\"relayer\":\"Address to check.\"}},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"renounceAdmin(address)\":{\"params\":{\"newAdmin\":\"Address that admin role will be granted to.\"}},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"},\"transferFunds(address[],uint256[])\":{\"params\":{\"addrs\":\"Array of addresses to transfer {amounts} to.\",\"amounts\":\"Array of amonuts to transfer to {addrs}.\"}},\"voteProposal(uint8,uint64,bytes32,bytes32)\":{\"params\":{\"chainID\":\"ID of chain deposit originated from.\",\"dataHash\":\"Hash of data provided when deposit was made.\",\"depositNonce\":\"ID of deposited generated by origin Bridge contract.\"}}},\"title\":\"Facilitates deposits, creation and votiing of deposit proposals, and deposit executions.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"adminAddRelayer(address)\":{\"notice\":\"Grants {relayerAddress} the relayer role and increases {_totalRelayer} count.Only callable by an address that currently has the admin role.Emits {RelayerAdded} event.\"},\"adminChangeFee(uint256)\":{\"notice\":\"Changes deposit fee.Only callable by admin.\"},\"adminChangeRelayerThreshold(uint256)\":{\"notice\":\"Modifies the number of votes required for a proposal to be considered passed.Only callable by an address that currently has the admin role.Emits {RelayerThresholdChanged} event.\"},\"adminPauseTransfers()\":{\"notice\":\"Pauses deposits, proposal creation and voting, and deposit executions.Only callable by an address that currently has the admin role.\"},\"adminRemoveRelayer(address)\":{\"notice\":\"Removes relayer role for {relayerAddress} and decreases {_totalRelayer} count.Only callable by an address that currently has the admin role.Emits {RelayerRemoved} event.\"},\"adminSetBurnable(address,address)\":{\"notice\":\"Sets a resource as burnable for handler contracts that use the IERCHandler interface.Only callable by an address that currently has the admin role.\"},\"adminSetDecimals(address,address,uint8,uint8)\":{\"notice\":\"Sets a resource as burnable for handler contracts that use the IERCHandler interface.Only callable by an address that currently has the admin role.\"},\"adminSetDepositNonce(uint8,uint64)\":{\"notice\":\"Sets a initial deposit nonce for dest chan, this is used to migrate to a new bridge contract.\"},\"adminSetGenericResource(address,bytes32,address,bytes4,bytes4)\":{\"notice\":\"Sets a new resource for handler contracts that use the IGenericHandler interface, and maps the {handlerAddress} to {resourceID} in {_resourceIDToHandlerAddress}.Only callable by an address that currently has the admin role.\"},\"adminSetResource(address,bytes32,address)\":{\"notice\":\"Sets a new resource for handler contracts that use the IERCHandler interface, and maps the {handlerAddress} to {resourceID} in {_resourceIDToHandlerAddress}.Only callable by an address that currently has the admin role.\"},\"adminUnpauseTransfers()\":{\"notice\":\"Unpauses deposits, proposal creation and voting, and deposit executions.Only callable by an address that currently has the admin role.\"},\"adminWithdraw(address,address,address,uint256)\":{\"notice\":\"Used to manually withdraw funds from ERC safes.\"},\"cancelProposal(uint8,uint64,bytes32)\":{\"notice\":\"Executes a deposit proposal that is considered passed using a specified handler contract.Only callable by relayers when Bridge is not paused.Proposal must be past expiry threshold.Emits {ProposalEvent} event with status {Cancelled}.\"},\"constructor\":{\"notice\":\"Initializes Bridge, creates and grants {msg.sender} the admin role, creates and grants {initialRelayers} the relayer role.\"},\"deposit(uint8,bytes32,bytes)\":{\"notice\":\"Initiates a transfer using a specified handler contract.Only callable when Bridge is not paused.Emits {Deposit} event.\"},\"executeProposal(uint8,uint64,bytes,bytes32)\":{\"notice\":\"Executes a deposit proposal that is considered passed using a specified handler contract.Only callable by relayers when Bridge is not paused.Proposal must have Passed status.Hash of {data} must equal proposal's {dataHash}.Emits {ProposalEvent} event with status {Executed}.\"},\"getProposal(uint8,uint64,bytes32)\":{\"notice\":\"Returns a proposal.\"},\"isRelayer(address)\":{\"notice\":\"Returns true if {relayer} has the relayer role.\"},\"renounceAdmin(address)\":{\"notice\":\"Removes admin role from {msg.sender} and grants it to {newAdmin}.Only callable by an address that currently has the admin role.\"},\"transferFunds(address[],uint256[])\":{\"notice\":\"Transfers eth in the contract to the specified addresses. The parameters addrs and amounts are mapped 1-1. This means that the address at index 0 for addrs will receive the amount (in WEI) from amounts at index 0.\"},\"voteProposal(uint8,uint64,bytes32,bytes32)\":{\"notice\":\"When called, {msg.sender} will be marked as voting in favor of proposal.Only callable by relayers when Bridge is not paused.Proposal must not have already been passed or executed.{msg.sender} must not have already voted on proposal.Emits {ProposalEvent} event with status indicating the proposal status.Emits {ProposalVote} event.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/Bridge.sol\":\"Bridge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0x4fc155a2f7837603d69a13cfa481eb5e7f5e02cb77e2ec9edbac30986db37988\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0855147e38b5e36288a8df73b8da49132f14ec7abb19041b0c98872263643aaa\",\"dweb:/ipfs/QmSrSysyFUYQq7hbJaJXG7EyZW6ezDBzEJx3SABp6eiJSS\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x28911e614500ae7c607a432a709d35da25f3bc5ddc8bd12b278b66358070c0ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://256c8c8af5eb072bc473226ab2b2187149b8fc04f5f4a4820db22527f5ce8e3c\",\"dweb:/ipfs/QmRvi5BhnL7Rxf85KrJhwM6RRhukm4tzoctRdgQEheNyiN\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"@openzeppelin/contracts/utils/EnumerableSet.sol\":{\"keccak256\":\"0x1562cd9922fbf739edfb979f506809e2743789cbde3177515542161c3d04b164\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4580d57781513d98870d9738c7d39094336e0a70cdb90d68dad549c6ced466ec\",\"dweb:/ipfs/Qmf9YZzzRFuvMnav9dgmeRUpdYMMECiZX8w25sHWVbA18V\"]},\"project:/contracts/Bridge.sol\":{\"keccak256\":\"0xb212d3ed9401a5e1b1dfbcc34f3fd2ff4887ae9ec7b78bfe9017b4ddcf54832e\",\"urls\":[\"bzz-raw://479e8645e9c47fc18dc062a6a56f5cc514d2c304cce2fd9139f8f2b58398d676\",\"dweb:/ipfs/QmPW4Jfxhs8Jq2bzsguQDjyMxUVH7FN7pMeGMXfik8RMLu\"]},\"project:/contracts/interfaces/IBridge.sol\":{\"keccak256\":\"0x002bfbbc5d5598fa59f6b2408ce193b9b262cb81de734d7a950e56a5835c0ace\",\"urls\":[\"bzz-raw://a52087422af2c3f9481d64273adb4aa1dc10797035742ac48e638dd455dc2e61\",\"dweb:/ipfs/QmNnsr5cCXPaYDudWXaP8x4r91XtynRdH1ymEUEtnKybNy\"]},\"project:/contracts/interfaces/IDepositExecute.sol\":{\"keccak256\":\"0x58eb03ea6e50b74064af646139ea0eb923625e9ca249c7b566429b283ff11818\",\"urls\":[\"bzz-raw://bd78d20c816d72dd0685827c9804c2cf78c90d7d2a23e5e2933010fa36affe67\",\"dweb:/ipfs/QmWBjFpqp3NQoF4ad8EtA4iqjox2auNqwWQy2wHkcW112Y\"]},\"project:/contracts/interfaces/IERCHandler.sol\":{\"keccak256\":\"0xf6011e0c383a688ba2b20900073fdea8ff03c48ac2b5e47239b28ab131559937\",\"urls\":[\"bzz-raw://d180ad27c06b300fe9111630210ed5fb56cd4c7da3f039f7c3372ebea06e1790\",\"dweb:/ipfs/QmRBgtVQC8H8EtojZLQhxyPKfWMhL6Y9qyquMao8bxJxeE\"]},\"project:/contracts/interfaces/IGenericHandler.sol\":{\"keccak256\":\"0xe21a9a6933121c92c170b3792d9858b9f627879759e29b71dfac856b7268a10d\",\"urls\":[\"bzz-raw://4ac531c6ff3850972023fd3bdd09e0a2b85c322bba0c5560a8eb634531fae120\",\"dweb:/ipfs/QmXESqB3SrEhY4ozFpG1bsvVD5342SkhYndS9eyq6oSq2r\"]},\"project:/contracts/utils/Pausable.sol\":{\"keccak256\":\"0x324ba0833b7b14615c25127c7f70019a2250a64a988e14249d79d40561b0ff15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://763598a8989b3a7aa9c08734a9f53c236ace5afcc2237e489d3abb44b5eee017\",\"dweb:/ipfs/QmcUX3b7HTBQdWf61upoXyxLyAjaVwEwVLRH9e4skwh6Hu\"]},\"project:/contracts/utils/SafeMath.sol\":{\"keccak256\":\"0xe516d09a959f933045b4d253908d990e89b5533f70e4c4d009e87d8c831fd6b0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4ee0f36a614aec9a2772861ec391e7e1d1ff83b86c79227baa5a698644aeb36\",\"dweb:/ipfs/QmUdM6yrJDXiMfSgM7eYBDsKcoP9EEbdGkoziPpinAr2gG\"]}},\"version\":1}", - "bytecode": "0x60806040523480156200001157600080fd5b5060405162004fbd38038062004fbd83398181016040528101906200003791906200051d565b60008060006101000a81548160ff02191690831515021790555084600260006101000a81548160ff021916908360ff160217905550826003819055508160068190555080600781905550620000966000801b336200015060201b60201c565b620000cb7fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc46000801b6200016660201b60201c565b60008451905060005b818110156200014357620001237fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc48783815181106200010f57fe5b6020026020010151620001ca60201b60201c565b6004600081548092919060010191905055508080600101915050620000d4565b5050505050505062000743565b6200016282826200025960201b60201c565b5050565b806001600084815260200190815260200160002060020154837fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff60405160405180910390a48060016000848152602001908152602001600020600201819055505050565b620002016001600084815260200190815260200160002060020154620001f5620002fd60201b60201c565b6200030560201b60201c565b62000243576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200023a9062000620565b60405180910390fd5b6200025582826200025960201b60201c565b5050565b6200028881600160008581526020019081526020016000206000016200033e60201b620025951790919060201c565b15620002f9576200029e620002fd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600033905090565b60006200033682600160008681526020019081526020016000206000016200037660201b620025c51790919060201c565b905092915050565b60006200036e836000018373ffffffffffffffffffffffffffffffffffffffff1660001b620003ae60201b60201c565b905092915050565b6000620003a6836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6200042860201b60201c565b905092915050565b6000620003c283836200042860201b60201c565b6200041d57826000018290806001815401808255809150506001900390600052602060002001600090919091909150558260000180549050836001016000848152602001908152602001600020819055506001905062000422565b600090505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b6000815190506200045c81620006f5565b92915050565b600082601f8301126200047457600080fd5b81516200048b620004858262000670565b62000642565b91508181835260208401935060208101905083856020840282011115620004b157600080fd5b60005b83811015620004e55781620004ca88826200044b565b845260208401935060208301925050600181019050620004b4565b5050505092915050565b60008151905062000500816200070f565b92915050565b600081519050620005178162000729565b92915050565b600080600080600060a086880312156200053657600080fd5b6000620005468882890162000506565b955050602086015167ffffffffffffffff8111156200056457600080fd5b620005728882890162000462565b94505060406200058588828901620004ef565b93505060606200059888828901620004ef565b9250506080620005ab88828901620004ef565b9150509295509295909350565b6000620005c7602f8362000699565b91507f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60008301527f2061646d696e20746f206772616e7400000000000000000000000000000000006020830152604082019050919050565b600060208201905081810360008301526200063b81620005b8565b9050919050565b6000604051905081810181811067ffffffffffffffff821117156200066657600080fd5b8060405250919050565b600067ffffffffffffffff8211156200068857600080fd5b602082029050602081019050919050565b600082825260208201905092915050565b6000620006b782620006be565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6200070081620006aa565b81146200070c57600080fd5b50565b6200071a81620006de565b81146200072657600080fd5b50565b6200073481620006e8565b81146200074057600080fd5b50565b61486a80620007536000396000f3fe6080604052600436106102465760003560e01c80638c0c263111610139578063beab7131116100b6578063cdb0f73a1161007a578063cdb0f73a146108b6578063d547741f146108df578063d7a9cd7914610908578063e8437ee714610933578063edc20c3c1461095c578063ffaac0eb1461098557610246565b8063beab7131146107cf578063c5b37c22146107fa578063c5ec897014610825578063ca15c87314610850578063cb10f2151461088d57610246565b80639d5773e0116100fd5780639d5773e0146106ea5780639d82dd6314610715578063a217fddf1461073e578063a9cf69fa14610769578063b56bcaf1146107a657610246565b80638c0c2631146105f35780639010d07c1461061c57806391c404ac1461065957806391d1485414610682578063926d7d7f146106bf57610246565b80634e056005116101c7578063780cf0041161018b578063780cf0041461050e5780637febe63f14610537578063802aabe81461057457806380ae1c281461059f57806384db809f146105b657610246565b80634e05600514610414578063505987191461043d578063541d55481461047d5780635c975abb146104ba5780635e1fab0f146104e557610246565b806336568abe1161020e57806336568abe1461031f5780633ee7094a146103485780634454b20d146103855780634603ae38146103ae5780634b0b919d146103d757610246565b806305e2ca171461024b57806317f03ce5146102675780631ff013f114610290578063248a9ca3146102b95780632f2ff15d146102f6575b600080fd5b61026560048036038101906102609190613427565b61099c565b005b34801561027357600080fd5b5061028e600480360381019061028991906134cf565b610bf9565b005b34801561029c57600080fd5b506102b760048036038101906102b2919061351e565b610da6565b005b3480156102c557600080fd5b506102e060048036038101906102db919061326d565b611555565b6040516102ed9190614032565b60405180910390f35b34801561030257600080fd5b5061031d60048036038101906103189190613296565b611575565b005b34801561032b57600080fd5b5061034660048036038101906103419190613296565b6115e9565b005b34801561035457600080fd5b5061036f600480360381019061036a9190613337565b61166c565b60405161037c91906141b7565b60405180910390f35b34801561039157600080fd5b506103ac60048036038101906103a79190613581565b611729565b005b3480156103ba57600080fd5b506103d560048036038101906103d091906131f8565b6119ff565b005b3480156103e357600080fd5b506103fe60048036038101906103f991906133fe565b611af0565b60405161040b9190614518565b60405180910390f35b34801561042057600080fd5b5061043b6004803603810190610436919061330e565b611b17565b005b34801561044957600080fd5b50610464600480360381019061045f9190613373565b611b56565b60405161047494939291906140e4565b60405180910390f35b34801561048957600080fd5b506104a4600480360381019061049f9190612fde565b611ba0565b6040516104b19190614017565b60405180910390f35b3480156104c657600080fd5b506104cf611bd3565b6040516104dc9190614017565b60405180910390f35b3480156104f157600080fd5b5061050c60048036038101906105079190612fde565b611be9565b005b34801561051a57600080fd5b506105356004803603810190610530919061306c565b611c0e565b005b34801561054357600080fd5b5061055e600480360381019061055991906133af565b611c91565b60405161056b9190614017565b60405180910390f35b34801561058057600080fd5b50610589611ccd565b60405161059691906144fd565b60405180910390f35b3480156105ab57600080fd5b506105b4611cd3565b005b3480156105c257600080fd5b506105dd60048036038101906105d8919061326d565b611ce5565b6040516105ea9190613f73565b60405180910390f35b3480156105ff57600080fd5b5061061a60048036038101906106159190613030565b611d18565b005b34801561062857600080fd5b50610643600480360381019061063e91906132d2565b611d95565b6040516106509190613f73565b60405180910390f35b34801561066557600080fd5b50610680600480360381019061067b919061330e565b611dc7565b005b34801561068e57600080fd5b506106a960048036038101906106a49190613296565b611e1e565b6040516106b69190614017565b60405180910390f35b3480156106cb57600080fd5b506106d4611e50565b6040516106e19190614032565b60405180910390f35b3480156106f657600080fd5b506106ff611e74565b60405161070c91906144fd565b60405180910390f35b34801561072157600080fd5b5061073c60048036038101906107379190612fde565b611e7a565b005b34801561074a57600080fd5b50610753611f6e565b6040516107609190614032565b60405180910390f35b34801561077557600080fd5b50610790600480360381019061078b91906134cf565b611f75565b60405161079d91906144db565b60405180910390f35b3480156107b257600080fd5b506107cd60048036038101906107c891906130cf565b612156565b005b3480156107db57600080fd5b506107e46121d9565b6040516107f19190614533565b60405180910390f35b34801561080657600080fd5b5061080f6121ec565b60405161081c91906144fd565b60405180910390f35b34801561083157600080fd5b5061083a6121f2565b60405161084791906144fd565b60405180910390f35b34801561085c57600080fd5b506108776004803603810190610872919061326d565b6121f8565b60405161088491906144fd565b60405180910390f35b34801561089957600080fd5b506108b460048036038101906108af9190613132565b61221f565b005b3480156108c257600080fd5b506108dd60048036038101906108d89190612fde565b6122f1565b005b3480156108eb57600080fd5b5061090660048036038101906109019190613296565b6123e5565b005b34801561091457600080fd5b5061091d612459565b60405161092a91906144fd565b60405180910390f35b34801561093f57600080fd5b5061095a60048036038101906109559190613181565b61245f565b005b34801561096857600080fd5b50610983600480360381019061097e9190613493565b612537565b005b34801561099157600080fd5b5061099a612583565b005b6109a46125f5565b60065434146109e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109df906142fb565b60405180910390fd5b60006009600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610a90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a879061435b565b60405180910390fd5b6000600860008760ff1660ff168152602001908152602001600020600081819054906101000a900467ffffffffffffffff1660010191906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905590508383600a60008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008960ff1660ff1681526020019081526020016000209190610b39929190612caf565b5060008290508073ffffffffffffffffffffffffffffffffffffffff166338995da9878985338a8a6040518763ffffffff1660e01b8152600401610b829695949392919061415b565b600060405180830381600087803b158015610b9c57600080fd5b505af1158015610bb0573d6000803e3d6000fd5b505050508167ffffffffffffffff16868860ff167fdbb69440df8433824a026ef190652f29929eb64b4d1d5d2a69be8afe3e6eaed860405160405180910390a450505050505050565b610c01612645565b60008360ff1660088467ffffffffffffffff1668ffffffffffffffffff16901b1790506000600b60008368ffffffffffffffffff1668ffffffffffffffffff16815260200190815260200160002060008481526020019081526020016000209050600480811115610c6e57fe5b8160040160009054906101000a900460ff166004811115610c8b57fe5b1415610ccc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc39061433b565b60405180910390fd5b600754610cdd4383600501546126c4565b11610d1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d149061439b565b60405180910390fd5b60048160040160006101000a81548160ff02191690836004811115610d3e57fe5b0217905550600480811115610d4f57fe5b8467ffffffffffffffff168660ff167f803c5a12f6bde629cea32e63d4b92d1b560816a6fb72e939d3c89e1cab65041784600001548560010154604051610d979291906140bb565b60405180910390a45050505050565b610dae61270e565b610db66125f5565b60008460ff1660088567ffffffffffffffff1668ffffffffffffffffff16901b1790506000600b60008368ffffffffffffffffff1668ffffffffffffffffff16815260200190815260200160002060008481526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff166009600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610eba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb19061449b565b60405180910390fd5b60018160040160009054906101000a900460ff166004811115610ed957fe5b1115610f1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f11906143fb565b60405180910390fd5b600c60008368ffffffffffffffffff1668ffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610fdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd69061429b565b60405180910390fd5b60008160040160009054906101000a900460ff166004811115610ffe57fe5b141561124c57600560008154600101919050819055506040518060c00160405280858152602001848152602001600167ffffffffffffffff8111801561104357600080fd5b506040519080825280602002602001820160405280156110725781602001602082028036833780820191505090505b508152602001600067ffffffffffffffff8111801561109057600080fd5b506040519080825280602002602001820160405280156110bf5781602001602082028036833780820191505090505b508152602001600160048111156110d257fe5b815260200143815250600b60008468ffffffffffffffffff1668ffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060008201518160000155602082015181600101556040820151816002019080519060200190611145929190612d2f565b506060820151816003019080519060200190611162929190612d2f565b5060808201518160040160006101000a81548160ff0219169083600481111561118757fe5b021790555060a0820151816005015590505033816002016000815481106111aa57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160048111156111ff57fe5b8567ffffffffffffffff168760ff167f803c5a12f6bde629cea32e63d4b92d1b560816a6fb72e939d3c89e1cab650417878760405161123f9291906140bb565b60405180910390a461138f565b60075461125d4383600501546126c4565b11156112e25760048160040160006101000a81548160ff0219169083600481111561128457fe5b021790555060048081111561129557fe5b8567ffffffffffffffff168760ff167f803c5a12f6bde629cea32e63d4b92d1b560816a6fb72e939d3c89e1cab65041787876040516112d59291906140bb565b60405180910390a461138e565b80600101548314611328576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131f9061447b565b60405180910390fd5b80600201339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b60048081111561139b57fe5b8160040160009054906101000a900460ff1660048111156113b857fe5b1461154d576001600c60008468ffffffffffffffffff1668ffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060040160009054906101000a900460ff16600481111561146a57fe5b8567ffffffffffffffff168760ff167f25f8daaa4635a7729927ba3f5b3d59cc3320aca7c32c9db4e7ca7b9574343640876040516114a89190614032565b60405180910390a460016003541115806114cb5750600354816002018054905010155b1561154c5760028160040160006101000a81548160ff021916908360048111156114f157fe5b02179055506002600481111561150357fe5b8567ffffffffffffffff168760ff167f803c5a12f6bde629cea32e63d4b92d1b560816a6fb72e939d3c89e1cab65041787876040516115439291906140bb565b60405180910390a45b5b505050505050565b600060016000838152602001908152602001600020600201549050919050565b61159c6001600084815260200190815260200160002060020154611597612779565b611e1e565b6115db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d29061427b565b60405180910390fd5b6115e58282612781565b5050565b6115f1612779565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461165e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611655906144bb565b60405180910390fd5b6116688282612815565b5050565b600a602052816000526040600020602052806000526040600020600091509150508054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117215780601f106116f657610100808354040283529160200191611721565b820191906000526020600020905b81548152906001019060200180831161170457829003601f168201915b505050505081565b61173161270e565b6117396125f5565b60006009600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008660ff1660088767ffffffffffffffff1668ffffffffffffffffff16901b17905060008286866040516020016117ab93929190613f49565b6040516020818303038152906040528051906020012090506000600b60008468ffffffffffffffffff1668ffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002090506002600481111561180e57fe5b8160040160009054906101000a900460ff16600481111561182b57fe5b1461186b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611862906141fb565b60405180910390fd5b806001015482146118b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a89061431b565b60405180910390fd5b60038160040160006101000a81548160ff021916908360048111156118d257fe5b02179055506000600960008360000154815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663e248cff283600001548a8a6040518463ffffffff1660e01b815260040161195493929190614129565b600060405180830381600087803b15801561196e57600080fd5b505af1158015611982573d6000803e3d6000fd5b505050508160040160009054906101000a900460ff1660048111156119a357fe5b8967ffffffffffffffff168b60ff167f803c5a12f6bde629cea32e63d4b92d1b560816a6fb72e939d3c89e1cab650417856000015486600101546040516119eb9291906140bb565b60405180910390a450505050505050505050565b611a076128a9565b818190508484905014611a4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a469061425b565b60405180910390fd5b600084849050905060005b81811015611ae857858582818110611a6e57fe5b9050602002016020810190611a839190613007565b73ffffffffffffffffffffffffffffffffffffffff166108fc858584818110611aa857fe5b905060200201359081150290604051600060405180830381858888f19350505050158015611ada573d6000803e3d6000fd5b508080600101915050611a5a565b505050505050565b60086020528060005260406000206000915054906101000a900467ffffffffffffffff1681565b611b1f6128a9565b80600381905550807fa20d6b84cd798a24038be305eff8a45ca82ef54a2aa2082005d8e14c0a4746c860405160405180910390a250565b600b602052816000526040600020602052806000526040600020600091509150508060000154908060010154908060040160009054906101000a900460ff16908060050154905084565b6000611bcc7fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc483611e1e565b9050919050565b60008060009054906101000a900460ff16905090565b611bf16128a9565b611bfe6000801b82611575565b611c0b6000801b336115e9565b50565b611c166128a9565b60008490508073ffffffffffffffffffffffffffffffffffffffff1663d9caed128585856040518463ffffffff1660e01b8152600401611c5893929190613fa9565b600060405180830381600087803b158015611c7257600080fd5b505af1158015611c86573d6000803e3d6000fd5b505050505050505050565b600c602052826000526040600020602052816000526040600020602052806000526040600020600092509250509054906101000a900460ff1681565b60045481565b611cdb6128a9565b611ce36128f7565b565b60096020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611d206128a9565b60008290508073ffffffffffffffffffffffffffffffffffffffff166307b7ed99836040518263ffffffff1660e01b8152600401611d5e9190613f73565b600060405180830381600087803b158015611d7857600080fd5b505af1158015611d8c573d6000803e3d6000fd5b50505050505050565b6000611dbf826001600086815260200190815260200160002060000161295290919063ffffffff16565b905092915050565b611dcf6128a9565b806006541415611e14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0b9061445b565b60405180910390fd5b8060068190555050565b6000611e4882600160008681526020019081526020016000206000016125c590919063ffffffff16565b905092915050565b7fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc481565b60055481565b611e826128a9565b611eac7fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc482611e1e565b611eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee2906142db565b60405180910390fd5b611f157fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc4826123e5565b8073ffffffffffffffffffffffffffffffffffffffff167f10e1f7ce9fd7d1b90a66d13a2ab3cb8dd7f29f3f8d520b143b063ccfbab6906b60405160405180910390a26004600081548092919060019003919050555050565b6000801b81565b611f7d612db9565b60008460ff1660088567ffffffffffffffff1668ffffffffffffffffff16901b179050600b60008268ffffffffffffffffff1668ffffffffffffffffff16815260200190815260200160002060008481526020019081526020016000206040518060c001604052908160008201548152602001600182015481526020016002820180548060200260200160405190810160405280929190818152602001828054801561207e57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311612034575b505050505081526020016003820180548060200260200160405190810160405280929190818152602001828054801561210c57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116120c2575b505050505081526020016004820160009054906101000a900460ff16600481111561213357fe5b600481111561213e57fe5b81526020016005820154815250509150509392505050565b61215e6128a9565b60008490508073ffffffffffffffffffffffffffffffffffffffff1663f47127448585856040518463ffffffff1660e01b81526004016121a093929190613fe0565b600060405180830381600087803b1580156121ba57600080fd5b505af11580156121ce573d6000803e3d6000fd5b505050505050505050565b600260009054906101000a900460ff1681565b60065481565b60075481565b60006122186001600084815260200190815260200160002060000161296c565b9050919050565b6122276128a9565b826009600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008390508073ffffffffffffffffffffffffffffffffffffffff1663b8fa373684846040518363ffffffff1660e01b81526004016122b992919061404d565b600060405180830381600087803b1580156122d357600080fd5b505af11580156122e7573d6000803e3d6000fd5b5050505050505050565b6122f96128a9565b6123237fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc482611e1e565b15612363576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235a906143db565b60405180910390fd5b61238d7fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc482611575565b8073ffffffffffffffffffffffffffffffffffffffff167f03580ee9f53a62b7cb409a2cb56f9be87747dd15017afc5cef6eef321e4fb2c560405160405180910390a260046000815480929190600101919050555050565b61240c6001600084815260200190815260200160002060020154612407612779565b611e1e565b61244b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124429061437b565b60405180910390fd5b6124558282612815565b5050565b60035481565b6124676128a9565b846009600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008590508073ffffffffffffffffffffffffffffffffffffffff1663bba8185a868686866040518563ffffffff1660e01b81526004016124fd9493929190614076565b600060405180830381600087803b15801561251757600080fd5b505af115801561252b573d6000803e3d6000fd5b50505050505050505050565b61253f6128a9565b80600860008460ff1660ff16815260200190815260200160002060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b61258b6128a9565b612593612981565b565b60006125bd836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6129dc565b905092915050565b60006125ed836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612a4c565b905092915050565b60008054906101000a900460ff1615612643576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263a906143bb565b60405180910390fd5b565b6126526000801b33611e1e565b8061268357506126827fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc433611e1e565b5b6126c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b99061423b565b60405180910390fd5b565b600061270683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612a6f565b905092915050565b6127387fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc433611e1e565b612777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276e9061441b565b60405180910390fd5b565b600033905090565b6127a9816001600085815260200190815260200160002060000161259590919063ffffffff16565b15612811576127b6612779565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b61283d8160016000858152602001908152602001600020600001612aca90919063ffffffff16565b156128a55761284a612779565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6128b66000801b33611e1e565b6128f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ec9061443b565b60405180910390fd5b565b6128ff6125f5565b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258336040516129489190613f8e565b60405180910390a1565b60006129618360000183612afa565b60001c905092915050565b600061297a82600001612b67565b9050919050565b612989612b78565b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa336040516129d29190613f8e565b60405180910390a1565b60006129e88383612a4c565b612a41578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050612a46565b600090505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b6000838311158290612ab7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aae91906141d9565b60405180910390fd5b5060008385039050809150509392505050565b6000612af2836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612bc7565b905092915050565b600081836000018054905011612b45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3c9061421b565b60405180910390fd5b826000018281548110612b5457fe5b9060005260206000200154905092915050565b600081600001805490509050919050565b60008054906101000a900460ff16612bc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bbc906142bb565b60405180910390fd5b565b60008083600101600084815260200190815260200160002054905060008114612ca35760006001820390506000600186600001805490500390506000866000018281548110612c1257fe5b9060005260206000200154905080876000018481548110612c2f57fe5b9060005260206000200181905550600183018760010160008381526020019081526020016000208190555086600001805480612c6757fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050612ca9565b60009150505b92915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612cf057803560ff1916838001178555612d1e565b82800160010185558215612d1e579182015b82811115612d1d578235825591602001919060010190612d02565b5b509050612d2b9190612e00565b5090565b828054828255906000526020600020908101928215612da8579160200282015b82811115612da75782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190612d4f565b5b509050612db59190612e1d565b5090565b6040518060c001604052806000801916815260200160008019168152602001606081526020016060815260200160006004811115612df357fe5b8152602001600081525090565b5b80821115612e19576000816000905550600101612e01565b5090565b5b80821115612e5457600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101612e1e565b5090565b600081359050612e678161477c565b92915050565b600081359050612e7c81614793565b92915050565b60008083601f840112612e9457600080fd5b8235905067ffffffffffffffff811115612ead57600080fd5b602083019150836020820283011115612ec557600080fd5b9250929050565b60008083601f840112612ede57600080fd5b8235905067ffffffffffffffff811115612ef757600080fd5b602083019150836020820283011115612f0f57600080fd5b9250929050565b600081359050612f25816147aa565b92915050565b600081359050612f3a816147c1565b92915050565b60008083601f840112612f5257600080fd5b8235905067ffffffffffffffff811115612f6b57600080fd5b602083019150836001820283011115612f8357600080fd5b9250929050565b600081359050612f99816147d8565b92915050565b600081359050612fae816147ef565b92915050565b600081359050612fc381614806565b92915050565b600081359050612fd88161481d565b92915050565b600060208284031215612ff057600080fd5b6000612ffe84828501612e58565b91505092915050565b60006020828403121561301957600080fd5b600061302784828501612e6d565b91505092915050565b6000806040838503121561304357600080fd5b600061305185828601612e58565b925050602061306285828601612e58565b9150509250929050565b6000806000806080858703121561308257600080fd5b600061309087828801612e58565b94505060206130a187828801612e58565b93505060406130b287828801612e58565b92505060606130c387828801612f8a565b91505092959194509250565b600080600080608085870312156130e557600080fd5b60006130f387828801612e58565b945050602061310487828801612e58565b935050604061311587828801612fc9565b925050606061312687828801612fc9565b91505092959194509250565b60008060006060848603121561314757600080fd5b600061315586828701612e58565b935050602061316686828701612f16565b925050604061317786828701612e58565b9150509250925092565b600080600080600060a0868803121561319957600080fd5b60006131a788828901612e58565b95505060206131b888828901612f16565b94505060406131c988828901612e58565b93505060606131da88828901612f2b565b92505060806131eb88828901612f2b565b9150509295509295909350565b6000806000806040858703121561320e57600080fd5b600085013567ffffffffffffffff81111561322857600080fd5b61323487828801612e82565b9450945050602085013567ffffffffffffffff81111561325357600080fd5b61325f87828801612ecc565b925092505092959194509250565b60006020828403121561327f57600080fd5b600061328d84828501612f16565b91505092915050565b600080604083850312156132a957600080fd5b60006132b785828601612f16565b92505060206132c885828601612e58565b9150509250929050565b600080604083850312156132e557600080fd5b60006132f385828601612f16565b925050602061330485828601612f8a565b9150509250929050565b60006020828403121561332057600080fd5b600061332e84828501612f8a565b91505092915050565b6000806040838503121561334a57600080fd5b600061335885828601612f9f565b925050602061336985828601612fc9565b9150509250929050565b6000806040838503121561338657600080fd5b600061339485828601612fb4565b92505060206133a585828601612f16565b9150509250929050565b6000806000606084860312156133c457600080fd5b60006133d286828701612fb4565b93505060206133e386828701612f16565b92505060406133f486828701612e58565b9150509250925092565b60006020828403121561341057600080fd5b600061341e84828501612fc9565b91505092915050565b6000806000806060858703121561343d57600080fd5b600061344b87828801612fc9565b945050602061345c87828801612f16565b935050604085013567ffffffffffffffff81111561347957600080fd5b61348587828801612f40565b925092505092959194509250565b600080604083850312156134a657600080fd5b60006134b485828601612fc9565b92505060206134c585828601612f9f565b9150509250929050565b6000806000606084860312156134e457600080fd5b60006134f286828701612fc9565b935050602061350386828701612f9f565b925050604061351486828701612f16565b9150509250925092565b6000806000806080858703121561353457600080fd5b600061354287828801612fc9565b945050602061355387828801612f9f565b935050604061356487828801612f16565b925050606061357587828801612f16565b91505092959194509250565b60008060008060006080868803121561359957600080fd5b60006135a788828901612fc9565b95505060206135b888828901612f9f565b945050604086013567ffffffffffffffff8111156135d557600080fd5b6135e188828901612f40565b935093505060606135f488828901612f16565b9150509295509295909350565b600061360d8383613628565b60208301905092915050565b613622816146a3565b82525050565b613631816145ca565b82525050565b613640816145ca565b82525050565b613657613652826145ca565b61472d565b82525050565b60006136688261455e565b613672818561458c565b935061367d8361454e565b8060005b838110156136ae5781516136958882613601565b97506136a08361457f565b925050600181019050613681565b5085935050505092915050565b6136c4816145ee565b82525050565b6136d3816145fa565b82525050565b6136e2816145fa565b82525050565b6136f181614604565b82525050565b6000613703838561459d565b93506137108385846146eb565b61371983614751565b840190509392505050565b600061373083856145ae565b935061373d8385846146eb565b82840190509392505050565b600061375482614569565b61375e818561459d565b935061376e8185602086016146fa565b61377781614751565b840191505092915050565b61378b816146b5565b82525050565b61379a816146b5565b82525050565b60006137ab82614574565b6137b581856145b9565b93506137c58185602086016146fa565b6137ce81614751565b840191505092915050565b60006137e6601c836145b9565b91507f70726f706f73616c20616c7265616479207472616e73666572726564000000006000830152602082019050919050565b60006138266022836145b9565b91507f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e60008301527f64730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061388c601e836145b9565b91507f73656e646572206973206e6f742072656c61796572206f722061646d696e00006000830152602082019050919050565b60006138cc6026836145b9565b91507f6c656e677468206f66206164647265737320616e6420616d6f756e747320646960008301527f736d6174636800000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613932602f836145b9565b91507f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60008301527f2061646d696e20746f206772616e7400000000000000000000000000000000006020830152604082019050919050565b60006139986015836145b9565b91507f72656c6179657220616c726561647920766f74656400000000000000000000006000830152602082019050919050565b60006139d86014836145b9565b91507f5061757361626c653a206e6f74207061757365640000000000000000000000006000830152602082019050919050565b6000613a18601f836145b9565b91507f6164647220646f65736e277420686176652072656c6179657220726f6c6521006000830152602082019050919050565b6000613a586016836145b9565b91507f496e636f72726563742066656520737570706c696564000000000000000000006000830152602082019050919050565b6000613a98601b836145b9565b91507f6461746120646f65736e2774206d6174636820646174616861736800000000006000830152602082019050919050565b6000613ad8601a836145b9565b91507f50726f706f73616c20616c72656164792063616e63656c6c65640000000000006000830152602082019050919050565b6000613b186020836145b9565b91507f7265736f757263654944206e6f74206d617070656420746f2068616e646c65726000830152602082019050919050565b6000613b586030836145b9565b91507f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60008301527f2061646d696e20746f207265766f6b65000000000000000000000000000000006020830152604082019050919050565b6000613bbe6020836145b9565b91507f50726f706f73616c206e6f7420617420657870697279207468726573686f6c646000830152602082019050919050565b6000613bfe6010836145b9565b91507f5061757361626c653a20706175736564000000000000000000000000000000006000830152602082019050919050565b6000613c3e601e836145b9565b91507f6164647220616c7265616479206861732072656c6179657220726f6c652100006000830152602082019050919050565b6000613c7e602a836145b9565b91507f70726f706f73616c20616c7265616479207061737365642f657865637574656460008301527f2f63616e63656c6c6564000000000000000000000000000000000000000000006020830152604082019050919050565b6000613ce46020836145b9565b91507f73656e64657220646f65736e277420686176652072656c6179657220726f6c656000830152602082019050919050565b6000613d24601e836145b9565b91507f73656e64657220646f65736e277420686176652061646d696e20726f6c6500006000830152602082019050919050565b6000613d64601f836145b9565b91507f43757272656e742066656520697320657175616c20746f206e657720666565006000830152602082019050919050565b6000613da46011836145b9565b91507f6461746168617368206d69736d617463680000000000000000000000000000006000830152602082019050919050565b6000613de46019836145b9565b91507f6e6f2068616e646c657220666f72207265736f757263654944000000000000006000830152602082019050919050565b6000613e24602f836145b9565b91507f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008301527f20726f6c657320666f722073656c6600000000000000000000000000000000006020830152604082019050919050565b600060c083016000830151613e9560008601826136ca565b506020830151613ea860208601826136ca565b5060408301518482036040860152613ec0828261365d565b91505060608301518482036060860152613eda828261365d565b9150506080830151613eef6080860182613782565b5060a0830151613f0260a0860182613f0d565b508091505092915050565b613f1681614663565b82525050565b613f2581614663565b82525050565b613f348161466d565b82525050565b613f4381614696565b82525050565b6000613f558286613646565b601482019150613f66828486613724565b9150819050949350505050565b6000602082019050613f886000830184613637565b92915050565b6000602082019050613fa36000830184613619565b92915050565b6000606082019050613fbe6000830186613637565b613fcb6020830185613637565b613fd86040830184613f1c565b949350505050565b6000606082019050613ff56000830186613637565b6140026020830185613f3a565b61400f6040830184613f3a565b949350505050565b600060208201905061402c60008301846136bb565b92915050565b600060208201905061404760008301846136d9565b92915050565b600060408201905061406260008301856136d9565b61406f6020830184613637565b9392505050565b600060808201905061408b60008301876136d9565b6140986020830186613637565b6140a560408301856136e8565b6140b260608301846136e8565b95945050505050565b60006040820190506140d060008301856136d9565b6140dd60208301846136d9565b9392505050565b60006080820190506140f960008301876136d9565b61410660208301866136d9565b6141136040830185613791565b6141206060830184613f1c565b95945050505050565b600060408201905061413e60008301866136d9565b81810360208301526141518184866136f7565b9050949350505050565b600060a08201905061417060008301896136d9565b61417d6020830188613f3a565b61418a6040830187613f2b565b6141976060830186613619565b81810360808301526141aa8184866136f7565b9050979650505050505050565b600060208201905081810360008301526141d18184613749565b905092915050565b600060208201905081810360008301526141f381846137a0565b905092915050565b60006020820190508181036000830152614214816137d9565b9050919050565b6000602082019050818103600083015261423481613819565b9050919050565b600060208201905081810360008301526142548161387f565b9050919050565b60006020820190508181036000830152614274816138bf565b9050919050565b6000602082019050818103600083015261429481613925565b9050919050565b600060208201905081810360008301526142b48161398b565b9050919050565b600060208201905081810360008301526142d4816139cb565b9050919050565b600060208201905081810360008301526142f481613a0b565b9050919050565b6000602082019050818103600083015261431481613a4b565b9050919050565b6000602082019050818103600083015261433481613a8b565b9050919050565b6000602082019050818103600083015261435481613acb565b9050919050565b6000602082019050818103600083015261437481613b0b565b9050919050565b6000602082019050818103600083015261439481613b4b565b9050919050565b600060208201905081810360008301526143b481613bb1565b9050919050565b600060208201905081810360008301526143d481613bf1565b9050919050565b600060208201905081810360008301526143f481613c31565b9050919050565b6000602082019050818103600083015261441481613c71565b9050919050565b6000602082019050818103600083015261443481613cd7565b9050919050565b6000602082019050818103600083015261445481613d17565b9050919050565b6000602082019050818103600083015261447481613d57565b9050919050565b6000602082019050818103600083015261449481613d97565b9050919050565b600060208201905081810360008301526144b481613dd7565b9050919050565b600060208201905081810360008301526144d481613e17565b9050919050565b600060208201905081810360008301526144f58184613e7d565b905092915050565b60006020820190506145126000830184613f1c565b92915050565b600060208201905061452d6000830184613f2b565b92915050565b60006020820190506145486000830184613f3a565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006145d582614643565b9050919050565b60006145e782614643565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600081905061463e8261476f565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b600068ffffffffffffffffff82169050919050565b600060ff82169050919050565b60006146ae826146c7565b9050919050565b60006146c082614630565b9050919050565b60006146d2826146d9565b9050919050565b60006146e482614643565b9050919050565b82818337600083830152505050565b60005b838110156147185780820151818401526020810190506146fd565b83811115614727576000848401525b50505050565b60006147388261473f565b9050919050565b600061474a82614762565b9050919050565b6000601f19601f8301169050919050565b60008160601b9050919050565b6005811061477957fe5b50565b614785816145ca565b811461479057600080fd5b50565b61479c816145dc565b81146147a757600080fd5b50565b6147b3816145fa565b81146147be57600080fd5b50565b6147ca81614604565b81146147d557600080fd5b50565b6147e181614663565b81146147ec57600080fd5b50565b6147f88161466d565b811461480357600080fd5b50565b61480f81614681565b811461481a57600080fd5b50565b61482681614696565b811461483157600080fd5b5056fea26469706673582212203256a0a953193bee29c2ede2ad70d537ceb5a796ca33f52dafcf3ad69270749464736f6c63430007000033", - "deployedBytecode": "0x6080604052600436106102465760003560e01c80638c0c263111610139578063beab7131116100b6578063cdb0f73a1161007a578063cdb0f73a146108b6578063d547741f146108df578063d7a9cd7914610908578063e8437ee714610933578063edc20c3c1461095c578063ffaac0eb1461098557610246565b8063beab7131146107cf578063c5b37c22146107fa578063c5ec897014610825578063ca15c87314610850578063cb10f2151461088d57610246565b80639d5773e0116100fd5780639d5773e0146106ea5780639d82dd6314610715578063a217fddf1461073e578063a9cf69fa14610769578063b56bcaf1146107a657610246565b80638c0c2631146105f35780639010d07c1461061c57806391c404ac1461065957806391d1485414610682578063926d7d7f146106bf57610246565b80634e056005116101c7578063780cf0041161018b578063780cf0041461050e5780637febe63f14610537578063802aabe81461057457806380ae1c281461059f57806384db809f146105b657610246565b80634e05600514610414578063505987191461043d578063541d55481461047d5780635c975abb146104ba5780635e1fab0f146104e557610246565b806336568abe1161020e57806336568abe1461031f5780633ee7094a146103485780634454b20d146103855780634603ae38146103ae5780634b0b919d146103d757610246565b806305e2ca171461024b57806317f03ce5146102675780631ff013f114610290578063248a9ca3146102b95780632f2ff15d146102f6575b600080fd5b61026560048036038101906102609190613427565b61099c565b005b34801561027357600080fd5b5061028e600480360381019061028991906134cf565b610bf9565b005b34801561029c57600080fd5b506102b760048036038101906102b2919061351e565b610da6565b005b3480156102c557600080fd5b506102e060048036038101906102db919061326d565b611555565b6040516102ed9190614032565b60405180910390f35b34801561030257600080fd5b5061031d60048036038101906103189190613296565b611575565b005b34801561032b57600080fd5b5061034660048036038101906103419190613296565b6115e9565b005b34801561035457600080fd5b5061036f600480360381019061036a9190613337565b61166c565b60405161037c91906141b7565b60405180910390f35b34801561039157600080fd5b506103ac60048036038101906103a79190613581565b611729565b005b3480156103ba57600080fd5b506103d560048036038101906103d091906131f8565b6119ff565b005b3480156103e357600080fd5b506103fe60048036038101906103f991906133fe565b611af0565b60405161040b9190614518565b60405180910390f35b34801561042057600080fd5b5061043b6004803603810190610436919061330e565b611b17565b005b34801561044957600080fd5b50610464600480360381019061045f9190613373565b611b56565b60405161047494939291906140e4565b60405180910390f35b34801561048957600080fd5b506104a4600480360381019061049f9190612fde565b611ba0565b6040516104b19190614017565b60405180910390f35b3480156104c657600080fd5b506104cf611bd3565b6040516104dc9190614017565b60405180910390f35b3480156104f157600080fd5b5061050c60048036038101906105079190612fde565b611be9565b005b34801561051a57600080fd5b506105356004803603810190610530919061306c565b611c0e565b005b34801561054357600080fd5b5061055e600480360381019061055991906133af565b611c91565b60405161056b9190614017565b60405180910390f35b34801561058057600080fd5b50610589611ccd565b60405161059691906144fd565b60405180910390f35b3480156105ab57600080fd5b506105b4611cd3565b005b3480156105c257600080fd5b506105dd60048036038101906105d8919061326d565b611ce5565b6040516105ea9190613f73565b60405180910390f35b3480156105ff57600080fd5b5061061a60048036038101906106159190613030565b611d18565b005b34801561062857600080fd5b50610643600480360381019061063e91906132d2565b611d95565b6040516106509190613f73565b60405180910390f35b34801561066557600080fd5b50610680600480360381019061067b919061330e565b611dc7565b005b34801561068e57600080fd5b506106a960048036038101906106a49190613296565b611e1e565b6040516106b69190614017565b60405180910390f35b3480156106cb57600080fd5b506106d4611e50565b6040516106e19190614032565b60405180910390f35b3480156106f657600080fd5b506106ff611e74565b60405161070c91906144fd565b60405180910390f35b34801561072157600080fd5b5061073c60048036038101906107379190612fde565b611e7a565b005b34801561074a57600080fd5b50610753611f6e565b6040516107609190614032565b60405180910390f35b34801561077557600080fd5b50610790600480360381019061078b91906134cf565b611f75565b60405161079d91906144db565b60405180910390f35b3480156107b257600080fd5b506107cd60048036038101906107c891906130cf565b612156565b005b3480156107db57600080fd5b506107e46121d9565b6040516107f19190614533565b60405180910390f35b34801561080657600080fd5b5061080f6121ec565b60405161081c91906144fd565b60405180910390f35b34801561083157600080fd5b5061083a6121f2565b60405161084791906144fd565b60405180910390f35b34801561085c57600080fd5b506108776004803603810190610872919061326d565b6121f8565b60405161088491906144fd565b60405180910390f35b34801561089957600080fd5b506108b460048036038101906108af9190613132565b61221f565b005b3480156108c257600080fd5b506108dd60048036038101906108d89190612fde565b6122f1565b005b3480156108eb57600080fd5b5061090660048036038101906109019190613296565b6123e5565b005b34801561091457600080fd5b5061091d612459565b60405161092a91906144fd565b60405180910390f35b34801561093f57600080fd5b5061095a60048036038101906109559190613181565b61245f565b005b34801561096857600080fd5b50610983600480360381019061097e9190613493565b612537565b005b34801561099157600080fd5b5061099a612583565b005b6109a46125f5565b60065434146109e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109df906142fb565b60405180910390fd5b60006009600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610a90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a879061435b565b60405180910390fd5b6000600860008760ff1660ff168152602001908152602001600020600081819054906101000a900467ffffffffffffffff1660010191906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905590508383600a60008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008960ff1660ff1681526020019081526020016000209190610b39929190612caf565b5060008290508073ffffffffffffffffffffffffffffffffffffffff166338995da9878985338a8a6040518763ffffffff1660e01b8152600401610b829695949392919061415b565b600060405180830381600087803b158015610b9c57600080fd5b505af1158015610bb0573d6000803e3d6000fd5b505050508167ffffffffffffffff16868860ff167fdbb69440df8433824a026ef190652f29929eb64b4d1d5d2a69be8afe3e6eaed860405160405180910390a450505050505050565b610c01612645565b60008360ff1660088467ffffffffffffffff1668ffffffffffffffffff16901b1790506000600b60008368ffffffffffffffffff1668ffffffffffffffffff16815260200190815260200160002060008481526020019081526020016000209050600480811115610c6e57fe5b8160040160009054906101000a900460ff166004811115610c8b57fe5b1415610ccc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc39061433b565b60405180910390fd5b600754610cdd4383600501546126c4565b11610d1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d149061439b565b60405180910390fd5b60048160040160006101000a81548160ff02191690836004811115610d3e57fe5b0217905550600480811115610d4f57fe5b8467ffffffffffffffff168660ff167f803c5a12f6bde629cea32e63d4b92d1b560816a6fb72e939d3c89e1cab65041784600001548560010154604051610d979291906140bb565b60405180910390a45050505050565b610dae61270e565b610db66125f5565b60008460ff1660088567ffffffffffffffff1668ffffffffffffffffff16901b1790506000600b60008368ffffffffffffffffff1668ffffffffffffffffff16815260200190815260200160002060008481526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff166009600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610eba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb19061449b565b60405180910390fd5b60018160040160009054906101000a900460ff166004811115610ed957fe5b1115610f1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f11906143fb565b60405180910390fd5b600c60008368ffffffffffffffffff1668ffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610fdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd69061429b565b60405180910390fd5b60008160040160009054906101000a900460ff166004811115610ffe57fe5b141561124c57600560008154600101919050819055506040518060c00160405280858152602001848152602001600167ffffffffffffffff8111801561104357600080fd5b506040519080825280602002602001820160405280156110725781602001602082028036833780820191505090505b508152602001600067ffffffffffffffff8111801561109057600080fd5b506040519080825280602002602001820160405280156110bf5781602001602082028036833780820191505090505b508152602001600160048111156110d257fe5b815260200143815250600b60008468ffffffffffffffffff1668ffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060008201518160000155602082015181600101556040820151816002019080519060200190611145929190612d2f565b506060820151816003019080519060200190611162929190612d2f565b5060808201518160040160006101000a81548160ff0219169083600481111561118757fe5b021790555060a0820151816005015590505033816002016000815481106111aa57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160048111156111ff57fe5b8567ffffffffffffffff168760ff167f803c5a12f6bde629cea32e63d4b92d1b560816a6fb72e939d3c89e1cab650417878760405161123f9291906140bb565b60405180910390a461138f565b60075461125d4383600501546126c4565b11156112e25760048160040160006101000a81548160ff0219169083600481111561128457fe5b021790555060048081111561129557fe5b8567ffffffffffffffff168760ff167f803c5a12f6bde629cea32e63d4b92d1b560816a6fb72e939d3c89e1cab65041787876040516112d59291906140bb565b60405180910390a461138e565b80600101548314611328576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131f9061447b565b60405180910390fd5b80600201339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b60048081111561139b57fe5b8160040160009054906101000a900460ff1660048111156113b857fe5b1461154d576001600c60008468ffffffffffffffffff1668ffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060040160009054906101000a900460ff16600481111561146a57fe5b8567ffffffffffffffff168760ff167f25f8daaa4635a7729927ba3f5b3d59cc3320aca7c32c9db4e7ca7b9574343640876040516114a89190614032565b60405180910390a460016003541115806114cb5750600354816002018054905010155b1561154c5760028160040160006101000a81548160ff021916908360048111156114f157fe5b02179055506002600481111561150357fe5b8567ffffffffffffffff168760ff167f803c5a12f6bde629cea32e63d4b92d1b560816a6fb72e939d3c89e1cab65041787876040516115439291906140bb565b60405180910390a45b5b505050505050565b600060016000838152602001908152602001600020600201549050919050565b61159c6001600084815260200190815260200160002060020154611597612779565b611e1e565b6115db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d29061427b565b60405180910390fd5b6115e58282612781565b5050565b6115f1612779565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461165e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611655906144bb565b60405180910390fd5b6116688282612815565b5050565b600a602052816000526040600020602052806000526040600020600091509150508054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117215780601f106116f657610100808354040283529160200191611721565b820191906000526020600020905b81548152906001019060200180831161170457829003601f168201915b505050505081565b61173161270e565b6117396125f5565b60006009600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008660ff1660088767ffffffffffffffff1668ffffffffffffffffff16901b17905060008286866040516020016117ab93929190613f49565b6040516020818303038152906040528051906020012090506000600b60008468ffffffffffffffffff1668ffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002090506002600481111561180e57fe5b8160040160009054906101000a900460ff16600481111561182b57fe5b1461186b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611862906141fb565b60405180910390fd5b806001015482146118b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a89061431b565b60405180910390fd5b60038160040160006101000a81548160ff021916908360048111156118d257fe5b02179055506000600960008360000154815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663e248cff283600001548a8a6040518463ffffffff1660e01b815260040161195493929190614129565b600060405180830381600087803b15801561196e57600080fd5b505af1158015611982573d6000803e3d6000fd5b505050508160040160009054906101000a900460ff1660048111156119a357fe5b8967ffffffffffffffff168b60ff167f803c5a12f6bde629cea32e63d4b92d1b560816a6fb72e939d3c89e1cab650417856000015486600101546040516119eb9291906140bb565b60405180910390a450505050505050505050565b611a076128a9565b818190508484905014611a4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a469061425b565b60405180910390fd5b600084849050905060005b81811015611ae857858582818110611a6e57fe5b9050602002016020810190611a839190613007565b73ffffffffffffffffffffffffffffffffffffffff166108fc858584818110611aa857fe5b905060200201359081150290604051600060405180830381858888f19350505050158015611ada573d6000803e3d6000fd5b508080600101915050611a5a565b505050505050565b60086020528060005260406000206000915054906101000a900467ffffffffffffffff1681565b611b1f6128a9565b80600381905550807fa20d6b84cd798a24038be305eff8a45ca82ef54a2aa2082005d8e14c0a4746c860405160405180910390a250565b600b602052816000526040600020602052806000526040600020600091509150508060000154908060010154908060040160009054906101000a900460ff16908060050154905084565b6000611bcc7fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc483611e1e565b9050919050565b60008060009054906101000a900460ff16905090565b611bf16128a9565b611bfe6000801b82611575565b611c0b6000801b336115e9565b50565b611c166128a9565b60008490508073ffffffffffffffffffffffffffffffffffffffff1663d9caed128585856040518463ffffffff1660e01b8152600401611c5893929190613fa9565b600060405180830381600087803b158015611c7257600080fd5b505af1158015611c86573d6000803e3d6000fd5b505050505050505050565b600c602052826000526040600020602052816000526040600020602052806000526040600020600092509250509054906101000a900460ff1681565b60045481565b611cdb6128a9565b611ce36128f7565b565b60096020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611d206128a9565b60008290508073ffffffffffffffffffffffffffffffffffffffff166307b7ed99836040518263ffffffff1660e01b8152600401611d5e9190613f73565b600060405180830381600087803b158015611d7857600080fd5b505af1158015611d8c573d6000803e3d6000fd5b50505050505050565b6000611dbf826001600086815260200190815260200160002060000161295290919063ffffffff16565b905092915050565b611dcf6128a9565b806006541415611e14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0b9061445b565b60405180910390fd5b8060068190555050565b6000611e4882600160008681526020019081526020016000206000016125c590919063ffffffff16565b905092915050565b7fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc481565b60055481565b611e826128a9565b611eac7fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc482611e1e565b611eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee2906142db565b60405180910390fd5b611f157fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc4826123e5565b8073ffffffffffffffffffffffffffffffffffffffff167f10e1f7ce9fd7d1b90a66d13a2ab3cb8dd7f29f3f8d520b143b063ccfbab6906b60405160405180910390a26004600081548092919060019003919050555050565b6000801b81565b611f7d612db9565b60008460ff1660088567ffffffffffffffff1668ffffffffffffffffff16901b179050600b60008268ffffffffffffffffff1668ffffffffffffffffff16815260200190815260200160002060008481526020019081526020016000206040518060c001604052908160008201548152602001600182015481526020016002820180548060200260200160405190810160405280929190818152602001828054801561207e57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311612034575b505050505081526020016003820180548060200260200160405190810160405280929190818152602001828054801561210c57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116120c2575b505050505081526020016004820160009054906101000a900460ff16600481111561213357fe5b600481111561213e57fe5b81526020016005820154815250509150509392505050565b61215e6128a9565b60008490508073ffffffffffffffffffffffffffffffffffffffff1663f47127448585856040518463ffffffff1660e01b81526004016121a093929190613fe0565b600060405180830381600087803b1580156121ba57600080fd5b505af11580156121ce573d6000803e3d6000fd5b505050505050505050565b600260009054906101000a900460ff1681565b60065481565b60075481565b60006122186001600084815260200190815260200160002060000161296c565b9050919050565b6122276128a9565b826009600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008390508073ffffffffffffffffffffffffffffffffffffffff1663b8fa373684846040518363ffffffff1660e01b81526004016122b992919061404d565b600060405180830381600087803b1580156122d357600080fd5b505af11580156122e7573d6000803e3d6000fd5b5050505050505050565b6122f96128a9565b6123237fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc482611e1e565b15612363576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235a906143db565b60405180910390fd5b61238d7fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc482611575565b8073ffffffffffffffffffffffffffffffffffffffff167f03580ee9f53a62b7cb409a2cb56f9be87747dd15017afc5cef6eef321e4fb2c560405160405180910390a260046000815480929190600101919050555050565b61240c6001600084815260200190815260200160002060020154612407612779565b611e1e565b61244b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124429061437b565b60405180910390fd5b6124558282612815565b5050565b60035481565b6124676128a9565b846009600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008590508073ffffffffffffffffffffffffffffffffffffffff1663bba8185a868686866040518563ffffffff1660e01b81526004016124fd9493929190614076565b600060405180830381600087803b15801561251757600080fd5b505af115801561252b573d6000803e3d6000fd5b50505050505050505050565b61253f6128a9565b80600860008460ff1660ff16815260200190815260200160002060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b61258b6128a9565b612593612981565b565b60006125bd836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6129dc565b905092915050565b60006125ed836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612a4c565b905092915050565b60008054906101000a900460ff1615612643576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263a906143bb565b60405180910390fd5b565b6126526000801b33611e1e565b8061268357506126827fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc433611e1e565b5b6126c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b99061423b565b60405180910390fd5b565b600061270683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612a6f565b905092915050565b6127387fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc433611e1e565b612777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276e9061441b565b60405180910390fd5b565b600033905090565b6127a9816001600085815260200190815260200160002060000161259590919063ffffffff16565b15612811576127b6612779565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b61283d8160016000858152602001908152602001600020600001612aca90919063ffffffff16565b156128a55761284a612779565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6128b66000801b33611e1e565b6128f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ec9061443b565b60405180910390fd5b565b6128ff6125f5565b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258336040516129489190613f8e565b60405180910390a1565b60006129618360000183612afa565b60001c905092915050565b600061297a82600001612b67565b9050919050565b612989612b78565b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa336040516129d29190613f8e565b60405180910390a1565b60006129e88383612a4c565b612a41578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050612a46565b600090505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b6000838311158290612ab7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aae91906141d9565b60405180910390fd5b5060008385039050809150509392505050565b6000612af2836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612bc7565b905092915050565b600081836000018054905011612b45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3c9061421b565b60405180910390fd5b826000018281548110612b5457fe5b9060005260206000200154905092915050565b600081600001805490509050919050565b60008054906101000a900460ff16612bc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bbc906142bb565b60405180910390fd5b565b60008083600101600084815260200190815260200160002054905060008114612ca35760006001820390506000600186600001805490500390506000866000018281548110612c1257fe5b9060005260206000200154905080876000018481548110612c2f57fe5b9060005260206000200181905550600183018760010160008381526020019081526020016000208190555086600001805480612c6757fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050612ca9565b60009150505b92915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612cf057803560ff1916838001178555612d1e565b82800160010185558215612d1e579182015b82811115612d1d578235825591602001919060010190612d02565b5b509050612d2b9190612e00565b5090565b828054828255906000526020600020908101928215612da8579160200282015b82811115612da75782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190612d4f565b5b509050612db59190612e1d565b5090565b6040518060c001604052806000801916815260200160008019168152602001606081526020016060815260200160006004811115612df357fe5b8152602001600081525090565b5b80821115612e19576000816000905550600101612e01565b5090565b5b80821115612e5457600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101612e1e565b5090565b600081359050612e678161477c565b92915050565b600081359050612e7c81614793565b92915050565b60008083601f840112612e9457600080fd5b8235905067ffffffffffffffff811115612ead57600080fd5b602083019150836020820283011115612ec557600080fd5b9250929050565b60008083601f840112612ede57600080fd5b8235905067ffffffffffffffff811115612ef757600080fd5b602083019150836020820283011115612f0f57600080fd5b9250929050565b600081359050612f25816147aa565b92915050565b600081359050612f3a816147c1565b92915050565b60008083601f840112612f5257600080fd5b8235905067ffffffffffffffff811115612f6b57600080fd5b602083019150836001820283011115612f8357600080fd5b9250929050565b600081359050612f99816147d8565b92915050565b600081359050612fae816147ef565b92915050565b600081359050612fc381614806565b92915050565b600081359050612fd88161481d565b92915050565b600060208284031215612ff057600080fd5b6000612ffe84828501612e58565b91505092915050565b60006020828403121561301957600080fd5b600061302784828501612e6d565b91505092915050565b6000806040838503121561304357600080fd5b600061305185828601612e58565b925050602061306285828601612e58565b9150509250929050565b6000806000806080858703121561308257600080fd5b600061309087828801612e58565b94505060206130a187828801612e58565b93505060406130b287828801612e58565b92505060606130c387828801612f8a565b91505092959194509250565b600080600080608085870312156130e557600080fd5b60006130f387828801612e58565b945050602061310487828801612e58565b935050604061311587828801612fc9565b925050606061312687828801612fc9565b91505092959194509250565b60008060006060848603121561314757600080fd5b600061315586828701612e58565b935050602061316686828701612f16565b925050604061317786828701612e58565b9150509250925092565b600080600080600060a0868803121561319957600080fd5b60006131a788828901612e58565b95505060206131b888828901612f16565b94505060406131c988828901612e58565b93505060606131da88828901612f2b565b92505060806131eb88828901612f2b565b9150509295509295909350565b6000806000806040858703121561320e57600080fd5b600085013567ffffffffffffffff81111561322857600080fd5b61323487828801612e82565b9450945050602085013567ffffffffffffffff81111561325357600080fd5b61325f87828801612ecc565b925092505092959194509250565b60006020828403121561327f57600080fd5b600061328d84828501612f16565b91505092915050565b600080604083850312156132a957600080fd5b60006132b785828601612f16565b92505060206132c885828601612e58565b9150509250929050565b600080604083850312156132e557600080fd5b60006132f385828601612f16565b925050602061330485828601612f8a565b9150509250929050565b60006020828403121561332057600080fd5b600061332e84828501612f8a565b91505092915050565b6000806040838503121561334a57600080fd5b600061335885828601612f9f565b925050602061336985828601612fc9565b9150509250929050565b6000806040838503121561338657600080fd5b600061339485828601612fb4565b92505060206133a585828601612f16565b9150509250929050565b6000806000606084860312156133c457600080fd5b60006133d286828701612fb4565b93505060206133e386828701612f16565b92505060406133f486828701612e58565b9150509250925092565b60006020828403121561341057600080fd5b600061341e84828501612fc9565b91505092915050565b6000806000806060858703121561343d57600080fd5b600061344b87828801612fc9565b945050602061345c87828801612f16565b935050604085013567ffffffffffffffff81111561347957600080fd5b61348587828801612f40565b925092505092959194509250565b600080604083850312156134a657600080fd5b60006134b485828601612fc9565b92505060206134c585828601612f9f565b9150509250929050565b6000806000606084860312156134e457600080fd5b60006134f286828701612fc9565b935050602061350386828701612f9f565b925050604061351486828701612f16565b9150509250925092565b6000806000806080858703121561353457600080fd5b600061354287828801612fc9565b945050602061355387828801612f9f565b935050604061356487828801612f16565b925050606061357587828801612f16565b91505092959194509250565b60008060008060006080868803121561359957600080fd5b60006135a788828901612fc9565b95505060206135b888828901612f9f565b945050604086013567ffffffffffffffff8111156135d557600080fd5b6135e188828901612f40565b935093505060606135f488828901612f16565b9150509295509295909350565b600061360d8383613628565b60208301905092915050565b613622816146a3565b82525050565b613631816145ca565b82525050565b613640816145ca565b82525050565b613657613652826145ca565b61472d565b82525050565b60006136688261455e565b613672818561458c565b935061367d8361454e565b8060005b838110156136ae5781516136958882613601565b97506136a08361457f565b925050600181019050613681565b5085935050505092915050565b6136c4816145ee565b82525050565b6136d3816145fa565b82525050565b6136e2816145fa565b82525050565b6136f181614604565b82525050565b6000613703838561459d565b93506137108385846146eb565b61371983614751565b840190509392505050565b600061373083856145ae565b935061373d8385846146eb565b82840190509392505050565b600061375482614569565b61375e818561459d565b935061376e8185602086016146fa565b61377781614751565b840191505092915050565b61378b816146b5565b82525050565b61379a816146b5565b82525050565b60006137ab82614574565b6137b581856145b9565b93506137c58185602086016146fa565b6137ce81614751565b840191505092915050565b60006137e6601c836145b9565b91507f70726f706f73616c20616c7265616479207472616e73666572726564000000006000830152602082019050919050565b60006138266022836145b9565b91507f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e60008301527f64730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061388c601e836145b9565b91507f73656e646572206973206e6f742072656c61796572206f722061646d696e00006000830152602082019050919050565b60006138cc6026836145b9565b91507f6c656e677468206f66206164647265737320616e6420616d6f756e747320646960008301527f736d6174636800000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613932602f836145b9565b91507f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60008301527f2061646d696e20746f206772616e7400000000000000000000000000000000006020830152604082019050919050565b60006139986015836145b9565b91507f72656c6179657220616c726561647920766f74656400000000000000000000006000830152602082019050919050565b60006139d86014836145b9565b91507f5061757361626c653a206e6f74207061757365640000000000000000000000006000830152602082019050919050565b6000613a18601f836145b9565b91507f6164647220646f65736e277420686176652072656c6179657220726f6c6521006000830152602082019050919050565b6000613a586016836145b9565b91507f496e636f72726563742066656520737570706c696564000000000000000000006000830152602082019050919050565b6000613a98601b836145b9565b91507f6461746120646f65736e2774206d6174636820646174616861736800000000006000830152602082019050919050565b6000613ad8601a836145b9565b91507f50726f706f73616c20616c72656164792063616e63656c6c65640000000000006000830152602082019050919050565b6000613b186020836145b9565b91507f7265736f757263654944206e6f74206d617070656420746f2068616e646c65726000830152602082019050919050565b6000613b586030836145b9565b91507f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60008301527f2061646d696e20746f207265766f6b65000000000000000000000000000000006020830152604082019050919050565b6000613bbe6020836145b9565b91507f50726f706f73616c206e6f7420617420657870697279207468726573686f6c646000830152602082019050919050565b6000613bfe6010836145b9565b91507f5061757361626c653a20706175736564000000000000000000000000000000006000830152602082019050919050565b6000613c3e601e836145b9565b91507f6164647220616c7265616479206861732072656c6179657220726f6c652100006000830152602082019050919050565b6000613c7e602a836145b9565b91507f70726f706f73616c20616c7265616479207061737365642f657865637574656460008301527f2f63616e63656c6c6564000000000000000000000000000000000000000000006020830152604082019050919050565b6000613ce46020836145b9565b91507f73656e64657220646f65736e277420686176652072656c6179657220726f6c656000830152602082019050919050565b6000613d24601e836145b9565b91507f73656e64657220646f65736e277420686176652061646d696e20726f6c6500006000830152602082019050919050565b6000613d64601f836145b9565b91507f43757272656e742066656520697320657175616c20746f206e657720666565006000830152602082019050919050565b6000613da46011836145b9565b91507f6461746168617368206d69736d617463680000000000000000000000000000006000830152602082019050919050565b6000613de46019836145b9565b91507f6e6f2068616e646c657220666f72207265736f757263654944000000000000006000830152602082019050919050565b6000613e24602f836145b9565b91507f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008301527f20726f6c657320666f722073656c6600000000000000000000000000000000006020830152604082019050919050565b600060c083016000830151613e9560008601826136ca565b506020830151613ea860208601826136ca565b5060408301518482036040860152613ec0828261365d565b91505060608301518482036060860152613eda828261365d565b9150506080830151613eef6080860182613782565b5060a0830151613f0260a0860182613f0d565b508091505092915050565b613f1681614663565b82525050565b613f2581614663565b82525050565b613f348161466d565b82525050565b613f4381614696565b82525050565b6000613f558286613646565b601482019150613f66828486613724565b9150819050949350505050565b6000602082019050613f886000830184613637565b92915050565b6000602082019050613fa36000830184613619565b92915050565b6000606082019050613fbe6000830186613637565b613fcb6020830185613637565b613fd86040830184613f1c565b949350505050565b6000606082019050613ff56000830186613637565b6140026020830185613f3a565b61400f6040830184613f3a565b949350505050565b600060208201905061402c60008301846136bb565b92915050565b600060208201905061404760008301846136d9565b92915050565b600060408201905061406260008301856136d9565b61406f6020830184613637565b9392505050565b600060808201905061408b60008301876136d9565b6140986020830186613637565b6140a560408301856136e8565b6140b260608301846136e8565b95945050505050565b60006040820190506140d060008301856136d9565b6140dd60208301846136d9565b9392505050565b60006080820190506140f960008301876136d9565b61410660208301866136d9565b6141136040830185613791565b6141206060830184613f1c565b95945050505050565b600060408201905061413e60008301866136d9565b81810360208301526141518184866136f7565b9050949350505050565b600060a08201905061417060008301896136d9565b61417d6020830188613f3a565b61418a6040830187613f2b565b6141976060830186613619565b81810360808301526141aa8184866136f7565b9050979650505050505050565b600060208201905081810360008301526141d18184613749565b905092915050565b600060208201905081810360008301526141f381846137a0565b905092915050565b60006020820190508181036000830152614214816137d9565b9050919050565b6000602082019050818103600083015261423481613819565b9050919050565b600060208201905081810360008301526142548161387f565b9050919050565b60006020820190508181036000830152614274816138bf565b9050919050565b6000602082019050818103600083015261429481613925565b9050919050565b600060208201905081810360008301526142b48161398b565b9050919050565b600060208201905081810360008301526142d4816139cb565b9050919050565b600060208201905081810360008301526142f481613a0b565b9050919050565b6000602082019050818103600083015261431481613a4b565b9050919050565b6000602082019050818103600083015261433481613a8b565b9050919050565b6000602082019050818103600083015261435481613acb565b9050919050565b6000602082019050818103600083015261437481613b0b565b9050919050565b6000602082019050818103600083015261439481613b4b565b9050919050565b600060208201905081810360008301526143b481613bb1565b9050919050565b600060208201905081810360008301526143d481613bf1565b9050919050565b600060208201905081810360008301526143f481613c31565b9050919050565b6000602082019050818103600083015261441481613c71565b9050919050565b6000602082019050818103600083015261443481613cd7565b9050919050565b6000602082019050818103600083015261445481613d17565b9050919050565b6000602082019050818103600083015261447481613d57565b9050919050565b6000602082019050818103600083015261449481613d97565b9050919050565b600060208201905081810360008301526144b481613dd7565b9050919050565b600060208201905081810360008301526144d481613e17565b9050919050565b600060208201905081810360008301526144f58184613e7d565b905092915050565b60006020820190506145126000830184613f1c565b92915050565b600060208201905061452d6000830184613f2b565b92915050565b60006020820190506145486000830184613f3a565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006145d582614643565b9050919050565b60006145e782614643565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600081905061463e8261476f565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b600068ffffffffffffffffff82169050919050565b600060ff82169050919050565b60006146ae826146c7565b9050919050565b60006146c082614630565b9050919050565b60006146d2826146d9565b9050919050565b60006146e482614643565b9050919050565b82818337600083830152505050565b60005b838110156147185780820151818401526020810190506146fd565b83811115614727576000848401525b50505050565b60006147388261473f565b9050919050565b600061474a82614762565b9050919050565b6000601f19601f8301169050919050565b60008160601b9050919050565b6005811061477957fe5b50565b614785816145ca565b811461479057600080fd5b50565b61479c816145dc565b81146147a757600080fd5b50565b6147b3816145fa565b81146147be57600080fd5b50565b6147ca81614604565b81146147d557600080fd5b50565b6147e181614663565b81146147ec57600080fd5b50565b6147f88161466d565b811461480357600080fd5b50565b61480f81614681565b811461481a57600080fd5b50565b61482681614696565b811461483157600080fd5b5056fea26469706673582212203256a0a953193bee29c2ede2ad70d537ceb5a796ca33f52dafcf3ad69270749464736f6c63430007000033", - "immutableReferences": {}, - "sourceMap": "479:19487:4:-:0;;;3562:582;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;771:5:9;761:7;;:15;;;;;;;;;;;;;;;;;;3711:7:4;3700:8;;:18;;;;;;;;;;;;;;;;;;3748:23;3728:17;:43;;;;3788:3;3781:4;:10;;;;3811:6;3801:7;:16;;;;3828:42;1772:4:0;3839:18:4;;3859:10;3828;;;:42;;:::i;:::-;3880:47;2412:25;1772:4:0;3908:18:4;;3880:13;;;:47;;:::i;:::-;3938:24;3965:15;:22;3938:49;;4002:6;3997:141;4014:19;4010:1;:23;3997:141;;;4054:43;2412:25;4078:15;4094:1;4078:18;;;;;;;;;;;;;;4054:9;;;:43;;:::i;:::-;4111:14;;:16;;;;;;;;;;;;;4035:3;;;;;;;3997:141;;;;3562:582;;;;;;479:19487;;6588:110:0;6666:25;6677:4;6683:7;6666:10;;;:25;;:::i;:::-;6588:110;;:::o;6823:196::-;6958:9;6934:6;:12;6941:4;6934:12;;;;;;;;;;;:22;;;6928:4;6911:57;;;;;;;;;;7003:9;6978:6;:12;6985:4;6978:12;;;;;;;;;;;:22;;:34;;;;6823:196;;:::o;4644:223::-;4727:45;4735:6;:12;4742:4;4735:12;;;;;;;;;;;:22;;;4759:12;:10;;;:12;;:::i;:::-;4727:7;;;:45;;:::i;:::-;4719:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;4835:25;4846:4;4852:7;4835:10;;;:25;;:::i;:::-;4644:223;;:::o;7025:184::-;7098:33;7123:7;7098:6;:12;7105:4;7098:12;;;;;;;;;;;:20;;:24;;;;;;:33;;;;:::i;:::-;7094:109;;;7179:12;:10;;;:12;;:::i;:::-;7152:40;;7170:7;7152:40;;7164:4;7152:40;;;;;;;;;;7094:109;7025:184;;:::o;598:104:2:-;651:15;685:10;678:17;;598:104;:::o;2950:137:0:-;3019:4;3042:38;3072:7;3042:6;:12;3049:4;3042:12;;;;;;;;;;;:20;;:29;;;;;;:38;;;;:::i;:::-;3035:45;;2950:137;;;;:::o;6429:150:3:-;6499:4;6522:50;6527:3;:10;;6563:5;6547:23;;6539:32;;6522:4;;;:50;;:::i;:::-;6515:57;;6429:150;;;;:::o;6984:165::-;7064:4;7087:55;7097:3;:10;;7133:5;7117:23;;7109:32;;7087:9;;;:55;;:::i;:::-;7080:62;;6984:165;;;;:::o;1640:404::-;1703:4;1724:21;1734:3;1739:5;1724:9;;;:21;;:::i;:::-;1719:319;;1761:3;:11;;1778:5;1761:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1941:3;:11;;:18;;;;1919:3;:12;;:19;1932:5;1919:19;;;;;;;;;;;:40;;;;1980:4;1973:11;;;;1719:319;2022:5;2015:12;;1640:404;;;;;:::o;3805:127::-;3878:4;3924:1;3901:3;:12;;:19;3914:5;3901:19;;;;;;;;;;;;:24;;3894:31;;3805:127;;;;:::o;5:134:-1:-;;89:6;83:13;74:22;;101:33;128:5;101:33;:::i;:::-;68:71;;;;:::o;164:722::-;;292:3;285:4;277:6;273:17;269:27;259:2;;310:1;307;300:12;259:2;340:6;334:13;362:80;377:64;434:6;377:64;:::i;:::-;362:80;:::i;:::-;353:89;;459:5;484:6;477:5;470:21;514:4;506:6;502:17;492:27;;536:4;531:3;527:14;520:21;;589:6;636:3;628:4;620:6;616:17;611:3;607:27;604:36;601:2;;;653:1;650;643:12;601:2;678:1;663:217;688:6;685:1;682:13;663:217;;;746:3;768:48;812:3;800:10;768:48;:::i;:::-;763:3;756:61;840:4;835:3;831:14;824:21;;868:4;863:3;859:14;852:21;;720:160;710:1;707;703:9;698:14;;663:217;;;667:14;252:634;;;;;;;:::o;894:134::-;;978:6;972:13;963:22;;990:33;1017:5;990:33;:::i;:::-;957:71;;;;:::o;1035:130::-;;1117:6;1111:13;1102:22;;1129:31;1154:5;1129:31;:::i;:::-;1096:69;;;;:::o;1172:934::-;;;;;;1378:3;1366:9;1357:7;1353:23;1349:33;1346:2;;;1395:1;1392;1385:12;1346:2;1430:1;1447:62;1501:7;1492:6;1481:9;1477:22;1447:62;:::i;:::-;1437:72;;1409:106;1567:2;1556:9;1552:18;1546:25;1591:18;1583:6;1580:30;1577:2;;;1623:1;1620;1613:12;1577:2;1643:89;1724:7;1715:6;1704:9;1700:22;1643:89;:::i;:::-;1633:99;;1525:213;1769:2;1787:64;1843:7;1834:6;1823:9;1819:22;1787:64;:::i;:::-;1777:74;;1748:109;1888:2;1906:64;1962:7;1953:6;1942:9;1938:22;1906:64;:::i;:::-;1896:74;;1867:109;2007:3;2026:64;2082:7;2073:6;2062:9;2058:22;2026:64;:::i;:::-;2016:74;;1986:110;1340:766;;;;;;;;:::o;2114:384::-;;2274:67;2338:2;2333:3;2274:67;:::i;:::-;2267:74;;2374:34;2370:1;2365:3;2361:11;2354:55;2443:17;2438:2;2433:3;2429:12;2422:39;2489:2;2484:3;2480:12;2473:19;;2260:238;;;:::o;2506:416::-;;2706:2;2695:9;2691:18;2683:26;;2756:9;2750:4;2746:20;2742:1;2731:9;2727:17;2720:47;2781:131;2907:4;2781:131;:::i;:::-;2773:139;;2677:245;;;:::o;2929:256::-;;2991:2;2985:9;2975:19;;3029:4;3021:6;3017:17;3128:6;3116:10;3113:22;3092:18;3080:10;3077:34;3074:62;3071:2;;;3149:1;3146;3139:12;3071:2;3169:10;3165:2;3158:22;2969:216;;;;:::o;3192:304::-;;3351:18;3343:6;3340:30;3337:2;;;3383:1;3380;3373:12;3337:2;3418:4;3410:6;3406:17;3398:25;;3481:4;3475;3471:15;3463:23;;3274:222;;;:::o;3504:163::-;;3619:6;3614:3;3607:19;3656:4;3651:3;3647:14;3632:29;;3600:67;;;;:::o;3675:91::-;;3737:24;3755:5;3737:24;:::i;:::-;3726:35;;3720:46;;;:::o;3773:121::-;;3846:42;3839:5;3835:54;3824:65;;3818:76;;;:::o;3901:72::-;;3963:5;3952:16;;3946:27;;;:::o;3980:81::-;;4051:4;4044:5;4040:16;4029:27;;4023:38;;;:::o;4068:117::-;4137:24;4155:5;4137:24;:::i;:::-;4130:5;4127:35;4117:2;;4176:1;4173;4166:12;4117:2;4111:74;:::o;4192:117::-;4261:24;4279:5;4261:24;:::i;:::-;4254:5;4251:35;4241:2;;4300:1;4297;4290:12;4241:2;4235:74;:::o;4316:113::-;4383:22;4399:5;4383:22;:::i;:::-;4376:5;4373:33;4363:2;;4420:1;4417;4410:12;4363:2;4357:72;:::o;479:19487:4:-;;;;;;;", - "deployedSourceMap": "479:19487:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12729:696;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17001:631;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14089:2369;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4282:112:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4644:223;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5818:205;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1291:65:4;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18291:944;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19625:338;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1083:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5667:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1427:65;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;4271:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;878:76:9;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4641:170:4;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11996:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1577:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;606:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4999:75;;;;;;;;;;;;;:::i;:::-;;1172:62;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9261:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3965:136:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11474:154:4;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2950:137:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2373:64:4;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;641:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6734:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1727:49:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11062:258:4;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9852:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;539:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;677:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;702:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3255:125:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7565:298:4;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6144:284;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5101:226:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;568:32:4;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8411:459;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10339:140;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5264:79;;;;;;;;;;;;;:::i;:::-;;12729:696;1175:16:9;:14;:16::i;:::-;12875:4:4::1;;12862:9;:17;12854:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;12917:15;12935:27;:39;12963:10;12935:39;;;;;;;;;;;;;;;;;;;;;12917:57;;13011:1;12992:21;;:7;:21;;;;12984:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;13061:19;13085:14;:34;13100:18;13085:34;;;;;;;;;;;;;;;;13083:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13061:58;;13181:4;;13129:15;:29;13145:12;13129:29;;;;;;;;;;;;;;;:49;13159:18;13129:49;;;;;;;;;;;;;;;:56;;;;;;;:::i;:::-;;13196:30;13245:7;13196:57;;13263:14;:22;;;13286:10;13298:18;13318:12;13332:10;13344:4;;13263:86;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13405:12;13365:53;;13393:10;13373:18;13365:53;;;;;;;;;;;;1201:1:9;;;12729:696:4::0;;;;:::o;17001:631::-;2551:21;:19;:21::i;:::-;17115:17:::1;17172:7;17165:15;;17160:1;17143:12;17136:20;;:25;;;;17135:45;17115:65;;17190:25;17218:10;:22;17229:10;17218:22;;;;;;;;;;;;;;;:32;17241:8;17218:32;;;;;;;;;;;17190:60;;17289:24;17269:44:::0;::::1;;;;;;;:8;:16;;;;;;;;;;;;:44;;;;;;;;;;17261:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;17407:7;;17362:42;17366:12;17380:8;:23;;;17362:3;:42::i;:::-;:52;17354:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;17481:24;17462:8;:16;;;:43;;;;;;;;;;;;;;;;;;;;;;;;17557:24;17520:104:::0;::::1;;;;;;;17543:12;17520:104;;17534:7;17520:104;;;17583:8;:20;;;17605:8;:18;;;17520:104;;;;;;;:::i;:::-;;;;;;;;2582:1;;17001:631:::0;;;:::o;14089:2369::-;2630:15;:13;:15::i;:::-;1175:16:9::1;:14;:16::i;:::-;14232:17:4::2;14289:7;14282:15;;14277:1;14260:12;14253:20;;:25;;;;14252:45;14232:65;;14307:25;14335:10;:22;14346:10;14335:22;;;;;;;;;;;;;;;:32;14358:8;14335:32;;;;;;;;;;;14307:60;;14437:1;14386:53;;:27;:39;14414:10;14386:39;;;;;;;;;;;;;;;;;;;;;:53;;;;14378:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;14513:1;14492:8;:16;;;;;;;;;;;;14487:22;;;;;;;;:27;;14479:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;14580:19;:31;14600:10;14580:31;;;;;;;;;;;;;;;:41;14612:8;14580:41;;;;;;;;;;;:53;14622:10;14580:53;;;;;;;;;;;;;;;;;;;;;;;;;14579:54;14571:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;14700:1;14679:8;:16;;;;;;;;;;;;14674:22;;;;;;;;:27;14670:1158;;;14719:15;;14717:17;;;;;;;;;;;14783:295;;;;;;;;14824:10;14783:295;;;;14864:8;14783:295;;;;14916:1;14902:16;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14783:295;;;;14961:1;14947:16;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14783:295;;;;14991:21;14783:295;;;;;;;;;;;;15047:12;14783:295;;::::0;14748:10:::2;:22;14759:10;14748:22;;;;;;;;;;;;;;;:32;14771:8;14748:32;;;;;;;;;;;:330;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15117:10;15093:8;:18;;15112:1;15093:21;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;15183:21;15146:81;;;;;;;;15169:12;15146:81;;15160:7;15146:81;;;15206:10;15218:8;15146:81;;;;;;;:::i;:::-;;;;;;;;14670:1158;;;15307:7;;15262:42;15266:12;15280:8;:23;;;15262:3;:42::i;:::-;:52;15258:559;;;15519:24;15500:8;:16;;;:43;;;;;;;;;;;;;;;;;;;;;;;;15603:24;15566:84:::0;::::2;;;;;;;15589:12;15566:84;;15580:7;15566:84;;;15629:10;15641:8;15566:84;;;;;;;:::i;:::-;;;;;;;;15258:559;;;15709:8;:18;;;15697:8;:30;15689:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;15767:8;:18;;15791:10;15767:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15258:559;14670:1158;15861:24;15841:44:::0;::::2;;;;;;;:8;:16;;;;;;;;;;;;:44;;;;;;;;;15837:614;;15957:4;15901:19;:31;15921:10;15901:31;;;;;;;;;;;;;;;:41;15933:8;15901:41;;;;;;;;;;;:53;15943:10;15901:53;;;;;;;;;;;;;;;;:60;;;;;;;;;;;;;;;;;;16016:8;:16;;;;;;;;;;;;15980:65;;;;;;;;16002:12;15980:65;;15993:7;15980:65;;;16034:10;15980:65;;;;;;:::i;:::-;;;;;;;;16210:1;16189:17;;:22;;:72;;;;16244:17;;16215:8;:18;;:25;;;;:46;;16189:72;16185:256;;;16300:21;16281:8;:16;;;:40;;;;;;;;;;;;;;;;;;;;;;;;16382:21;16345:81;;;;;;;;16368:12;16345:81;;16359:7;16345:81;;;16405:10;16417:8;16345:81;;;;;;;:::i;:::-;;;;;;;;16185:256;15837:614;1201:1:9;;14089:2369:4::0;;;;:::o;4282:112:0:-;4339:7;4365:6;:12;4372:4;4365:12;;;;;;;;;;;:22;;;4358:29;;4282:112;;;:::o;4644:223::-;4727:45;4735:6;:12;4742:4;4735:12;;;;;;;;;;;:22;;;4759:12;:10;:12::i;:::-;4727:7;:45::i;:::-;4719:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;4835:25;4846:4;4852:7;4835:10;:25::i;:::-;4644:223;;:::o;5818:205::-;5915:12;:10;:12::i;:::-;5904:23;;:7;:23;;;5896:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;5990:26;6002:4;6008:7;5990:11;:26::i;:::-;5818:205;;:::o;1291:65:4:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;18291:944::-;2630:15;:13;:15::i;:::-;1175:16:9::1;:14;:16::i;:::-;18439:15:4::2;18457:27;:39;18485:10;18457:39;;;;;;;;;;;;;;;;;;;;;18439:57;;18506:17;18563:7;18556:15;;18551:1;18534:12;18527:20;;:25;;;;18526:45;18506:65;;18581:16;18627:7;18636:4;;18610:31;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;18600:42;;;;;;18581:61;;18652:25;18680:10;:22;18691:10;18680:22;;;;;;;;;;;;;;;:32;18703:8;18680:32;;;;;;;;;;;18652:60;;18751:21;18731:41;;;;;;;;:8;:16;;;;;;;;;;;;:41;;;;;;;;;18723:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;18835:8;:18;;;18823:8;:30;18815:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;18915:23;18896:8;:16;;;:42;;;;;;;;;;;;;;;;;;;;;;;;18949:30;18998:27;:49;19026:8;:20;;;18998:49;;;;;;;;;;;;;;;;;;;;;18949:99;;19058:14;:30;;;19089:8;:20;;;19111:4;;19058:58;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;19169:8;:16;;;;;;;;;;;;19132:96;;;;;;;;19155:12;19132:96;;19146:7;19132:96;;;19187:8;:20;;;19209:8;:18;;;19132:96;;;;;;;:::i;:::-;;;;;;;;1201:1:9;;;;;18291:944:4::0;;;;;:::o;19625:338::-;2475:12;:10;:12::i;:::-;19760:7:::1;;:14;;19744:5;;:12;;:30;19736:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;19827:14;19844:5;;:12;;19827:29;;19871:6;19866:91;19887:9;19883:1;:13;19866:91;;;19917:5;;19923:1;19917:8;;;;;;;;;;;;;;;;;;;;:::i;:::-;:17;;:29;19935:7;;19943:1;19935:10;;;;;;;;;;;;;19917:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;19898:3;;;;;;;19866:91;;;;2497:1;19625:338:::0;;;;:::o;1083:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;5667:176::-;2475:12;:10;:12::i;:::-;5772::::1;5752:17;:32;;;;5823:12;5799:37;;;;;;;;;;5667:176:::0;:::o;1427:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4271:119::-;4330:4;4353:30;2412:25;4375:7;4353;:30::i;:::-;4346:37;;4271:119;;;:::o;878:76:9:-;917:4;940:7;;;;;;;;;;;933:14;;878:76;:::o;4641:170:4:-;2475:12;:10;:12::i;:::-;4711:39:::1;1772:4:0;4721:18:4::0;::::1;4741:8;4711:9;:39::i;:::-;4760:44;1772:4:0;4773:18:4::0;::::1;4793:10;4760:12;:44::i;:::-;4641:170:::0;:::o;11996:304::-;2475:12;:10;:12::i;:::-;12176:19:::1;12210:14;12176:49;;12235:7;:16;;;12252:12;12266:9;12277:15;12235:58;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2497:1;11996:304:::0;;;;:::o;1577:90::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;606:29::-;;;;:::o;4999:75::-;2475:12;:10;:12::i;:::-;5059:8:::1;:6;:8::i;:::-;4999:75::o:0;1172:62::-;;;;;;;;;;;;;;;;;;;;;;:::o;9261:200::-;2475:12;:10;:12::i;:::-;9362:19:::1;9396:14;9362:49;;9421:7;:19;;;9441:12;9421:33;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2497:1;9261:200:::0;;:::o;3965:136:0:-;4038:7;4064:30;4088:5;4064:6;:12;4071:4;4064:12;;;;;;;;;;;:20;;:23;;:30;;;;:::i;:::-;4057:37;;3965:136;;;;:::o;11474:154:4:-;2475:12;:10;:12::i;:::-;11556:6:::1;11548:4;;:14;;11540:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;11615:6;11608:4;:13;;;;11474:154:::0;:::o;2950:137:0:-;3019:4;3042:38;3072:7;3042:6;:12;3049:4;3042:12;;;;;;;;;;;:20;;:29;;:38;;;;:::i;:::-;3035:45;;2950:137;;;;:::o;2373:64:4:-;2412:25;2373:64;:::o;641:30::-;;;;:::o;6734:290::-;2475:12;:10;:12::i;:::-;6823:37:::1;2412:25;6845:14;6823:7;:37::i;:::-;6815:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;6906:40;2412:25;6931:14;6906:10;:40::i;:::-;6976:14;6961:30;;;;;;;;;;;;7001:14;;:16;;;;;;;;;;;;;;6734:290:::0;:::o;1727:49:0:-;1772:4;1727:49;;;:::o;11062:258:4:-;11166:15;;:::i;:::-;11193:17;11250:13;11243:21;;11238:1;11221:12;11214:20;;:25;;;;11213:51;11193:71;;11281:10;:22;11292:10;11281:22;;;;;;;;;;;;;;;:32;11304:8;11281:32;;;;;;;;;;;11274:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11062:258;;;;;:::o;9852:266::-;2475:12;:10;:12::i;:::-;9992:19:::1;10026:14;9992:49;;10051:7;:19;;;10071:12;10085:11;10098:12;10051:60;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2497:1;9852:266:::0;;;;:::o;539:23::-;;;;;;;;;;;;;:::o;677:19::-;;;;:::o;702:22::-;;;;:::o;3255:125:0:-;3318:7;3344:29;:6;:12;3351:4;3344:12;;;;;;;;;;;:20;;:27;:29::i;:::-;3337:36;;3255:125;;;:::o;7565:298:4:-;2475:12;:10;:12::i;:::-;7728:14:::1;7686:27;:39;7714:10;7686:39;;;;;;;;;;;;:56;;;;;;;;;;;;;;;;;;7752:19;7786:14;7752:49;;7811:7;:19;;;7831:10;7843:12;7811:45;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2497:1;7565:298:::0;;;:::o;6144:284::-;2475:12;:10;:12::i;:::-;6231:37:::1;2412:25;6253:14;6231:7;:37::i;:::-;6230:38;6222:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;6313:39;2412:25;6337:14;6313:9;:39::i;:::-;6380:14;6367:28;;;;;;;;;;;;6405:14;;:16;;;;;;;;;;;;;6144:284:::0;:::o;5101:226:0:-;5185:45;5193:6;:12;5200:4;5193:12;;;;;;;;;;;:22;;;5217:12;:10;:12::i;:::-;5185:7;:45::i;:::-;5177:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;5294:26;5306:4;5312:7;5294:11;:26::i;:::-;5101:226;;:::o;568:32:4:-;;;;:::o;8411:459::-;2475:12;:10;:12::i;:::-;8684:14:::1;8642:27;:39;8670:10;8642:39;;;;;;;;;;;;:56;;;;;;;;;;;;;;;;;;8708:23;8750:14;8708:57;;8775:7;:19;;;8795:10;8807:15;8824:18;8844;8775:88;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2497:1;8411:459:::0;;;;;:::o;10339:140::-;2475:12;:10;:12::i;:::-;10460::::1;10434:14;:23;10449:7;10434:23;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;10339:140:::0;;:::o;5264:79::-;2475:12;:10;:12::i;:::-;5326:10:::1;:8;:10::i;:::-;5264:79::o:0;6429:150:3:-;6499:4;6522:50;6527:3;:10;;6563:5;6547:23;;6539:32;;6522:4;:50::i;:::-;6515:57;;6429:150;;;;:::o;6984:165::-;7064:4;7087:55;7097:3;:10;;7133:5;7117:23;;7109:32;;7087:9;:55::i;:::-;7080:62;;6984:165;;;;:::o;1215:93:9:-;1273:7;;;;;;;;;;1272:8;1264:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;1215:93::o;2669:187:4:-;2726:39;1772:4:0;2734:18:4;;2754:10;2726:7;:39::i;:::-;:76;;;;2769:33;2412:25;2791:10;2769:7;:33::i;:::-;2726:76;2718:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;2669:187::o;609:135:10:-;667:7;693:44;698:1;701;693:44;;;;;;;;;;;;;;;;;:4;:44::i;:::-;686:51;;609:135;;;;:::o;2997:128:4:-;3048:33;2412:25;3070:10;3048:7;:33::i;:::-;3040:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;2997:128::o;598:104:2:-;651:15;685:10;678:17;;598:104;:::o;7025:184:0:-;7098:33;7123:7;7098:6;:12;7105:4;7098:12;;;;;;;;;;;:20;;:24;;:33;;;;:::i;:::-;7094:109;;;7179:12;:10;:12::i;:::-;7152:40;;7170:7;7152:40;;7164:4;7152:40;;;;;;;;;;7094:109;7025:184;;:::o;7215:188::-;7289:36;7317:7;7289:6;:12;7296:4;7289:12;;;;;;;;;;;:20;;:27;;:36;;;;:::i;:::-;7285:112;;;7373:12;:10;:12::i;:::-;7346:40;;7364:7;7346:40;;7358:4;7346:40;;;;;;;;;;7285:112;7215:188;;:::o;2862:129:4:-;2910:39;1772:4:0;2918:18:4;;2938:10;2910:7;:39::i;:::-;2902:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;2862:129::o;1791:113:9:-;1175:16;:14;:16::i;:::-;1860:4:::1;1850:7;::::0;:14:::1;;;;;;;;;;;;;;;;;;1879:18;1886:10;1879:18;;;;;;:::i;:::-;;;;;;;;1791:113::o:0;7677:156:3:-;7751:7;7801:22;7805:3;:10;;7817:5;7801:3;:22::i;:::-;7793:31;;7770:56;;7677:156;;;;:::o;7230:115::-;7293:7;7319:19;7327:3;:10;;7319:7;:19::i;:::-;7312:26;;7230:115;;;:::o;2036::9:-;1526:13;:11;:13::i;:::-;2104:5:::1;2094:7:::0;::::1;:15;;;;;;;;;;;;;;;;;;2124:20;2133:10;2124:20;;;;;;:::i;:::-;;;;;;;;2036:115::o:0;1640:404:3:-;1703:4;1724:21;1734:3;1739:5;1724:9;:21::i;:::-;1719:319;;1761:3;:11;;1778:5;1761:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1941:3;:11;;:18;;;;1919:3;:12;;:19;1932:5;1919:19;;;;;;;;;;;:40;;;;1980:4;1973:11;;;;1719:319;2022:5;2015:12;;1640:404;;;;;:::o;3805:127::-;3878:4;3924:1;3901:3;:12;;:19;3914:5;3901:19;;;;;;;;;;;;:24;;3894:31;;3805:127;;;;:::o;1028:188:10:-;1115:7;1147:1;1142;:6;;1150:12;1134:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1173:9;1189:1;1185;:5;1173:17;;1208:1;1201:8;;;1028:188;;;;;:::o;6747:156:3:-;6820:4;6843:53;6851:3;:10;;6887:5;6871:23;;6863:32;;6843:7;:53::i;:::-;6836:60;;6747:156;;;;:::o;4452:201::-;4519:7;4567:5;4546:3;:11;;:18;;;;:26;4538:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;4628:3;:11;;4640:5;4628:18;;;;;;;;;;;;;;;;4621:25;;4452:201;;;;:::o;4013:107::-;4069:7;4095:3;:11;;:18;;;;4088:25;;4013:107;;;:::o;1563:93:9:-;1617:7;;;;;;;;;;1609:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;1563:93::o;2212:1512:3:-;2278:4;2394:18;2415:3;:12;;:19;2428:5;2415:19;;;;;;;;;;;;2394:40;;2463:1;2449:10;:15;2445:1273;;2806:21;2843:1;2830:10;:14;2806:38;;2858:17;2899:1;2878:3;:11;;:18;;;;:22;2858:42;;3140:17;3160:3;:11;;3172:9;3160:22;;;;;;;;;;;;;;;;3140:42;;3303:9;3274:3;:11;;3286:13;3274:26;;;;;;;;;;;;;;;:38;;;;3420:1;3404:13;:17;3378:3;:12;;:23;3391:9;3378:23;;;;;;;;;;;:43;;;;3527:3;:11;;:17;;;;;;;;;;;;;;;;;;;;;;;;3619:3;:12;;:19;3632:5;3619:19;;;;;;;;;;;3612:26;;;3660:4;3653:11;;;;;;;;2445:1273;3702:5;3695:12;;;2212:1512;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130::-;;85:6;72:20;63:29;;97:33;124:5;97:33;:::i;:::-;57:78;;;;:::o;142:146::-;;230:6;217:20;208:29;;242:41;277:5;242:41;:::i;:::-;202:86;;;;:::o;321:360::-;;;459:3;452:4;444:6;440:17;436:27;426:2;;477:1;474;467:12;426:2;510:6;497:20;487:30;;537:18;529:6;526:30;523:2;;;569:1;566;559:12;523:2;603:4;595:6;591:17;579:29;;654:3;646:4;638:6;634:17;624:8;620:32;617:41;614:2;;;671:1;668;661:12;614:2;419:262;;;;;:::o;707:352::-;;;837:3;830:4;822:6;818:17;814:27;804:2;;855:1;852;845:12;804:2;888:6;875:20;865:30;;915:18;907:6;904:30;901:2;;;947:1;944;937:12;901:2;981:4;973:6;969:17;957:29;;1032:3;1024:4;1016:6;1012:17;1002:8;998:32;995:41;992:2;;;1049:1;1046;1039:12;992:2;797:262;;;;;:::o;1067:130::-;;1147:6;1134:20;1125:29;;1159:33;1186:5;1159:33;:::i;:::-;1119:78;;;;:::o;1204:128::-;;1283:6;1270:20;1261:29;;1295:32;1321:5;1295:32;:::i;:::-;1255:77;;;;:::o;1353:336::-;;;1467:3;1460:4;1452:6;1448:17;1444:27;1434:2;;1485:1;1482;1475:12;1434:2;1518:6;1505:20;1495:30;;1545:18;1537:6;1534:30;1531:2;;;1577:1;1574;1567:12;1531:2;1611:4;1603:6;1599:17;1587:29;;1662:3;1654:4;1646:6;1642:17;1632:8;1628:32;1625:41;1622:2;;;1679:1;1676;1669:12;1622:2;1427:262;;;;;:::o;1697:130::-;;1777:6;1764:20;1755:29;;1789:33;1816:5;1789:33;:::i;:::-;1749:78;;;;:::o;1834:128::-;;1913:6;1900:20;1891:29;;1925:32;1951:5;1925:32;:::i;:::-;1885:77;;;;:::o;1969:128::-;;2048:6;2035:20;2026:29;;2060:32;2086:5;2060:32;:::i;:::-;2020:77;;;;:::o;2104:126::-;;2182:6;2169:20;2160:29;;2194:31;2219:5;2194:31;:::i;:::-;2154:76;;;;:::o;2237:241::-;;2341:2;2329:9;2320:7;2316:23;2312:32;2309:2;;;2357:1;2354;2347:12;2309:2;2392:1;2409:53;2454:7;2445:6;2434:9;2430:22;2409:53;:::i;:::-;2399:63;;2371:97;2303:175;;;;:::o;2485:257::-;;2597:2;2585:9;2576:7;2572:23;2568:32;2565:2;;;2613:1;2610;2603:12;2565:2;2648:1;2665:61;2718:7;2709:6;2698:9;2694:22;2665:61;:::i;:::-;2655:71;;2627:105;2559:183;;;;:::o;2749:366::-;;;2870:2;2858:9;2849:7;2845:23;2841:32;2838:2;;;2886:1;2883;2876:12;2838:2;2921:1;2938:53;2983:7;2974:6;2963:9;2959:22;2938:53;:::i;:::-;2928:63;;2900:97;3028:2;3046:53;3091:7;3082:6;3071:9;3067:22;3046:53;:::i;:::-;3036:63;;3007:98;2832:283;;;;;:::o;3122:617::-;;;;;3277:3;3265:9;3256:7;3252:23;3248:33;3245:2;;;3294:1;3291;3284:12;3245:2;3329:1;3346:53;3391:7;3382:6;3371:9;3367:22;3346:53;:::i;:::-;3336:63;;3308:97;3436:2;3454:53;3499:7;3490:6;3479:9;3475:22;3454:53;:::i;:::-;3444:63;;3415:98;3544:2;3562:53;3607:7;3598:6;3587:9;3583:22;3562:53;:::i;:::-;3552:63;;3523:98;3652:2;3670:53;3715:7;3706:6;3695:9;3691:22;3670:53;:::i;:::-;3660:63;;3631:98;3239:500;;;;;;;:::o;3746:609::-;;;;;3897:3;3885:9;3876:7;3872:23;3868:33;3865:2;;;3914:1;3911;3904:12;3865:2;3949:1;3966:53;4011:7;4002:6;3991:9;3987:22;3966:53;:::i;:::-;3956:63;;3928:97;4056:2;4074:53;4119:7;4110:6;4099:9;4095:22;4074:53;:::i;:::-;4064:63;;4035:98;4164:2;4182:51;4225:7;4216:6;4205:9;4201:22;4182:51;:::i;:::-;4172:61;;4143:96;4270:2;4288:51;4331:7;4322:6;4311:9;4307:22;4288:51;:::i;:::-;4278:61;;4249:96;3859:496;;;;;;;:::o;4362:491::-;;;;4500:2;4488:9;4479:7;4475:23;4471:32;4468:2;;;4516:1;4513;4506:12;4468:2;4551:1;4568:53;4613:7;4604:6;4593:9;4589:22;4568:53;:::i;:::-;4558:63;;4530:97;4658:2;4676:53;4721:7;4712:6;4701:9;4697:22;4676:53;:::i;:::-;4666:63;;4637:98;4766:2;4784:53;4829:7;4820:6;4809:9;4805:22;4784:53;:::i;:::-;4774:63;;4745:98;4462:391;;;;;:::o;4860:739::-;;;;;;5030:3;5018:9;5009:7;5005:23;5001:33;4998:2;;;5047:1;5044;5037:12;4998:2;5082:1;5099:53;5144:7;5135:6;5124:9;5120:22;5099:53;:::i;:::-;5089:63;;5061:97;5189:2;5207:53;5252:7;5243:6;5232:9;5228:22;5207:53;:::i;:::-;5197:63;;5168:98;5297:2;5315:53;5360:7;5351:6;5340:9;5336:22;5315:53;:::i;:::-;5305:63;;5276:98;5405:2;5423:52;5467:7;5458:6;5447:9;5443:22;5423:52;:::i;:::-;5413:62;;5384:97;5512:3;5531:52;5575:7;5566:6;5555:9;5551:22;5531:52;:::i;:::-;5521:62;;5491:98;4992:607;;;;;;;;:::o;5606:694::-;;;;;5805:2;5793:9;5784:7;5780:23;5776:32;5773:2;;;5821:1;5818;5811:12;5773:2;5884:1;5873:9;5869:17;5856:31;5907:18;5899:6;5896:30;5893:2;;;5939:1;5936;5929:12;5893:2;5967:88;6047:7;6038:6;6027:9;6023:22;5967:88;:::i;:::-;5949:106;;;;5835:226;6120:2;6109:9;6105:18;6092:32;6144:18;6136:6;6133:30;6130:2;;;6176:1;6173;6166:12;6130:2;6204:80;6276:7;6267:6;6256:9;6252:22;6204:80;:::i;:::-;6186:98;;;;6071:219;5767:533;;;;;;;:::o;6307:241::-;;6411:2;6399:9;6390:7;6386:23;6382:32;6379:2;;;6427:1;6424;6417:12;6379:2;6462:1;6479:53;6524:7;6515:6;6504:9;6500:22;6479:53;:::i;:::-;6469:63;;6441:97;6373:175;;;;:::o;6555:366::-;;;6676:2;6664:9;6655:7;6651:23;6647:32;6644:2;;;6692:1;6689;6682:12;6644:2;6727:1;6744:53;6789:7;6780:6;6769:9;6765:22;6744:53;:::i;:::-;6734:63;;6706:97;6834:2;6852:53;6897:7;6888:6;6877:9;6873:22;6852:53;:::i;:::-;6842:63;;6813:98;6638:283;;;;;:::o;6928:366::-;;;7049:2;7037:9;7028:7;7024:23;7020:32;7017:2;;;7065:1;7062;7055:12;7017:2;7100:1;7117:53;7162:7;7153:6;7142:9;7138:22;7117:53;:::i;:::-;7107:63;;7079:97;7207:2;7225:53;7270:7;7261:6;7250:9;7246:22;7225:53;:::i;:::-;7215:63;;7186:98;7011:283;;;;;:::o;7301:241::-;;7405:2;7393:9;7384:7;7380:23;7376:32;7373:2;;;7421:1;7418;7411:12;7373:2;7456:1;7473:53;7518:7;7509:6;7498:9;7494:22;7473:53;:::i;:::-;7463:63;;7435:97;7367:175;;;;:::o;7549:360::-;;;7667:2;7655:9;7646:7;7642:23;7638:32;7635:2;;;7683:1;7680;7673:12;7635:2;7718:1;7735:52;7779:7;7770:6;7759:9;7755:22;7735:52;:::i;:::-;7725:62;;7697:96;7824:2;7842:51;7885:7;7876:6;7865:9;7861:22;7842:51;:::i;:::-;7832:61;;7803:96;7629:280;;;;;:::o;7916:364::-;;;8036:2;8024:9;8015:7;8011:23;8007:32;8004:2;;;8052:1;8049;8042:12;8004:2;8087:1;8104:52;8148:7;8139:6;8128:9;8124:22;8104:52;:::i;:::-;8094:62;;8066:96;8193:2;8211:53;8256:7;8247:6;8236:9;8232:22;8211:53;:::i;:::-;8201:63;;8172:98;7998:282;;;;;:::o;8287:489::-;;;;8424:2;8412:9;8403:7;8399:23;8395:32;8392:2;;;8440:1;8437;8430:12;8392:2;8475:1;8492:52;8536:7;8527:6;8516:9;8512:22;8492:52;:::i;:::-;8482:62;;8454:96;8581:2;8599:53;8644:7;8635:6;8624:9;8620:22;8599:53;:::i;:::-;8589:63;;8560:98;8689:2;8707:53;8752:7;8743:6;8732:9;8728:22;8707:53;:::i;:::-;8697:63;;8668:98;8386:390;;;;;:::o;8783:237::-;;8885:2;8873:9;8864:7;8860:23;8856:32;8853:2;;;8901:1;8898;8891:12;8853:2;8936:1;8953:51;8996:7;8987:6;8976:9;8972:22;8953:51;:::i;:::-;8943:61;;8915:95;8847:173;;;;:::o;9027:611::-;;;;;9182:2;9170:9;9161:7;9157:23;9153:32;9150:2;;;9198:1;9195;9188:12;9150:2;9233:1;9250:51;9293:7;9284:6;9273:9;9269:22;9250:51;:::i;:::-;9240:61;;9212:95;9338:2;9356:53;9401:7;9392:6;9381:9;9377:22;9356:53;:::i;:::-;9346:63;;9317:98;9474:2;9463:9;9459:18;9446:32;9498:18;9490:6;9487:30;9484:2;;;9530:1;9527;9520:12;9484:2;9558:64;9614:7;9605:6;9594:9;9590:22;9558:64;:::i;:::-;9540:82;;;;9425:203;9144:494;;;;;;;:::o;9645:360::-;;;9763:2;9751:9;9742:7;9738:23;9734:32;9731:2;;;9779:1;9776;9769:12;9731:2;9814:1;9831:51;9874:7;9865:6;9854:9;9850:22;9831:51;:::i;:::-;9821:61;;9793:95;9919:2;9937:52;9981:7;9972:6;9961:9;9957:22;9937:52;:::i;:::-;9927:62;;9898:97;9725:280;;;;;:::o;10012:485::-;;;;10147:2;10135:9;10126:7;10122:23;10118:32;10115:2;;;10163:1;10160;10153:12;10115:2;10198:1;10215:51;10258:7;10249:6;10238:9;10234:22;10215:51;:::i;:::-;10205:61;;10177:95;10303:2;10321:52;10365:7;10356:6;10345:9;10341:22;10321:52;:::i;:::-;10311:62;;10282:97;10410:2;10428:53;10473:7;10464:6;10453:9;10449:22;10428:53;:::i;:::-;10418:63;;10389:98;10109:388;;;;;:::o;10504:611::-;;;;;10656:3;10644:9;10635:7;10631:23;10627:33;10624:2;;;10673:1;10670;10663:12;10624:2;10708:1;10725:51;10768:7;10759:6;10748:9;10744:22;10725:51;:::i;:::-;10715:61;;10687:95;10813:2;10831:52;10875:7;10866:6;10855:9;10851:22;10831:52;:::i;:::-;10821:62;;10792:97;10920:2;10938:53;10983:7;10974:6;10963:9;10959:22;10938:53;:::i;:::-;10928:63;;10899:98;11028:2;11046:53;11091:7;11082:6;11071:9;11067:22;11046:53;:::i;:::-;11036:63;;11007:98;10618:497;;;;;;;:::o;11122:735::-;;;;;;11293:3;11281:9;11272:7;11268:23;11264:33;11261:2;;;11310:1;11307;11300:12;11261:2;11345:1;11362:51;11405:7;11396:6;11385:9;11381:22;11362:51;:::i;:::-;11352:61;;11324:95;11450:2;11468:52;11512:7;11503:6;11492:9;11488:22;11468:52;:::i;:::-;11458:62;;11429:97;11585:2;11574:9;11570:18;11557:32;11609:18;11601:6;11598:30;11595:2;;;11641:1;11638;11631:12;11595:2;11669:64;11725:7;11716:6;11705:9;11701:22;11669:64;:::i;:::-;11651:82;;;;11536:203;11770:2;11788:53;11833:7;11824:6;11813:9;11809:22;11788:53;:::i;:::-;11778:63;;11749:98;11255:602;;;;;;;;:::o;11865:173::-;;11952:46;11994:3;11986:6;11952:46;:::i;:::-;12027:4;12022:3;12018:14;12004:28;;11945:93;;;;:::o;12046:142::-;12137:45;12176:5;12137:45;:::i;:::-;12132:3;12125:58;12119:69;;:::o;12195:103::-;12268:24;12286:5;12268:24;:::i;:::-;12263:3;12256:37;12250:48;;:::o;12305:113::-;12388:24;12406:5;12388:24;:::i;:::-;12383:3;12376:37;12370:48;;:::o;12425:152::-;12526:45;12546:24;12564:5;12546:24;:::i;:::-;12526:45;:::i;:::-;12521:3;12514:58;12508:69;;:::o;12615:670::-;;12750:54;12798:5;12750:54;:::i;:::-;12817:76;12886:6;12881:3;12817:76;:::i;:::-;12810:83;;12914:56;12964:5;12914:56;:::i;:::-;12990:7;13018:1;13003:260;13028:6;13025:1;13022:13;13003:260;;;13095:6;13089:13;13116:63;13175:3;13160:13;13116:63;:::i;:::-;13109:70;;13196:60;13249:6;13196:60;:::i;:::-;13186:70;;13060:203;13050:1;13047;13043:9;13038:14;;13003:260;;;13007:14;13276:3;13269:10;;12729:556;;;;;;;:::o;13293:104::-;13370:21;13385:5;13370:21;:::i;:::-;13365:3;13358:34;13352:45;;:::o;13404:103::-;13477:24;13495:5;13477:24;:::i;:::-;13472:3;13465:37;13459:48;;:::o;13514:113::-;13597:24;13615:5;13597:24;:::i;:::-;13592:3;13585:37;13579:48;;:::o;13634:110::-;13715:23;13732:5;13715:23;:::i;:::-;13710:3;13703:36;13697:47;;:::o;13774:297::-;;13888:70;13951:6;13946:3;13888:70;:::i;:::-;13881:77;;13970:43;14006:6;14001:3;13994:5;13970:43;:::i;:::-;14035:29;14057:6;14035:29;:::i;:::-;14030:3;14026:39;14019:46;;13874:197;;;;;:::o;14102:310::-;;14234:88;14315:6;14310:3;14234:88;:::i;:::-;14227:95;;14334:43;14370:6;14365:3;14358:5;14334:43;:::i;:::-;14399:6;14394:3;14390:16;14383:23;;14220:192;;;;;:::o;14420:343::-;;14530:38;14562:5;14530:38;:::i;:::-;14580:70;14643:6;14638:3;14580:70;:::i;:::-;14573:77;;14655:52;14700:6;14695:3;14688:4;14681:5;14677:16;14655:52;:::i;:::-;14728:29;14750:6;14728:29;:::i;:::-;14723:3;14719:39;14712:46;;14510:253;;;;;:::o;14770:150::-;14860:54;14908:5;14860:54;:::i;:::-;14855:3;14848:67;14842:78;;:::o;14927:160::-;15027:54;15075:5;15027:54;:::i;:::-;15022:3;15015:67;15009:78;;:::o;15094:347::-;;15206:39;15239:5;15206:39;:::i;:::-;15257:71;15321:6;15316:3;15257:71;:::i;:::-;15250:78;;15333:52;15378:6;15373:3;15366:4;15359:5;15355:16;15333:52;:::i;:::-;15406:29;15428:6;15406:29;:::i;:::-;15401:3;15397:39;15390:46;;15186:255;;;;;:::o;15449:328::-;;15609:67;15673:2;15668:3;15609:67;:::i;:::-;15602:74;;15709:30;15705:1;15700:3;15696:11;15689:51;15768:2;15763:3;15759:12;15752:19;;15595:182;;;:::o;15786:371::-;;15946:67;16010:2;16005:3;15946:67;:::i;:::-;15939:74;;16046:34;16042:1;16037:3;16033:11;16026:55;16115:4;16110:2;16105:3;16101:12;16094:26;16148:2;16143:3;16139:12;16132:19;;15932:225;;;:::o;16166:330::-;;16326:67;16390:2;16385:3;16326:67;:::i;:::-;16319:74;;16426:32;16422:1;16417:3;16413:11;16406:53;16487:2;16482:3;16478:12;16471:19;;16312:184;;;:::o;16505:375::-;;16665:67;16729:2;16724:3;16665:67;:::i;:::-;16658:74;;16765:34;16761:1;16756:3;16752:11;16745:55;16834:8;16829:2;16824:3;16820:12;16813:30;16871:2;16866:3;16862:12;16855:19;;16651:229;;;:::o;16889:384::-;;17049:67;17113:2;17108:3;17049:67;:::i;:::-;17042:74;;17149:34;17145:1;17140:3;17136:11;17129:55;17218:17;17213:2;17208:3;17204:12;17197:39;17264:2;17259:3;17255:12;17248:19;;17035:238;;;:::o;17282:321::-;;17442:67;17506:2;17501:3;17442:67;:::i;:::-;17435:74;;17542:23;17538:1;17533:3;17529:11;17522:44;17594:2;17589:3;17585:12;17578:19;;17428:175;;;:::o;17612:320::-;;17772:67;17836:2;17831:3;17772:67;:::i;:::-;17765:74;;17872:22;17868:1;17863:3;17859:11;17852:43;17923:2;17918:3;17914:12;17907:19;;17758:174;;;:::o;17941:331::-;;18101:67;18165:2;18160:3;18101:67;:::i;:::-;18094:74;;18201:33;18197:1;18192:3;18188:11;18181:54;18263:2;18258:3;18254:12;18247:19;;18087:185;;;:::o;18281:322::-;;18441:67;18505:2;18500:3;18441:67;:::i;:::-;18434:74;;18541:24;18537:1;18532:3;18528:11;18521:45;18594:2;18589:3;18585:12;18578:19;;18427:176;;;:::o;18612:327::-;;18772:67;18836:2;18831:3;18772:67;:::i;:::-;18765:74;;18872:29;18868:1;18863:3;18859:11;18852:50;18930:2;18925:3;18921:12;18914:19;;18758:181;;;:::o;18948:326::-;;19108:67;19172:2;19167:3;19108:67;:::i;:::-;19101:74;;19208:28;19204:1;19199:3;19195:11;19188:49;19265:2;19260:3;19256:12;19249:19;;19094:180;;;:::o;19283:332::-;;19443:67;19507:2;19502:3;19443:67;:::i;:::-;19436:74;;19543:34;19539:1;19534:3;19530:11;19523:55;19606:2;19601:3;19597:12;19590:19;;19429:186;;;:::o;19624:385::-;;19784:67;19848:2;19843:3;19784:67;:::i;:::-;19777:74;;19884:34;19880:1;19875:3;19871:11;19864:55;19953:18;19948:2;19943:3;19939:12;19932:40;20000:2;19995:3;19991:12;19984:19;;19770:239;;;:::o;20018:332::-;;20178:67;20242:2;20237:3;20178:67;:::i;:::-;20171:74;;20278:34;20274:1;20269:3;20265:11;20258:55;20341:2;20336:3;20332:12;20325:19;;20164:186;;;:::o;20359:316::-;;20519:67;20583:2;20578:3;20519:67;:::i;:::-;20512:74;;20619:18;20615:1;20610:3;20606:11;20599:39;20666:2;20661:3;20657:12;20650:19;;20505:170;;;:::o;20684:330::-;;20844:67;20908:2;20903:3;20844:67;:::i;:::-;20837:74;;20944:32;20940:1;20935:3;20931:11;20924:53;21005:2;21000:3;20996:12;20989:19;;20830:184;;;:::o;21023:379::-;;21183:67;21247:2;21242:3;21183:67;:::i;:::-;21176:74;;21283:34;21279:1;21274:3;21270:11;21263:55;21352:12;21347:2;21342:3;21338:12;21331:34;21393:2;21388:3;21384:12;21377:19;;21169:233;;;:::o;21411:332::-;;21571:67;21635:2;21630:3;21571:67;:::i;:::-;21564:74;;21671:34;21667:1;21662:3;21658:11;21651:55;21734:2;21729:3;21725:12;21718:19;;21557:186;;;:::o;21752:330::-;;21912:67;21976:2;21971:3;21912:67;:::i;:::-;21905:74;;22012:32;22008:1;22003:3;21999:11;21992:53;22073:2;22068:3;22064:12;22057:19;;21898:184;;;:::o;22091:331::-;;22251:67;22315:2;22310:3;22251:67;:::i;:::-;22244:74;;22351:33;22347:1;22342:3;22338:11;22331:54;22413:2;22408:3;22404:12;22397:19;;22237:185;;;:::o;22431:317::-;;22591:67;22655:2;22650:3;22591:67;:::i;:::-;22584:74;;22691:19;22687:1;22682:3;22678:11;22671:40;22739:2;22734:3;22730:12;22723:19;;22577:171;;;:::o;22757:325::-;;22917:67;22981:2;22976:3;22917:67;:::i;:::-;22910:74;;23017:27;23013:1;23008:3;23004:11;22997:48;23073:2;23068:3;23064:12;23057:19;;22903:179;;;:::o;23091:384::-;;23251:67;23315:2;23310:3;23251:67;:::i;:::-;23244:74;;23351:34;23347:1;23342:3;23338:11;23331:55;23420:17;23415:2;23410:3;23406:12;23399:39;23466:2;23461:3;23457:12;23450:19;;23237:238;;;:::o;23538:1376::-;;23691:4;23686:3;23682:14;23781:4;23774:5;23770:16;23764:23;23793:63;23850:4;23845:3;23841:14;23827:12;23793:63;:::i;:::-;23711:151;23940:4;23933:5;23929:16;23923:23;23952:63;24009:4;24004:3;24000:14;23986:12;23952:63;:::i;:::-;23872:149;24099:4;24092:5;24088:16;24082:23;24151:3;24145:4;24141:14;24134:4;24129:3;24125:14;24118:38;24171:103;24269:4;24255:12;24171:103;:::i;:::-;24163:111;;24031:255;24363:4;24356:5;24352:16;24346:23;24415:3;24409:4;24405:14;24398:4;24393:3;24389:14;24382:38;24435:103;24533:4;24519:12;24435:103;:::i;:::-;24427:111;;24296:254;24626:4;24619:5;24615:16;24609:23;24638:80;24712:4;24707:3;24703:14;24689:12;24638:80;:::i;:::-;24560:164;24807:4;24800:5;24796:16;24790:23;24819:63;24876:4;24871:3;24867:14;24853:12;24819:63;:::i;:::-;24734:154;24905:4;24898:11;;23664:1250;;;;;:::o;24921:103::-;24994:24;25012:5;24994:24;:::i;:::-;24989:3;24982:37;24976:48;;:::o;25031:113::-;25114:24;25132:5;25114:24;:::i;:::-;25109:3;25102:37;25096:48;;:::o;25151:110::-;25232:23;25249:5;25232:23;:::i;:::-;25227:3;25220:36;25214:47;;:::o;25268:107::-;25347:22;25363:5;25347:22;:::i;:::-;25342:3;25335:35;25329:46;;:::o;25382:430::-;;25566:75;25637:3;25628:6;25566:75;:::i;:::-;25663:2;25658:3;25654:12;25647:19;;25684:103;25783:3;25774:6;25766;25684:103;:::i;:::-;25677:110;;25804:3;25797:10;;25554:258;;;;;;:::o;25819:222::-;;25946:2;25935:9;25931:18;25923:26;;25960:71;26028:1;26017:9;26013:17;26004:6;25960:71;:::i;:::-;25917:124;;;;:::o;26048:238::-;;26183:2;26172:9;26168:18;26160:26;;26197:79;26273:1;26262:9;26258:17;26249:6;26197:79;:::i;:::-;26154:132;;;;:::o;26293:444::-;;26476:2;26465:9;26461:18;26453:26;;26490:71;26558:1;26547:9;26543:17;26534:6;26490:71;:::i;:::-;26572:72;26640:2;26629:9;26625:18;26616:6;26572:72;:::i;:::-;26655;26723:2;26712:9;26708:18;26699:6;26655:72;:::i;:::-;26447:290;;;;;;:::o;26744:428::-;;26919:2;26908:9;26904:18;26896:26;;26933:71;27001:1;26990:9;26986:17;26977:6;26933:71;:::i;:::-;27015:68;27079:2;27068:9;27064:18;27055:6;27015:68;:::i;:::-;27094;27158:2;27147:9;27143:18;27134:6;27094:68;:::i;:::-;26890:282;;;;;;:::o;27179:210::-;;27300:2;27289:9;27285:18;27277:26;;27314:65;27376:1;27365:9;27361:17;27352:6;27314:65;:::i;:::-;27271:118;;;;:::o;27396:222::-;;27523:2;27512:9;27508:18;27500:26;;27537:71;27605:1;27594:9;27590:17;27581:6;27537:71;:::i;:::-;27494:124;;;;:::o;27625:333::-;;27780:2;27769:9;27765:18;27757:26;;27794:71;27862:1;27851:9;27847:17;27838:6;27794:71;:::i;:::-;27876:72;27944:2;27933:9;27929:18;27920:6;27876:72;:::i;:::-;27751:207;;;;;:::o;27965:548::-;;28172:3;28161:9;28157:19;28149:27;;28187:71;28255:1;28244:9;28240:17;28231:6;28187:71;:::i;:::-;28269:72;28337:2;28326:9;28322:18;28313:6;28269:72;:::i;:::-;28352:70;28418:2;28407:9;28403:18;28394:6;28352:70;:::i;:::-;28433;28499:2;28488:9;28484:18;28475:6;28433:70;:::i;:::-;28143:370;;;;;;;:::o;28520:333::-;;28675:2;28664:9;28660:18;28652:26;;28689:71;28757:1;28746:9;28742:17;28733:6;28689:71;:::i;:::-;28771:72;28839:2;28828:9;28824:18;28815:6;28771:72;:::i;:::-;28646:207;;;;;:::o;28860:590::-;;29088:3;29077:9;29073:19;29065:27;;29103:71;29171:1;29160:9;29156:17;29147:6;29103:71;:::i;:::-;29185:72;29253:2;29242:9;29238:18;29229:6;29185:72;:::i;:::-;29268:89;29353:2;29342:9;29338:18;29329:6;29268:89;:::i;:::-;29368:72;29436:2;29425:9;29421:18;29412:6;29368:72;:::i;:::-;29059:391;;;;;;;:::o;29457:437::-;;29640:2;29629:9;29625:18;29617:26;;29654:71;29722:1;29711:9;29707:17;29698:6;29654:71;:::i;:::-;29773:9;29767:4;29763:20;29758:2;29747:9;29743:18;29736:48;29798:86;29879:4;29870:6;29862;29798:86;:::i;:::-;29790:94;;29611:283;;;;;;:::o;29901:776::-;;30170:3;30159:9;30155:19;30147:27;;30185:71;30253:1;30242:9;30238:17;30229:6;30185:71;:::i;:::-;30267:68;30331:2;30320:9;30316:18;30307:6;30267:68;:::i;:::-;30346:70;30412:2;30401:9;30397:18;30388:6;30346:70;:::i;:::-;30427:80;30503:2;30492:9;30488:18;30479:6;30427:80;:::i;:::-;30556:9;30550:4;30546:20;30540:3;30529:9;30525:19;30518:49;30581:86;30662:4;30653:6;30645;30581:86;:::i;:::-;30573:94;;30141:536;;;;;;;;;:::o;30684:306::-;;30829:2;30818:9;30814:18;30806:26;;30879:9;30873:4;30869:20;30865:1;30854:9;30850:17;30843:47;30904:76;30975:4;30966:6;30904:76;:::i;:::-;30896:84;;30800:190;;;;:::o;30997:310::-;;31144:2;31133:9;31129:18;31121:26;;31194:9;31188:4;31184:20;31180:1;31169:9;31165:17;31158:47;31219:78;31292:4;31283:6;31219:78;:::i;:::-;31211:86;;31115:192;;;;:::o;31314:416::-;;31514:2;31503:9;31499:18;31491:26;;31564:9;31558:4;31554:20;31550:1;31539:9;31535:17;31528:47;31589:131;31715:4;31589:131;:::i;:::-;31581:139;;31485:245;;;:::o;31737:416::-;;31937:2;31926:9;31922:18;31914:26;;31987:9;31981:4;31977:20;31973:1;31962:9;31958:17;31951:47;32012:131;32138:4;32012:131;:::i;:::-;32004:139;;31908:245;;;:::o;32160:416::-;;32360:2;32349:9;32345:18;32337:26;;32410:9;32404:4;32400:20;32396:1;32385:9;32381:17;32374:47;32435:131;32561:4;32435:131;:::i;:::-;32427:139;;32331:245;;;:::o;32583:416::-;;32783:2;32772:9;32768:18;32760:26;;32833:9;32827:4;32823:20;32819:1;32808:9;32804:17;32797:47;32858:131;32984:4;32858:131;:::i;:::-;32850:139;;32754:245;;;:::o;33006:416::-;;33206:2;33195:9;33191:18;33183:26;;33256:9;33250:4;33246:20;33242:1;33231:9;33227:17;33220:47;33281:131;33407:4;33281:131;:::i;:::-;33273:139;;33177:245;;;:::o;33429:416::-;;33629:2;33618:9;33614:18;33606:26;;33679:9;33673:4;33669:20;33665:1;33654:9;33650:17;33643:47;33704:131;33830:4;33704:131;:::i;:::-;33696:139;;33600:245;;;:::o;33852:416::-;;34052:2;34041:9;34037:18;34029:26;;34102:9;34096:4;34092:20;34088:1;34077:9;34073:17;34066:47;34127:131;34253:4;34127:131;:::i;:::-;34119:139;;34023:245;;;:::o;34275:416::-;;34475:2;34464:9;34460:18;34452:26;;34525:9;34519:4;34515:20;34511:1;34500:9;34496:17;34489:47;34550:131;34676:4;34550:131;:::i;:::-;34542:139;;34446:245;;;:::o;34698:416::-;;34898:2;34887:9;34883:18;34875:26;;34948:9;34942:4;34938:20;34934:1;34923:9;34919:17;34912:47;34973:131;35099:4;34973:131;:::i;:::-;34965:139;;34869:245;;;:::o;35121:416::-;;35321:2;35310:9;35306:18;35298:26;;35371:9;35365:4;35361:20;35357:1;35346:9;35342:17;35335:47;35396:131;35522:4;35396:131;:::i;:::-;35388:139;;35292:245;;;:::o;35544:416::-;;35744:2;35733:9;35729:18;35721:26;;35794:9;35788:4;35784:20;35780:1;35769:9;35765:17;35758:47;35819:131;35945:4;35819:131;:::i;:::-;35811:139;;35715:245;;;:::o;35967:416::-;;36167:2;36156:9;36152:18;36144:26;;36217:9;36211:4;36207:20;36203:1;36192:9;36188:17;36181:47;36242:131;36368:4;36242:131;:::i;:::-;36234:139;;36138:245;;;:::o;36390:416::-;;36590:2;36579:9;36575:18;36567:26;;36640:9;36634:4;36630:20;36626:1;36615:9;36611:17;36604:47;36665:131;36791:4;36665:131;:::i;:::-;36657:139;;36561:245;;;:::o;36813:416::-;;37013:2;37002:9;36998:18;36990:26;;37063:9;37057:4;37053:20;37049:1;37038:9;37034:17;37027:47;37088:131;37214:4;37088:131;:::i;:::-;37080:139;;36984:245;;;:::o;37236:416::-;;37436:2;37425:9;37421:18;37413:26;;37486:9;37480:4;37476:20;37472:1;37461:9;37457:17;37450:47;37511:131;37637:4;37511:131;:::i;:::-;37503:139;;37407:245;;;:::o;37659:416::-;;37859:2;37848:9;37844:18;37836:26;;37909:9;37903:4;37899:20;37895:1;37884:9;37880:17;37873:47;37934:131;38060:4;37934:131;:::i;:::-;37926:139;;37830:245;;;:::o;38082:416::-;;38282:2;38271:9;38267:18;38259:26;;38332:9;38326:4;38322:20;38318:1;38307:9;38303:17;38296:47;38357:131;38483:4;38357:131;:::i;:::-;38349:139;;38253:245;;;:::o;38505:416::-;;38705:2;38694:9;38690:18;38682:26;;38755:9;38749:4;38745:20;38741:1;38730:9;38726:17;38719:47;38780:131;38906:4;38780:131;:::i;:::-;38772:139;;38676:245;;;:::o;38928:416::-;;39128:2;39117:9;39113:18;39105:26;;39178:9;39172:4;39168:20;39164:1;39153:9;39149:17;39142:47;39203:131;39329:4;39203:131;:::i;:::-;39195:139;;39099:245;;;:::o;39351:416::-;;39551:2;39540:9;39536:18;39528:26;;39601:9;39595:4;39591:20;39587:1;39576:9;39572:17;39565:47;39626:131;39752:4;39626:131;:::i;:::-;39618:139;;39522:245;;;:::o;39774:416::-;;39974:2;39963:9;39959:18;39951:26;;40024:9;40018:4;40014:20;40010:1;39999:9;39995:17;39988:47;40049:131;40175:4;40049:131;:::i;:::-;40041:139;;39945:245;;;:::o;40197:416::-;;40397:2;40386:9;40382:18;40374:26;;40447:9;40441:4;40437:20;40433:1;40422:9;40418:17;40411:47;40472:131;40598:4;40472:131;:::i;:::-;40464:139;;40368:245;;;:::o;40620:416::-;;40820:2;40809:9;40805:18;40797:26;;40870:9;40864:4;40860:20;40856:1;40845:9;40841:17;40834:47;40895:131;41021:4;40895:131;:::i;:::-;40887:139;;40791:245;;;:::o;41043:374::-;;41222:2;41211:9;41207:18;41199:26;;41272:9;41266:4;41262:20;41258:1;41247:9;41243:17;41236:47;41297:110;41402:4;41393:6;41297:110;:::i;:::-;41289:118;;41193:224;;;;:::o;41424:222::-;;41551:2;41540:9;41536:18;41528:26;;41565:71;41633:1;41622:9;41618:17;41609:6;41565:71;:::i;:::-;41522:124;;;;:::o;41653:218::-;;41778:2;41767:9;41763:18;41755:26;;41792:69;41858:1;41847:9;41843:17;41834:6;41792:69;:::i;:::-;41749:122;;;;:::o;41878:214::-;;42001:2;41990:9;41986:18;41978:26;;42015:67;42079:1;42068:9;42064:17;42055:6;42015:67;:::i;:::-;41972:120;;;;:::o;42099:151::-;;42185:3;42177:11;;42223:4;42218:3;42214:14;42206:22;;42171:79;;;:::o;42257:137::-;;42366:5;42360:12;42350:22;;42331:63;;;:::o;42401:121::-;;42494:5;42488:12;42478:22;;42459:63;;;:::o;42529:122::-;;42623:5;42617:12;42607:22;;42588:63;;;:::o;42658:108::-;;42756:4;42751:3;42747:14;42739:22;;42733:33;;;:::o;42774:168::-;;42894:6;42889:3;42882:19;42931:4;42926:3;42922:14;42907:29;;42875:67;;;;:::o;42951:162::-;;43065:6;43060:3;43053:19;43102:4;43097:3;43093:14;43078:29;;43046:67;;;;:::o;43122:144::-;;43257:3;43242:18;;43235:31;;;;:::o;43275:163::-;;43390:6;43385:3;43378:19;43427:4;43422:3;43418:14;43403:29;;43371:67;;;;:::o;43446:91::-;;43508:24;43526:5;43508:24;:::i;:::-;43497:35;;43491:46;;;:::o;43544:99::-;;43614:24;43632:5;43614:24;:::i;:::-;43603:35;;43597:46;;;:::o;43650:85::-;;43723:5;43716:13;43709:21;43698:32;;43692:43;;;:::o;43742:72::-;;43804:5;43793:16;;43787:27;;;:::o;43821:144::-;;43893:66;43886:5;43882:78;43871:89;;43865:100;;;:::o;43972:144::-;;44053:5;44042:16;;44059:52;44105:5;44059:52;:::i;:::-;44036:80;;;:::o;44123:121::-;;44196:42;44189:5;44185:54;44174:65;;44168:76;;;:::o;44251:72::-;;44313:5;44302:16;;44296:27;;;:::o;44330:96::-;;44402:18;44395:5;44391:30;44380:41;;44374:52;;;:::o;44433:98::-;;44505:20;44498:5;44494:32;44483:43;;44477:54;;;:::o;44538:81::-;;44609:4;44602:5;44598:16;44587:27;;44581:38;;;:::o;44626:129::-;;44713:37;44744:5;44713:37;:::i;:::-;44700:50;;44694:61;;;:::o;44762:144::-;;44858:43;44895:5;44858:43;:::i;:::-;44845:56;;44839:67;;;:::o;44913:121::-;;44992:37;45023:5;44992:37;:::i;:::-;44979:50;;44973:61;;;:::o;45041:108::-;;45120:24;45138:5;45120:24;:::i;:::-;45107:37;;45101:48;;;:::o;45157:145::-;45238:6;45233:3;45228;45215:30;45294:1;45285:6;45280:3;45276:16;45269:27;45208:94;;;:::o;45311:268::-;45376:1;45383:101;45397:6;45394:1;45391:13;45383:101;;;45473:1;45468:3;45464:11;45458:18;45454:1;45449:3;45445:11;45438:39;45419:2;45416:1;45412:10;45407:15;;45383:101;;;45499:6;45496:1;45493:13;45490:2;;;45564:1;45555:6;45550:3;45546:16;45539:27;45490:2;45360:219;;;;:::o;45587:95::-;;45651:26;45671:5;45651:26;:::i;:::-;45640:37;;45634:48;;;:::o;45689:89::-;;45753:20;45767:5;45753:20;:::i;:::-;45742:31;;45736:42;;;:::o;45785:97::-;;45873:2;45869:7;45864:2;45857:5;45853:14;45849:28;45839:38;;45833:49;;;:::o;45890:94::-;;45968:5;45964:2;45960:14;45938:36;;45932:52;;;:::o;45992:110::-;46080:1;46073:5;46070:12;46060:2;;46086:9;46060:2;46054:48;:::o;46109:117::-;46178:24;46196:5;46178:24;:::i;:::-;46171:5;46168:35;46158:2;;46217:1;46214;46207:12;46158:2;46152:74;:::o;46233:133::-;46310:32;46336:5;46310:32;:::i;:::-;46303:5;46300:43;46290:2;;46357:1;46354;46347:12;46290:2;46284:82;:::o;46373:117::-;46442:24;46460:5;46442:24;:::i;:::-;46435:5;46432:35;46422:2;;46481:1;46478;46471:12;46422:2;46416:74;:::o;46497:115::-;46565:23;46582:5;46565:23;:::i;:::-;46558:5;46555:34;46545:2;;46603:1;46600;46593:12;46545:2;46539:73;:::o;46619:117::-;46688:24;46706:5;46688:24;:::i;:::-;46681:5;46678:35;46668:2;;46727:1;46724;46717:12;46668:2;46662:74;:::o;46743:115::-;46811:23;46828:5;46811:23;:::i;:::-;46804:5;46801:34;46791:2;;46849:1;46846;46839:12;46791:2;46785:73;:::o;46865:115::-;46933:23;46950:5;46933:23;:::i;:::-;46926:5;46923:34;46913:2;;46971:1;46968;46961:12;46913:2;46907:73;:::o;46987:113::-;47054:22;47070:5;47054:22;:::i;:::-;47047:5;47044:33;47034:2;;47091:1;47088;47081:12;47034:2;47028:72;:::o", - "source": "pragma solidity 0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@openzeppelin/contracts/access/AccessControl.sol\";\nimport \"./utils/Pausable.sol\";\nimport \"./utils/SafeMath.sol\";\nimport \"./interfaces/IDepositExecute.sol\";\nimport \"./interfaces/IBridge.sol\";\nimport \"./interfaces/IERCHandler.sol\";\nimport \"./interfaces/IGenericHandler.sol\";\n\n/**\n @title Facilitates deposits, creation and votiing of deposit proposals, and deposit executions.\n @author ChainSafe Systems.\n */\ncontract Bridge is Pausable, AccessControl, SafeMath {\n\n uint8 public _chainID;\n uint256 public _relayerThreshold;\n uint256 public _totalRelayers;\n uint256 public _totalProposals;\n uint256 public _fee;\n uint256 public _expiry;\n\n enum Vote {No, Yes}\n\n enum ProposalStatus {Inactive, Active, Passed, Executed, Cancelled}\n\n struct Proposal {\n bytes32 _resourceID;\n bytes32 _dataHash;\n address[] _yesVotes;\n address[] _noVotes;\n ProposalStatus _status;\n uint256 _proposedBlock;\n }\n\n // destinationChainID => number of deposits\n mapping(uint8 => uint64) public _depositCounts;\n // resourceID => handler address\n mapping(bytes32 => address) public _resourceIDToHandlerAddress;\n // depositNonce => destinationChainID => bytes\n mapping(uint64 => mapping(uint8 => bytes)) public _depositRecords;\n // destinationChainID + depositNonce => dataHash => Proposal\n mapping(uint72 => mapping(bytes32 => Proposal)) public _proposals;\n // destinationChainID + depositNonce => dataHash => relayerAddress => bool\n mapping(uint72 => mapping(bytes32 => mapping(address => bool))) public _hasVotedOnProposal;\n\n event RelayerThresholdChanged(uint indexed newThreshold);\n event RelayerAdded(address indexed relayer);\n event RelayerRemoved(address indexed relayer);\n event Deposit(\n uint8 indexed destinationChainID,\n bytes32 indexed resourceID,\n uint64 indexed depositNonce\n );\n event ProposalEvent(\n uint8 indexed originChainID,\n uint64 indexed depositNonce,\n ProposalStatus indexed status,\n bytes32 resourceID,\n bytes32 dataHash\n );\n\n event ProposalVote(\n uint8 indexed originChainID,\n uint64 indexed depositNonce,\n ProposalStatus indexed status,\n bytes32 resourceID\n );\n\n bytes32 public constant RELAYER_ROLE = keccak256(\"RELAYER_ROLE\");\n\n modifier onlyAdmin() {\n _onlyAdmin();\n _;\n }\n\n modifier onlyAdminOrRelayer() {\n _onlyAdminOrRelayer();\n _;\n }\n\n modifier onlyRelayers() {\n _onlyRelayers();\n _;\n }\n\n function _onlyAdminOrRelayer() private {\n require(hasRole(DEFAULT_ADMIN_ROLE, msg.sender) || hasRole(RELAYER_ROLE, msg.sender),\n \"sender is not relayer or admin\");\n }\n\n function _onlyAdmin() private {\n require(hasRole(DEFAULT_ADMIN_ROLE, msg.sender), \"sender doesn't have admin role\");\n }\n\n function _onlyRelayers() private {\n require(hasRole(RELAYER_ROLE, msg.sender), \"sender doesn't have relayer role\");\n }\n\n /**\n @notice Initializes Bridge, creates and grants {msg.sender} the admin role,\n creates and grants {initialRelayers} the relayer role.\n @param chainID ID of chain the Bridge contract exists on.\n @param initialRelayers Addresses that should be initially granted the relayer role.\n @param initialRelayerThreshold Number of votes needed for a deposit proposal to be considered passed.\n */\n constructor (uint8 chainID, address[] memory initialRelayers, uint initialRelayerThreshold, uint256 fee, uint256 expiry) public {\n _chainID = chainID;\n _relayerThreshold = initialRelayerThreshold;\n _fee = fee;\n _expiry = expiry;\n\n _setupRole(DEFAULT_ADMIN_ROLE, msg.sender);\n _setRoleAdmin(RELAYER_ROLE, DEFAULT_ADMIN_ROLE);\n\n uint initialRelayerCount = initialRelayers.length;\n for (uint i; i < initialRelayerCount; i++) {\n grantRole(RELAYER_ROLE, initialRelayers[i]);\n _totalRelayers++;\n }\n }\n\n /**\n @notice Returns true if {relayer} has the relayer role.\n @param relayer Address to check.\n */\n function isRelayer(address relayer) external view returns (bool) {\n return hasRole(RELAYER_ROLE, relayer);\n }\n\n /**\n @notice Removes admin role from {msg.sender} and grants it to {newAdmin}.\n @notice Only callable by an address that currently has the admin role.\n @param newAdmin Address that admin role will be granted to.\n */\n function renounceAdmin(address newAdmin) external onlyAdmin {\n grantRole(DEFAULT_ADMIN_ROLE, newAdmin);\n renounceRole(DEFAULT_ADMIN_ROLE, msg.sender);\n }\n\n /**\n @notice Pauses deposits, proposal creation and voting, and deposit executions.\n @notice Only callable by an address that currently has the admin role.\n */\n function adminPauseTransfers() external onlyAdmin {\n _pause();\n }\n\n /**\n @notice Unpauses deposits, proposal creation and voting, and deposit executions.\n @notice Only callable by an address that currently has the admin role.\n */\n function adminUnpauseTransfers() external onlyAdmin {\n _unpause();\n }\n\n /**\n @notice Modifies the number of votes required for a proposal to be considered passed.\n @notice Only callable by an address that currently has the admin role.\n @param newThreshold Value {_relayerThreshold} will be changed to.\n @notice Emits {RelayerThresholdChanged} event.\n */\n function adminChangeRelayerThreshold(uint newThreshold) external onlyAdmin {\n _relayerThreshold = newThreshold;\n emit RelayerThresholdChanged(newThreshold);\n }\n\n /**\n @notice Grants {relayerAddress} the relayer role and increases {_totalRelayer} count.\n @notice Only callable by an address that currently has the admin role.\n @param relayerAddress Address of relayer to be added.\n @notice Emits {RelayerAdded} event.\n */\n function adminAddRelayer(address relayerAddress) external onlyAdmin {\n require(!hasRole(RELAYER_ROLE, relayerAddress), \"addr already has relayer role!\");\n grantRole(RELAYER_ROLE, relayerAddress);\n emit RelayerAdded(relayerAddress);\n _totalRelayers++;\n }\n\n /**\n @notice Removes relayer role for {relayerAddress} and decreases {_totalRelayer} count.\n @notice Only callable by an address that currently has the admin role.\n @param relayerAddress Address of relayer to be removed.\n @notice Emits {RelayerRemoved} event.\n */\n function adminRemoveRelayer(address relayerAddress) external onlyAdmin {\n require(hasRole(RELAYER_ROLE, relayerAddress), \"addr doesn't have relayer role!\");\n revokeRole(RELAYER_ROLE, relayerAddress);\n emit RelayerRemoved(relayerAddress);\n _totalRelayers--;\n }\n\n /**\n @notice Sets a new resource for handler contracts that use the IERCHandler interface,\n and maps the {handlerAddress} to {resourceID} in {_resourceIDToHandlerAddress}.\n @notice Only callable by an address that currently has the admin role.\n @param handlerAddress Address of handler resource will be set for.\n @param resourceID ResourceID to be used when making deposits.\n @param tokenAddress Address of contract to be called when a deposit is made and a deposited is executed.\n */\n function adminSetResource(address handlerAddress, bytes32 resourceID, address tokenAddress) external onlyAdmin {\n _resourceIDToHandlerAddress[resourceID] = handlerAddress;\n IERCHandler handler = IERCHandler(handlerAddress);\n handler.setResource(resourceID, tokenAddress);\n }\n\n /**\n @notice Sets a new resource for handler contracts that use the IGenericHandler interface,\n and maps the {handlerAddress} to {resourceID} in {_resourceIDToHandlerAddress}.\n @notice Only callable by an address that currently has the admin role.\n @param handlerAddress Address of handler resource will be set for.\n @param resourceID ResourceID to be used when making deposits.\n @param contractAddress Address of contract to be called when a deposit is made and a deposited is executed.\n */\n function adminSetGenericResource(\n address handlerAddress,\n bytes32 resourceID,\n address contractAddress,\n bytes4 depositFunctionSig,\n bytes4 executeFunctionSig\n ) external onlyAdmin {\n _resourceIDToHandlerAddress[resourceID] = handlerAddress;\n IGenericHandler handler = IGenericHandler(handlerAddress);\n handler.setResource(resourceID, contractAddress, depositFunctionSig, executeFunctionSig);\n }\n\n /**\n @notice Sets a resource as burnable for handler contracts that use the IERCHandler interface.\n @notice Only callable by an address that currently has the admin role.\n @param handlerAddress Address of handler resource will be set for.\n @param tokenAddress Address of contract to be called when a deposit is made and a deposited is executed.\n */\n function adminSetBurnable(address handlerAddress, address tokenAddress) external onlyAdmin {\n IERCHandler handler = IERCHandler(handlerAddress);\n handler.setBurnable(tokenAddress);\n }\n\n /**\n @notice Sets a resource as burnable for handler contracts that use the IERCHandler interface.\n @notice Only callable by an address that currently has the admin role.\n @param handlerAddress Address of handler resource will be set for.\n @param tokenAddress Address of contract to be called when a deposit is made and a deposited is executed.\n */\n function adminSetDecimals(address handlerAddress, address tokenAddress, uint8 srcDecimals, uint8 destDecimals) external onlyAdmin {\n IERCHandler handler = IERCHandler(handlerAddress);\n handler.setDecimals(tokenAddress, srcDecimals, destDecimals);\n }\n\n /**\n @notice Sets a initial deposit nonce for dest chan, this is used to migrate to a new bridge contract.\n @param chainId Dest chain id.\n @param depositNonce Initial deposit nonce.\n */\n function adminSetDepositNonce(uint8 chainId, uint64 depositNonce) external onlyAdmin {\n _depositCounts[chainId] = depositNonce;\n }\n\n /**\n @notice Returns a proposal.\n @param originChainID Chain ID deposit originated from.\n @param depositNonce ID of proposal generated by proposal's origin Bridge contract.\n @param dataHash Hash of data to be provided when deposit proposal is executed.\n @return Proposal which consists of:\n - _dataHash Hash of data to be provided when deposit proposal is executed.\n - _yesVotes Number of votes in favor of proposal.\n - _noVotes Number of votes against proposal.\n - _status Current status of proposal.\n */\n function getProposal(uint8 originChainID, uint64 depositNonce, bytes32 dataHash) external view returns (Proposal memory) {\n uint72 nonceAndID = (uint72(depositNonce) << 8) | uint72(originChainID);\n return _proposals[nonceAndID][dataHash];\n }\n\n /**\n @notice Changes deposit fee.\n @notice Only callable by admin.\n @param newFee Value {_fee} will be updated to.\n */\n function adminChangeFee(uint newFee) external onlyAdmin {\n require(_fee != newFee, \"Current fee is equal to new fee\");\n _fee = newFee;\n }\n\n /**\n @notice Used to manually withdraw funds from ERC safes.\n @param handlerAddress Address of handler to withdraw from.\n @param tokenAddress Address of token to withdraw.\n @param recipient Address to withdraw tokens to.\n @param amountOrTokenID Either the amount of ERC20 tokens or the ERC721 token ID to withdraw.\n */\n function adminWithdraw(\n address handlerAddress,\n address tokenAddress,\n address recipient,\n uint256 amountOrTokenID\n ) external onlyAdmin {\n IERCHandler handler = IERCHandler(handlerAddress);\n handler.withdraw(tokenAddress, recipient, amountOrTokenID);\n }\n\n /**\n @notice Initiates a transfer using a specified handler contract.\n @notice Only callable when Bridge is not paused.\n @param destinationChainID ID of chain deposit will be bridged to.\n @param resourceID ResourceID used to find address of handler to be used for deposit.\n @param data Additional data to be passed to specified handler.\n @notice Emits {Deposit} event.\n */\n function deposit(uint8 destinationChainID, bytes32 resourceID, bytes calldata data) external payable whenNotPaused {\n require(msg.value == _fee, \"Incorrect fee supplied\");\n\n address handler = _resourceIDToHandlerAddress[resourceID];\n require(handler != address(0), \"resourceID not mapped to handler\");\n\n uint64 depositNonce = ++_depositCounts[destinationChainID];\n _depositRecords[depositNonce][destinationChainID] = data;\n\n IDepositExecute depositHandler = IDepositExecute(handler);\n depositHandler.deposit(resourceID, destinationChainID, depositNonce, msg.sender, data);\n\n emit Deposit(destinationChainID, resourceID, depositNonce);\n }\n\n /**\n @notice When called, {msg.sender} will be marked as voting in favor of proposal.\n @notice Only callable by relayers when Bridge is not paused.\n @param chainID ID of chain deposit originated from.\n @param depositNonce ID of deposited generated by origin Bridge contract.\n @param dataHash Hash of data provided when deposit was made.\n @notice Proposal must not have already been passed or executed.\n @notice {msg.sender} must not have already voted on proposal.\n @notice Emits {ProposalEvent} event with status indicating the proposal status.\n @notice Emits {ProposalVote} event.\n */\n function voteProposal(uint8 chainID, uint64 depositNonce, bytes32 resourceID, bytes32 dataHash) external onlyRelayers whenNotPaused {\n\n uint72 nonceAndID = (uint72(depositNonce) << 8) | uint72(chainID);\n Proposal storage proposal = _proposals[nonceAndID][dataHash];\n\n require(_resourceIDToHandlerAddress[resourceID] != address(0), \"no handler for resourceID\");\n require(uint(proposal._status) <= 1, \"proposal already passed/executed/cancelled\");\n require(!_hasVotedOnProposal[nonceAndID][dataHash][msg.sender], \"relayer already voted\");\n\n if (uint(proposal._status) == 0) {\n ++_totalProposals;\n _proposals[nonceAndID][dataHash] = Proposal({\n _resourceID : resourceID,\n _dataHash : dataHash,\n _yesVotes : new address[](1),\n _noVotes : new address[](0),\n _status : ProposalStatus.Active,\n _proposedBlock : block.number\n });\n\n proposal._yesVotes[0] = msg.sender;\n emit ProposalEvent(chainID, depositNonce, ProposalStatus.Active, resourceID, dataHash);\n } else {\n if (sub(block.number, proposal._proposedBlock) > _expiry) {\n // if the number of blocks that has passed since this proposal was\n // submitted exceeds the expiry threshold set, cancel the proposal\n proposal._status = ProposalStatus.Cancelled;\n emit ProposalEvent(chainID, depositNonce, ProposalStatus.Cancelled, resourceID, dataHash);\n } else {\n require(dataHash == proposal._dataHash, \"datahash mismatch\");\n proposal._yesVotes.push(msg.sender);\n }\n\n }\n if (proposal._status != ProposalStatus.Cancelled) {\n _hasVotedOnProposal[nonceAndID][dataHash][msg.sender] = true;\n emit ProposalVote(chainID, depositNonce, proposal._status, resourceID);\n\n // If _depositThreshold is set to 1, then auto finalize\n // or if _relayerThreshold has been exceeded\n if (_relayerThreshold <= 1 || proposal._yesVotes.length >= _relayerThreshold) {\n proposal._status = ProposalStatus.Passed;\n\n emit ProposalEvent(chainID, depositNonce, ProposalStatus.Passed, resourceID, dataHash);\n }\n }\n\n }\n\n /**\n @notice Executes a deposit proposal that is considered passed using a specified handler contract.\n @notice Only callable by relayers when Bridge is not paused.\n @param chainID ID of chain deposit originated from.\n @param depositNonce ID of deposited generated by origin Bridge contract.\n @param dataHash Hash of data originally provided when deposit was made.\n @notice Proposal must be past expiry threshold.\n @notice Emits {ProposalEvent} event with status {Cancelled}.\n */\n function cancelProposal(uint8 chainID, uint64 depositNonce, bytes32 dataHash) public onlyAdminOrRelayer {\n uint72 nonceAndID = (uint72(depositNonce) << 8) | uint72(chainID);\n Proposal storage proposal = _proposals[nonceAndID][dataHash];\n\n require(proposal._status != ProposalStatus.Cancelled, \"Proposal already cancelled\");\n require(sub(block.number, proposal._proposedBlock) > _expiry, \"Proposal not at expiry threshold\");\n\n proposal._status = ProposalStatus.Cancelled;\n emit ProposalEvent(chainID, depositNonce, ProposalStatus.Cancelled, proposal._resourceID, proposal._dataHash);\n\n }\n\n /**\n @notice Executes a deposit proposal that is considered passed using a specified handler contract.\n @notice Only callable by relayers when Bridge is not paused.\n @param chainID ID of chain deposit originated from.\n @param resourceID ResourceID to be used when making deposits.\n @param depositNonce ID of deposited generated by origin Bridge contract.\n @param data Data originally provided when deposit was made.\n @notice Proposal must have Passed status.\n @notice Hash of {data} must equal proposal's {dataHash}.\n @notice Emits {ProposalEvent} event with status {Executed}.\n */\n function executeProposal(uint8 chainID, uint64 depositNonce, bytes calldata data, bytes32 resourceID) external onlyRelayers whenNotPaused {\n address handler = _resourceIDToHandlerAddress[resourceID];\n uint72 nonceAndID = (uint72(depositNonce) << 8) | uint72(chainID);\n bytes32 dataHash = keccak256(abi.encodePacked(handler, data));\n Proposal storage proposal = _proposals[nonceAndID][dataHash];\n\n require(proposal._status == ProposalStatus.Passed, \"proposal already transferred\");\n require(dataHash == proposal._dataHash, \"data doesn't match datahash\");\n\n proposal._status = ProposalStatus.Executed;\n\n IDepositExecute depositHandler = IDepositExecute(_resourceIDToHandlerAddress[proposal._resourceID]);\n depositHandler.executeProposal(proposal._resourceID, data);\n\n emit ProposalEvent(chainID, depositNonce, proposal._status, proposal._resourceID, proposal._dataHash);\n }\n\n /**\n @notice Transfers eth in the contract to the specified addresses. The parameters addrs and amounts are mapped 1-1.\n This means that the address at index 0 for addrs will receive the amount (in WEI) from amounts at index 0.\n @param addrs Array of addresses to transfer {amounts} to.\n @param amounts Array of amonuts to transfer to {addrs}.\n */\n function transferFunds(address payable[] calldata addrs, uint[] calldata amounts) external onlyAdmin {\n require(addrs.length == amounts.length, \"length of address and amounts dismatch\");\n uint addrCount = addrs.length;\n for (uint i = 0; i < addrCount; i++) {\n addrs[i].transfer(amounts[i]);\n }\n }\n\n}\n", - "sourcePath": "/root/dev-spaces/me/chainbridge-solidity/contracts/Bridge.sol", - "ast": { - "absolutePath": "project:/contracts/Bridge.sol", - "exportedSymbols": { - "Bridge": [2244] - }, - "id": 2245, - "license": null, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1095, - "literals": ["solidity", "0.7", ".0"], - "nodeType": "PragmaDirective", - "src": "0:22:4" - }, - { - "id": 1096, - "literals": ["experimental", "ABIEncoderV2"], - "nodeType": "PragmaDirective", - "src": "23:33:4" - }, - { - "absolutePath": "@openzeppelin/contracts/access/AccessControl.sol", - "file": "@openzeppelin/contracts/access/AccessControl.sol", - "id": 1097, - "nodeType": "ImportDirective", - "scope": 2245, - "sourceUnit": 283, - "src": "58:58:4", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "project:/contracts/utils/Pausable.sol", - "file": "./utils/Pausable.sol", - "id": 1098, - "nodeType": "ImportDirective", - "scope": 2245, - "sourceUnit": 2436, - "src": "117:30:4", - "symbolAliases": [], - "unitAlias": "" + ] }, - { - "absolutePath": "project:/contracts/utils/SafeMath.sol", - "file": "./utils/SafeMath.sol", - "id": 1099, - "nodeType": "ImportDirective", - "scope": 2245, - "sourceUnit": 2485, - "src": "148:30:4", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "project:/contracts/interfaces/IDepositExecute.sol", - "file": "./interfaces/IDepositExecute.sol", - "id": 1100, - "nodeType": "ImportDirective", - "scope": 2245, - "sourceUnit": 2281, - "src": "179:42:4", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "project:/contracts/interfaces/IBridge.sol", - "file": "./interfaces/IBridge.sol", - "id": 1101, - "nodeType": "ImportDirective", - "scope": 2245, - "sourceUnit": 2255, - "src": "222:34:4", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "project:/contracts/interfaces/IERCHandler.sol", - "file": "./interfaces/IERCHandler.sol", - "id": 1102, - "nodeType": "ImportDirective", - "scope": 2245, - "sourceUnit": 2319, - "src": "257:38:4", - "symbolAliases": [], - "unitAlias": "" + "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", + "nodeType": "YulFunctionDefinition", + "src": "1851:117:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2019:81:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2029:65:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2044:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2051:42:40", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "2040:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "2040:54:40" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "2029:7:40" + } + ] + } + ] }, - { - "absolutePath": "project:/contracts/interfaces/IGenericHandler.sol", - "file": "./interfaces/IGenericHandler.sol", - "id": 1103, - "nodeType": "ImportDirective", - "scope": 2245, - "sourceUnit": 2335, - "src": "296:42:4", - "symbolAliases": [], - "unitAlias": "" + "name": "cleanup_t_uint160", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2001:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "2011:7:40", + "type": "" + } + ], + "src": "1974:126:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2151:51:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2161:35:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2190:5:40" + } + ], + "functionName": { + "name": "cleanup_t_uint160", + "nodeType": "YulIdentifier", + "src": "2172:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "2172:24:40" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "2161:7:40" + } + ] + } + ] }, - { - "abstract": false, - "baseContracts": [ - { - "arguments": null, - "baseName": { - "contractScope": null, - "id": 1105, - "name": "Pausable", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2435, - "src": "498:8:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Pausable_$2435", - "typeString": "contract Pausable" + "name": "cleanup_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2133:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "2143:7:40", + "type": "" + } + ], + "src": "2106:96:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2251:79:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2308:16:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2317:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2320:1:40", + "type": "", + "value": "0" } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2310:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "2310:12:40" }, - "id": 1106, - "nodeType": "InheritanceSpecifier", - "src": "498:8:4" - }, - { - "arguments": null, - "baseName": { - "contractScope": null, - "id": 1107, - "name": "AccessControl", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 282, - "src": "508:13:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_AccessControl_$282", - "typeString": "contract AccessControl" - } + "nodeType": "YulExpressionStatement", + "src": "2310:12:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2274:5:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2299:5:40" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "2281:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "2281:24:40" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "2271:2:40" }, - "id": 1108, - "nodeType": "InheritanceSpecifier", - "src": "508:13:4" + "nodeType": "YulFunctionCall", + "src": "2271:35:40" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "2264:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "2264:43:40" + }, + "nodeType": "YulIf", + "src": "2261:63:40" + } + ] + }, + "name": "validator_revert_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2244:5:40", + "type": "" + } + ], + "src": "2208:122:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2399:80:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2409:22:40", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2424:6:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "2418:5:40" }, + "nodeType": "YulFunctionCall", + "src": "2418:13:40" + }, + "variableNames": [ { - "arguments": null, - "baseName": { - "contractScope": null, - "id": 1109, - "name": "SafeMath", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2484, - "src": "523:8:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$2484", - "typeString": "contract SafeMath" - } + "name": "value", + "nodeType": "YulIdentifier", + "src": "2409:5:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2467:5:40" + } + ], + "functionName": { + "name": "validator_revert_t_address", + "nodeType": "YulIdentifier", + "src": "2440:26:40" + }, + "nodeType": "YulFunctionCall", + "src": "2440:33:40" + }, + "nodeType": "YulExpressionStatement", + "src": "2440:33:40" + } + ] + }, + "name": "abi_decode_t_address_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "2377:6:40", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "2385:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2393:5:40", + "type": "" + } + ], + "src": "2336:143:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2615:619:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2625:90:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2707:6:40" + } + ], + "functionName": { + "name": "array_allocation_size_t_array$_t_address_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "2650:56:40" }, - "id": 1110, - "nodeType": "InheritanceSpecifier", - "src": "523:8:4" + "nodeType": "YulFunctionCall", + "src": "2650:64:40" + } + ], + "functionName": { + "name": "allocate_memory", + "nodeType": "YulIdentifier", + "src": "2634:15:40" + }, + "nodeType": "YulFunctionCall", + "src": "2634:81:40" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "2625:5:40" } - ], - "contractDependencies": [282, 601, 2435, 2484], - "contractKind": "contract", - "documentation": { - "id": 1104, - "nodeType": "StructuredDocumentation", - "src": "340:138:4", - "text": "@title Facilitates deposits, creation and votiing of deposit proposals, and deposit executions.\n@author ChainSafe Systems." - }, - "fullyImplemented": true, - "id": 2244, - "linearizedBaseContracts": [2244, 2484, 282, 601, 2435], - "name": "Bridge", - "nodeType": "ContractDefinition", - "nodes": [ + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2724:16:40", + "value": { + "name": "array", + "nodeType": "YulIdentifier", + "src": "2735:5:40" + }, + "variables": [ { - "constant": false, - "functionSelector": "beab7131", - "id": 1112, - "mutability": "mutable", - "name": "_chainID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 2244, - "src": "539:23:4", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 1111, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "539:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "public" + "name": "dst", + "nodeType": "YulTypedName", + "src": "2728:3:40", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "2757:5:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2764:6:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2750:6:40" }, - { - "constant": false, - "functionSelector": "d7a9cd79", - "id": 1114, - "mutability": "mutable", - "name": "_relayerThreshold", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 2244, - "src": "568:32:4", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1113, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "568:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "public" + "nodeType": "YulFunctionCall", + "src": "2750:21:40" + }, + "nodeType": "YulExpressionStatement", + "src": "2750:21:40" + }, + { + "nodeType": "YulAssignment", + "src": "2780:23:40", + "value": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "2791:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2798:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2787:3:40" }, + "nodeType": "YulFunctionCall", + "src": "2787:16:40" + }, + "variableNames": [ { - "constant": false, - "functionSelector": "802aabe8", - "id": 1116, - "mutability": "mutable", - "name": "_totalRelayers", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 2244, - "src": "606:29:4", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1115, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "606:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "name": "dst", + "nodeType": "YulIdentifier", + "src": "2780:3:40" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2813:44:40", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2831:6:40" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2843:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2851:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "2839:3:40" }, - "value": null, - "visibility": "public" + "nodeType": "YulFunctionCall", + "src": "2839:17:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2827:3:40" }, + "nodeType": "YulFunctionCall", + "src": "2827:30:40" + }, + "variables": [ { - "constant": false, - "functionSelector": "9d5773e0", - "id": 1118, - "mutability": "mutable", - "name": "_totalProposals", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 2244, - "src": "641:30:4", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1117, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "641:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "name": "srcEnd", + "nodeType": "YulTypedName", + "src": "2817:6:40", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2885:103:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", + "nodeType": "YulIdentifier", + "src": "2899:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "2899:79:40" }, - "value": null, - "visibility": "public" + "nodeType": "YulExpressionStatement", + "src": "2899:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "2872:6:40" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "2880:3:40" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "2869:2:40" }, - { - "constant": false, - "functionSelector": "c5b37c22", - "id": 1120, - "mutability": "mutable", - "name": "_fee", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 2244, - "src": "677:19:4", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "nodeType": "YulFunctionCall", + "src": "2869:15:40" + }, + "nodeType": "YulIf", + "src": "2866:122:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3073:155:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "3088:21:40", + "value": { + "name": "src", + "nodeType": "YulIdentifier", + "src": "3106:3:40" }, - "typeName": { - "id": 1119, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "677:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "variables": [ + { + "name": "elementPos", + "nodeType": "YulTypedName", + "src": "3092:10:40", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3130:3:40" + }, + { + "arguments": [ + { + "name": "elementPos", + "nodeType": "YulIdentifier", + "src": "3167:10:40" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "3179:3:40" + } + ], + "functionName": { + "name": "abi_decode_t_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "3135:31:40" + }, + "nodeType": "YulFunctionCall", + "src": "3135:48:40" } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3123:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "3123:61:40" }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "functionSelector": "c5ec8970", - "id": 1122, - "mutability": "mutable", - "name": "_expiry", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 2244, - "src": "702:22:4", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1121, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "702:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "nodeType": "YulExpressionStatement", + "src": "3123:61:40" + }, + { + "nodeType": "YulAssignment", + "src": "3197:21:40", + "value": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3208:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3213:4:40", + "type": "", + "value": "0x20" } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3204:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "3204:14:40" }, - "value": null, - "visibility": "public" + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3197:3:40" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "3026:3:40" + }, + { + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "3031:6:40" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "3023:2:40" }, - { - "canonicalName": "Bridge.Vote", - "id": 1125, - "members": [ + "nodeType": "YulFunctionCall", + "src": "3023:15:40" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "3039:25:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3041:21:40", + "value": { + "arguments": [ { - "id": 1123, - "name": "No", - "nodeType": "EnumValue", - "src": "742:2:4" + "name": "src", + "nodeType": "YulIdentifier", + "src": "3052:3:40" }, { - "id": 1124, - "name": "Yes", - "nodeType": "EnumValue", - "src": "746:3:4" + "kind": "number", + "nodeType": "YulLiteral", + "src": "3057:4:40", + "type": "", + "value": "0x20" } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3048:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "3048:14:40" + }, + "variableNames": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "3041:3:40" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "3001:21:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "3003:17:40", + "value": { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3014:6:40" + }, + "variables": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "3007:3:40", + "type": "" + } + ] + } + ] + }, + "src": "2997:231:40" + } + ] + }, + "name": "abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "2585:6:40", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "2593:6:40", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "2601:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "2609:5:40", + "type": "" + } + ], + "src": "2502:732:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3345:297:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3394:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulIdentifier", + "src": "3396:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "3396:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "3396:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3373:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3381:4:40", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3369:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "3369:17:40" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "3388:3:40" + } ], - "name": "Vote", - "nodeType": "EnumDefinition", - "src": "731:19:4" + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "3365:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "3365:27:40" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3358:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "3358:35:40" + }, + "nodeType": "YulIf", + "src": "3355:122:40" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3486:27:40", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3506:6:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "3500:5:40" }, + "nodeType": "YulFunctionCall", + "src": "3500:13:40" + }, + "variables": [ { - "canonicalName": "Bridge.ProposalStatus", - "id": 1131, - "members": [ - { - "id": 1126, - "name": "Inactive", - "nodeType": "EnumValue", - "src": "777:8:4" - }, - { - "id": 1127, - "name": "Active", - "nodeType": "EnumValue", - "src": "787:6:4" - }, - { - "id": 1128, - "name": "Passed", - "nodeType": "EnumValue", - "src": "795:6:4" - }, - { - "id": 1129, - "name": "Executed", - "nodeType": "EnumValue", - "src": "803:8:4" - }, - { - "id": 1130, - "name": "Cancelled", - "nodeType": "EnumValue", - "src": "813:9:4" - } + "name": "length", + "nodeType": "YulTypedName", + "src": "3490:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3522:114:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3609:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3617:4:40", + "type": "", + "value": "0x20" + } ], - "name": "ProposalStatus", - "nodeType": "EnumDefinition", - "src": "756:67:4" + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3605:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "3605:17:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "3624:6:40" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "3632:3:40" + } + ], + "functionName": { + "name": "abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr_fromMemory", + "nodeType": "YulIdentifier", + "src": "3531:73:40" }, + "nodeType": "YulFunctionCall", + "src": "3531:105:40" + }, + "variableNames": [ { - "canonicalName": "Bridge.Proposal", - "id": 1146, - "members": [ - { - "constant": false, - "id": 1133, - "mutability": "mutable", - "name": "_resourceID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1146, - "src": "855:19:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1132, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "855:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1135, - "mutability": "mutable", - "name": "_dataHash", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1146, - "src": "884:17:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1134, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "884:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1138, - "mutability": "mutable", - "name": "_yesVotes", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1146, - "src": "911:19:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - }, - "typeName": { - "baseType": { - "id": 1136, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "911:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1137, - "length": null, - "nodeType": "ArrayTypeName", - "src": "911:9:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1141, - "mutability": "mutable", - "name": "_noVotes", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1146, - "src": "940:18:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - }, - "typeName": { - "baseType": { - "id": 1139, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "940:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1140, - "length": null, - "nodeType": "ArrayTypeName", - "src": "940:9:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - }, - "value": null, - "visibility": "internal" - }, + "name": "array", + "nodeType": "YulIdentifier", + "src": "3522:5:40" + } + ] + } + ] + }, + "name": "abi_decode_t_array$_t_address_$dyn_memory_ptr_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "3323:6:40", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "3331:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "3339:5:40", + "type": "" + } + ], + "src": "3257:385:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3693:32:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3703:16:40", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3714:5:40" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "3703:7:40" + } + ] + } + ] + }, + "name": "cleanup_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "3675:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "3685:7:40", + "type": "" + } + ], + "src": "3648:77:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3774:79:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3831:16:40", + "statements": [ + { + "expression": { + "arguments": [ { - "constant": false, - "id": 1143, - "mutability": "mutable", - "name": "_status", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1146, - "src": "968:22:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - }, - "typeName": { - "contractScope": null, - "id": 1142, - "name": "ProposalStatus", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1131, - "src": "968:14:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - } - }, - "value": null, - "visibility": "internal" + "kind": "number", + "nodeType": "YulLiteral", + "src": "3840:1:40", + "type": "", + "value": "0" }, { - "constant": false, - "id": 1145, - "mutability": "mutable", - "name": "_proposedBlock", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1146, - "src": "1000:22:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1144, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1000:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" + "kind": "number", + "nodeType": "YulLiteral", + "src": "3843:1:40", + "type": "", + "value": "0" } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3833:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "3833:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "3833:12:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3797:5:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3822:5:40" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "3804:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "3804:24:40" + } ], - "name": "Proposal", - "nodeType": "StructDefinition", - "scope": 2244, - "src": "829:200:4", - "visibility": "public" + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "3794:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "3794:35:40" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3787:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "3787:43:40" + }, + "nodeType": "YulIf", + "src": "3784:63:40" + } + ] + }, + "name": "validator_revert_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "3767:5:40", + "type": "" + } + ], + "src": "3731:122:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3922:80:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3932:22:40", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3947:6:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "3941:5:40" }, + "nodeType": "YulFunctionCall", + "src": "3941:13:40" + }, + "variableNames": [ { - "constant": false, - "functionSelector": "4b0b919d", - "id": 1150, - "mutability": "mutable", - "name": "_depositCounts", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 2244, - "src": "1083:46:4", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint8_$_t_uint64_$", - "typeString": "mapping(uint8 => uint64)" + "name": "value", + "nodeType": "YulIdentifier", + "src": "3932:5:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3990:5:40" + } + ], + "functionName": { + "name": "validator_revert_t_uint256", + "nodeType": "YulIdentifier", + "src": "3963:26:40" + }, + "nodeType": "YulFunctionCall", + "src": "3963:33:40" + }, + "nodeType": "YulExpressionStatement", + "src": "3963:33:40" + } + ] + }, + "name": "abi_decode_t_uint256_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "3900:6:40", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "3908:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "3916:5:40", + "type": "" + } + ], + "src": "3859:143:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4176:1008:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "4223:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "4225:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "4225:79:40" }, - "typeName": { - "id": 1149, - "keyType": { - "id": 1147, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1091:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Mapping", - "src": "1083:24:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint8_$_t_uint64_$", - "typeString": "mapping(uint8 => uint64)" - }, - "valueType": { - "id": 1148, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "1100:6:4", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } + "nodeType": "YulExpressionStatement", + "src": "4225:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4197:7:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4206:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "4193:3:40" }, - "value": null, - "visibility": "public" + "nodeType": "YulFunctionCall", + "src": "4193:23:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4218:3:40", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "4189:3:40" }, + "nodeType": "YulFunctionCall", + "src": "4189:33:40" + }, + "nodeType": "YulIf", + "src": "4186:120:40" + }, + { + "nodeType": "YulBlock", + "src": "4316:126:40", + "statements": [ { - "constant": false, - "functionSelector": "84db809f", - "id": 1154, - "mutability": "mutable", - "name": "_resourceIDToHandlerAddress", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 2244, - "src": "1172:62:4", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", - "typeString": "mapping(bytes32 => address)" - }, - "typeName": { - "id": 1153, - "keyType": { - "id": 1151, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1180:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Mapping", - "src": "1172:27:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", - "typeString": "mapping(bytes32 => address)" - }, - "valueType": { - "id": 1152, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1191:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "value": null, - "visibility": "public" + "nodeType": "YulVariableDeclaration", + "src": "4331:15:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4345:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "4335:6:40", + "type": "" + } + ] }, { - "constant": false, - "functionSelector": "3ee7094a", - "id": 1160, - "mutability": "mutable", - "name": "_depositRecords", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 2244, - "src": "1291:65:4", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_uint8_$_t_bytes_storage_$_$", - "typeString": "mapping(uint64 => mapping(uint8 => bytes))" - }, - "typeName": { - "id": 1159, - "keyType": { - "id": 1155, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "1299:6:4", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "nodeType": "Mapping", - "src": "1291:42:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_uint8_$_t_bytes_storage_$_$", - "typeString": "mapping(uint64 => mapping(uint8 => bytes))" + "nodeType": "YulAssignment", + "src": "4360:72:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4404:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4415:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4400:3:40" }, - "valueType": { - "id": 1158, - "keyType": { - "id": 1156, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1317:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Mapping", - "src": "1309:23:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint8_$_t_bytes_storage_$", - "typeString": "mapping(uint8 => bytes)" - }, - "valueType": { - "id": 1157, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "1326:5:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - } - } + "nodeType": "YulFunctionCall", + "src": "4400:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4424:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_uint8_fromMemory", + "nodeType": "YulIdentifier", + "src": "4370:29:40" }, - "value": null, - "visibility": "public" - }, + "nodeType": "YulFunctionCall", + "src": "4370:62:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "4360:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "4452:307:40", + "statements": [ { - "constant": false, - "functionSelector": "50598719", - "id": 1166, - "mutability": "mutable", - "name": "_proposals", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 2244, - "src": "1427:65:4", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint72_$_t_mapping$_t_bytes32_$_t_struct$_Proposal_$1146_storage_$_$", - "typeString": "mapping(uint72 => mapping(bytes32 => struct Bridge.Proposal))" - }, - "typeName": { - "id": 1165, - "keyType": { - "id": 1161, - "name": "uint72", - "nodeType": "ElementaryTypeName", - "src": "1435:6:4", - "typeDescriptions": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - } - }, - "nodeType": "Mapping", - "src": "1427:47:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint72_$_t_mapping$_t_bytes32_$_t_struct$_Proposal_$1146_storage_$_$", - "typeString": "mapping(uint72 => mapping(bytes32 => struct Bridge.Proposal))" + "nodeType": "YulVariableDeclaration", + "src": "4467:39:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4491:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4502:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4487:3:40" }, - "valueType": { - "id": 1164, - "keyType": { - "id": 1162, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1453:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Mapping", - "src": "1445:28:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$1146_storage_$", - "typeString": "mapping(bytes32 => struct Bridge.Proposal)" - }, - "valueType": { - "contractScope": null, - "id": 1163, - "name": "Proposal", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1146, - "src": "1464:8:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Proposal_$1146_storage_ptr", - "typeString": "struct Bridge.Proposal" - } - } - } + "nodeType": "YulFunctionCall", + "src": "4487:18:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "4481:5:40" }, - "value": null, - "visibility": "public" + "nodeType": "YulFunctionCall", + "src": "4481:25:40" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "4471:6:40", + "type": "" + } + ] }, { - "constant": false, - "functionSelector": "7febe63f", - "id": 1174, - "mutability": "mutable", - "name": "_hasVotedOnProposal", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 2244, - "src": "1577:90:4", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint72_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$_$", - "typeString": "mapping(uint72 => mapping(bytes32 => mapping(address => bool)))" - }, - "typeName": { - "id": 1173, - "keyType": { - "id": 1167, - "name": "uint72", - "nodeType": "ElementaryTypeName", - "src": "1585:6:4", - "typeDescriptions": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - } - }, - "nodeType": "Mapping", - "src": "1577:63:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint72_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$_$", - "typeString": "mapping(uint72 => mapping(bytes32 => mapping(address => bool)))" + "body": { + "nodeType": "YulBlock", + "src": "4553:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "4555:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "4555:79:40" }, - "valueType": { - "id": 1172, - "keyType": { - "id": 1168, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1603:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Mapping", - "src": "1595:44:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(bytes32 => mapping(address => bool))" - }, - "valueType": { - "id": 1171, - "keyType": { - "id": 1169, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1622:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "1614:24:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "valueType": { - "id": 1170, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1633:4:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - } - } + "nodeType": "YulExpressionStatement", + "src": "4555:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4525:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4533:18:40", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "4522:2:40" }, - "value": null, - "visibility": "public" + "nodeType": "YulFunctionCall", + "src": "4522:30:40" + }, + "nodeType": "YulIf", + "src": "4519:117:40" }, { - "anonymous": false, - "documentation": null, - "id": 1178, - "name": "RelayerThresholdChanged", - "nodeType": "EventDefinition", - "parameters": { - "id": 1177, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1176, - "indexed": true, - "mutability": "mutable", - "name": "newThreshold", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1178, - "src": "1704:25:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1175, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "1704:4:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } + "nodeType": "YulAssignment", + "src": "4650:99:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4721:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4732:6:40" + } ], - "src": "1703:27:4" + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4717:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "4717:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4741:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_array$_t_address_$dyn_memory_ptr_fromMemory", + "nodeType": "YulIdentifier", + "src": "4660:56:40" }, - "src": "1674:57:4" + "nodeType": "YulFunctionCall", + "src": "4660:89:40" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "4650:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "4769:129:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "4784:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4798:2:40", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "4788:6:40", + "type": "" + } + ] }, { - "anonymous": false, - "documentation": null, - "id": 1182, - "name": "RelayerAdded", - "nodeType": "EventDefinition", - "parameters": { - "id": 1181, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1180, - "indexed": true, - "mutability": "mutable", - "name": "relayer", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1182, - "src": "1755:23:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1179, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1755:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } + "nodeType": "YulAssignment", + "src": "4814:74:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4860:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4871:6:40" + } ], - "src": "1754:25:4" + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4856:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "4856:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4880:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_uint256_fromMemory", + "nodeType": "YulIdentifier", + "src": "4824:31:40" }, - "src": "1736:44:4" + "nodeType": "YulFunctionCall", + "src": "4824:64:40" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "4814:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "4908:129:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "4923:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4937:2:40", + "type": "", + "value": "96" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "4927:6:40", + "type": "" + } + ] }, { - "anonymous": false, - "documentation": null, - "id": 1186, - "name": "RelayerRemoved", - "nodeType": "EventDefinition", - "parameters": { - "id": 1185, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1184, - "indexed": true, - "mutability": "mutable", - "name": "relayer", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1186, - "src": "1806:23:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1183, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1806:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } + "nodeType": "YulAssignment", + "src": "4953:74:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4999:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5010:6:40" + } ], - "src": "1805:25:4" + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4995:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "4995:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "5019:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_uint256_fromMemory", + "nodeType": "YulIdentifier", + "src": "4963:31:40" }, - "src": "1785:46:4" + "nodeType": "YulFunctionCall", + "src": "4963:64:40" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "4953:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "5047:130:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "5062:17:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5076:3:40", + "type": "", + "value": "128" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "5066:6:40", + "type": "" + } + ] }, { - "anonymous": false, - "documentation": null, - "id": 1194, - "name": "Deposit", - "nodeType": "EventDefinition", - "parameters": { - "id": 1193, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1188, - "indexed": true, - "mutability": "mutable", - "name": "destinationChainID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1194, - "src": "1859:34:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 1187, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1859:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1190, - "indexed": true, - "mutability": "mutable", - "name": "resourceID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1194, - "src": "1903:26:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1189, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1903:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1192, - "indexed": true, - "mutability": "mutable", - "name": "depositNonce", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1194, - "src": "1939:28:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 1191, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "1939:6:4", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "value": null, - "visibility": "internal" - } + "nodeType": "YulAssignment", + "src": "5093:74:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5139:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5150:6:40" + } ], - "src": "1849:124:4" + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5135:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "5135:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "5159:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_uint256_fromMemory", + "nodeType": "YulIdentifier", + "src": "5103:31:40" }, - "src": "1836:138:4" + "nodeType": "YulFunctionCall", + "src": "5103:64:40" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "5093:6:40" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint8t_array$_t_address_$dyn_memory_ptrt_uint256t_uint256t_uint256_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "4114:9:40", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "4125:7:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "4137:6:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "4145:6:40", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "4153:6:40", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "4161:6:40", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "4169:6:40", + "type": "" + } + ], + "src": "4008:1176:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5218:152:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5235:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5238:77:40", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5228:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "5228:88:40" + }, + "nodeType": "YulExpressionStatement", + "src": "5228:88:40" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5332:1:40", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5335:4:40", + "type": "", + "value": "0x32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5325:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "5325:15:40" + }, + "nodeType": "YulExpressionStatement", + "src": "5325:15:40" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5356:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5359:4:40", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "5349:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "5349:15:40" + }, + "nodeType": "YulExpressionStatement", + "src": "5349:15:40" + } + ] + }, + "name": "panic_error_0x32", + "nodeType": "YulFunctionDefinition", + "src": "5190:180:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5404:152:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5421:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5424:77:40", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5414:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "5414:88:40" + }, + "nodeType": "YulExpressionStatement", + "src": "5414:88:40" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5518:1:40", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5521:4:40", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5511:6:40" }, + "nodeType": "YulFunctionCall", + "src": "5511:15:40" + }, + "nodeType": "YulExpressionStatement", + "src": "5511:15:40" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5542:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5545:4:40", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "5535:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "5535:15:40" + }, + "nodeType": "YulExpressionStatement", + "src": "5535:15:40" + } + ] + }, + "name": "panic_error_0x11", + "nodeType": "YulFunctionDefinition", + "src": "5376:180:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5605:190:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5615:33:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5642:5:40" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "5624:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "5624:24:40" + }, + "variableNames": [ { - "anonymous": false, - "documentation": null, - "id": 1206, - "name": "ProposalEvent", - "nodeType": "EventDefinition", - "parameters": { - "id": 1205, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1196, - "indexed": true, - "mutability": "mutable", - "name": "originChainID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1206, - "src": "2008:37:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 1195, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "2008:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1198, - "indexed": true, - "mutability": "mutable", - "name": "depositNonce", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1206, - "src": "2055:36:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 1197, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "2055:6:4", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1200, - "indexed": true, - "mutability": "mutable", - "name": "status", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1206, - "src": "2101:30:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - }, - "typeName": { - "contractScope": null, - "id": 1199, - "name": "ProposalStatus", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1131, - "src": "2101:14:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1202, - "indexed": false, - "mutability": "mutable", - "name": "resourceID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1206, - "src": "2141:18:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1201, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2141:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1204, - "indexed": false, - "mutability": "mutable", - "name": "dataHash", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1206, - "src": "2169:16:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1203, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2169:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1998:193:4" + "name": "value", + "nodeType": "YulIdentifier", + "src": "5615:5:40" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5738:22:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "5740:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "5740:18:40" }, - "src": "1979:213:4" + "nodeType": "YulExpressionStatement", + "src": "5740:18:40" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5663:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5670:66:40", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "5660:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "5660:77:40" + }, + "nodeType": "YulIf", + "src": "5657:103:40" + }, + { + "nodeType": "YulAssignment", + "src": "5769:20:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5780:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5787:1:40", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5776:3:40" }, + "nodeType": "YulFunctionCall", + "src": "5776:13:40" + }, + "variableNames": [ { - "anonymous": false, - "documentation": null, - "id": 1216, - "name": "ProposalVote", - "nodeType": "EventDefinition", - "parameters": { - "id": 1215, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1208, - "indexed": true, - "mutability": "mutable", - "name": "originChainID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1216, - "src": "2226:29:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 1207, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "2226:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1210, - "indexed": true, - "mutability": "mutable", - "name": "depositNonce", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1216, - "src": "2265:28:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 1209, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "2265:6:4", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "value": null, - "visibility": "internal" - }, + "name": "ret", + "nodeType": "YulIdentifier", + "src": "5769:3:40" + } + ] + } + ] + }, + "name": "increment_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "5591:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nodeType": "YulTypedName", + "src": "5601:3:40", + "type": "" + } + ], + "src": "5562:233:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5915:34:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5925:18:40", + "value": { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "5940:3:40" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "5925:11:40" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "5887:3:40", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "5892:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "5903:11:40", + "type": "" + } + ], + "src": "5801:148:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6061:67:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "6083:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6091:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6079:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "6079:14:40" + }, + { + "hexValue": "416363657373436f6e74726f6c3a206163636f756e7420", + "kind": "string", + "nodeType": "YulLiteral", + "src": "6095:25:40", + "type": "", + "value": "AccessControl: account " + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6072:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "6072:49:40" + }, + "nodeType": "YulExpressionStatement", + "src": "6072:49:40" + } + ] + }, + "name": "store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "6053:6:40", + "type": "" + } + ], + "src": "5955:173:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6298:238:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6308:92:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "6392:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6397:2:40", + "type": "", + "value": "23" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "6315:76:40" + }, + "nodeType": "YulFunctionCall", + "src": "6315:85:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "6308:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "6498:3:40" + } + ], + "functionName": { + "name": "store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874", + "nodeType": "YulIdentifier", + "src": "6409:88:40" + }, + "nodeType": "YulFunctionCall", + "src": "6409:93:40" + }, + "nodeType": "YulExpressionStatement", + "src": "6409:93:40" + }, + { + "nodeType": "YulAssignment", + "src": "6511:19:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "6522:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6527:2:40", + "type": "", + "value": "23" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6518:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "6518:12:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "6511:3:40" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "6286:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "6294:3:40", + "type": "" + } + ], + "src": "6134:402:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6601:40:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6612:22:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "6628:5:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "6622:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "6622:12:40" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "6612:6:40" + } + ] + } + ] + }, + "name": "array_length_t_string_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "6584:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "6594:6:40", + "type": "" + } + ], + "src": "6542:99:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6709:184:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "6719:10:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6728:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "6723:1:40", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6788:63:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ { - "constant": false, - "id": 1212, - "indexed": true, - "mutability": "mutable", - "name": "status", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1216, - "src": "2303:29:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - }, - "typeName": { - "contractScope": null, - "id": 1211, - "name": "ProposalStatus", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1131, - "src": "2303:14:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - } - }, - "value": null, - "visibility": "internal" + "name": "dst", + "nodeType": "YulIdentifier", + "src": "6813:3:40" }, { - "constant": false, - "id": 1214, - "indexed": false, - "mutability": "mutable", - "name": "resourceID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1216, - "src": "2342:18:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1213, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2342:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" + "name": "i", + "nodeType": "YulIdentifier", + "src": "6818:1:40" } - ], - "src": "2216:150:4" - }, - "src": "2198:169:4" - }, - { - "constant": true, - "functionSelector": "926d7d7f", - "id": 1221, - "mutability": "constant", - "name": "RELAYER_ROLE", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 2244, - "src": "2373:64:4", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1217, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2373:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": { - "argumentTypes": null, - "arguments": [ + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6809:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "6809:11:40" + }, + { + "arguments": [ { - "argumentTypes": null, - "hexValue": "52454c415945525f524f4c45", - "id": 1219, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2422:14:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_e2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc4", - "typeString": "literal_string \"RELAYER_ROLE\"" + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "6832:3:40" }, - "value": "RELAYER_ROLE" - } - ], - "expression": { - "argumentTypes": [ { - "typeIdentifier": "t_stringliteral_e2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc4", - "typeString": "literal_string \"RELAYER_ROLE\"" + "name": "i", + "nodeType": "YulIdentifier", + "src": "6837:1:40" } - ], - "id": 1218, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -8, - "src": "2412:9:4", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6828:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "6828:11:40" } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "6822:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "6822:18:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6802:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "6802:39:40" + }, + "nodeType": "YulExpressionStatement", + "src": "6802:39:40" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "6749:1:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "6752:6:40" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "6746:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "6746:13:40" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "6760:19:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6762:15:40", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "6771:1:40" }, - "id": 1220, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2412:25:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6774:2:40", + "type": "", + "value": "32" } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6767:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "6767:10:40" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "6762:1:40" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "6742:3:40", + "statements": [] + }, + "src": "6738:113:40" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "6871:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "6876:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6867:3:40" }, - "visibility": "public" + "nodeType": "YulFunctionCall", + "src": "6867:16:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6885:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6860:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "6860:27:40" + }, + "nodeType": "YulExpressionStatement", + "src": "6860:27:40" + } + ] + }, + "name": "copy_memory_to_memory_with_cleanup", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "6691:3:40", + "type": "" + }, + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "6696:3:40", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "6701:6:40", + "type": "" + } + ], + "src": "6647:246:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7009:280:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "7019:53:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "7066:5:40" + } + ], + "functionName": { + "name": "array_length_t_string_memory_ptr", + "nodeType": "YulIdentifier", + "src": "7033:32:40" }, + "nodeType": "YulFunctionCall", + "src": "7033:39:40" + }, + "variables": [ { - "body": { - "id": 1227, - "nodeType": "Block", - "src": "2465:40:4", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1223, - "name": "_onlyAdmin", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1274, - "src": "2475:10:4", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", - "typeString": "function ()" - } - }, - "id": 1224, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2475:12:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1225, - "nodeType": "ExpressionStatement", - "src": "2475:12:4" - }, - { - "id": 1226, - "nodeType": "PlaceholderStatement", - "src": "2497:1:4" - } - ] + "name": "length", + "nodeType": "YulTypedName", + "src": "7023:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "7081:96:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "7165:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "7170:6:40" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "7088:76:40" + }, + "nodeType": "YulFunctionCall", + "src": "7088:89:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "7081:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "7225:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7232:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7221:3:40" }, - "documentation": null, - "id": 1228, - "name": "onlyAdmin", - "nodeType": "ModifierDefinition", - "overrides": null, - "parameters": { - "id": 1222, - "nodeType": "ParameterList", - "parameters": [], - "src": "2462:2:4" - }, - "src": "2444:61:4", - "virtual": false, - "visibility": "internal" + "nodeType": "YulFunctionCall", + "src": "7221:16:40" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "7239:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "7244:6:40" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nodeType": "YulIdentifier", + "src": "7186:34:40" + }, + "nodeType": "YulFunctionCall", + "src": "7186:65:40" + }, + "nodeType": "YulExpressionStatement", + "src": "7186:65:40" + }, + { + "nodeType": "YulAssignment", + "src": "7260:23:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "7271:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "7276:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7267:3:40" }, + "nodeType": "YulFunctionCall", + "src": "7267:16:40" + }, + "variableNames": [ { - "body": { - "id": 1234, - "nodeType": "Block", - "src": "2541:49:4", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1230, - "name": "_onlyAdminOrRelayer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1261, - "src": "2551:19:4", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", - "typeString": "function ()" - } - }, - "id": 1231, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2551:21:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1232, - "nodeType": "ExpressionStatement", - "src": "2551:21:4" - }, - { - "id": 1233, - "nodeType": "PlaceholderStatement", - "src": "2582:1:4" - } - ] + "name": "end", + "nodeType": "YulIdentifier", + "src": "7260:3:40" + } + ] + } + ] + }, + "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "6990:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "6997:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "7005:3:40", + "type": "" + } + ], + "src": "6899:390:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7401:61:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "7423:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7431:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7419:3:40" }, - "documentation": null, - "id": 1235, - "name": "onlyAdminOrRelayer", - "nodeType": "ModifierDefinition", - "overrides": null, - "parameters": { - "id": 1229, - "nodeType": "ParameterList", - "parameters": [], - "src": "2538:2:4" - }, - "src": "2511:79:4", - "virtual": false, - "visibility": "internal" + "nodeType": "YulFunctionCall", + "src": "7419:14:40" + }, + { + "hexValue": "206973206d697373696e6720726f6c6520", + "kind": "string", + "nodeType": "YulLiteral", + "src": "7435:19:40", + "type": "", + "value": " is missing role " + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7412:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "7412:43:40" + }, + "nodeType": "YulExpressionStatement", + "src": "7412:43:40" + } + ] + }, + "name": "store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "7393:6:40", + "type": "" + } + ], + "src": "7295:167:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7632:238:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7642:92:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "7726:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7731:2:40", + "type": "", + "value": "17" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "7649:76:40" }, + "nodeType": "YulFunctionCall", + "src": "7649:85:40" + }, + "variableNames": [ { - "body": { - "id": 1241, - "nodeType": "Block", - "src": "2620:43:4", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1237, - "name": "_onlyRelayers", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1287, - "src": "2630:13:4", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", - "typeString": "function ()" - } - }, - "id": 1238, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2630:15:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1239, - "nodeType": "ExpressionStatement", - "src": "2630:15:4" - }, - { - "id": 1240, - "nodeType": "PlaceholderStatement", - "src": "2655:1:4" - } - ] - }, - "documentation": null, - "id": 1242, - "name": "onlyRelayers", - "nodeType": "ModifierDefinition", - "overrides": null, - "parameters": { - "id": 1236, - "nodeType": "ParameterList", - "parameters": [], - "src": "2617:2:4" - }, - "src": "2596:67:4", - "virtual": false, - "visibility": "internal" + "name": "pos", + "nodeType": "YulIdentifier", + "src": "7642:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "7832:3:40" + } + ], + "functionName": { + "name": "store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69", + "nodeType": "YulIdentifier", + "src": "7743:88:40" + }, + "nodeType": "YulFunctionCall", + "src": "7743:93:40" + }, + "nodeType": "YulExpressionStatement", + "src": "7743:93:40" + }, + { + "nodeType": "YulAssignment", + "src": "7845:19:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "7856:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7861:2:40", + "type": "", + "value": "17" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7852:3:40" }, + "nodeType": "YulFunctionCall", + "src": "7852:12:40" + }, + "variableNames": [ { - "body": { - "id": 1260, - "nodeType": "Block", - "src": "2708:148:4", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 1256, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1247, - "name": "DEFAULT_ADMIN_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 25, - "src": "2734:18:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1248, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "2754:3:4", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1249, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2754:10:4", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "id": 1246, - "name": "hasRole", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 71, - "src": "2726:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", - "typeString": "function (bytes32,address) view returns (bool)" - } - }, - "id": 1250, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2726:39:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1252, - "name": "RELAYER_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1221, - "src": "2777:12:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1253, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "2791:3:4", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1254, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2791:10:4", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "id": 1251, - "name": "hasRole", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 71, - "src": "2769:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", - "typeString": "function (bytes32,address) view returns (bool)" - } - }, - "id": 1255, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2769:33:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "2726:76:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "73656e646572206973206e6f742072656c61796572206f722061646d696e", - "id": 1257, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2816:32:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_060530e99bec4f476b8f8f370f65f741cac486899cd6c35c4dd2e82720711afe", - "typeString": "literal_string \"sender is not relayer or admin\"" - }, - "value": "sender is not relayer or admin" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_060530e99bec4f476b8f8f370f65f741cac486899cd6c35c4dd2e82720711afe", - "typeString": "literal_string \"sender is not relayer or admin\"" - } - ], - "id": 1245, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "2718:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 1258, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2718:131:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1259, - "nodeType": "ExpressionStatement", - "src": "2718:131:4" - } - ] - }, - "documentation": null, - "id": 1261, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_onlyAdminOrRelayer", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 1243, - "nodeType": "ParameterList", - "parameters": [], - "src": "2697:2:4" - }, - "returnParameters": { - "id": 1244, - "nodeType": "ParameterList", - "parameters": [], - "src": "2708:0:4" - }, - "scope": 2244, - "src": "2669:187:4", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "private" + "name": "end", + "nodeType": "YulIdentifier", + "src": "7845:3:40" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "7620:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "7628:3:40", + "type": "" + } + ], + "src": "7468:402:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8262:581:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8273:155:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "8424:3:40" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "8280:142:40" }, + "nodeType": "YulFunctionCall", + "src": "8280:148:40" + }, + "variableNames": [ { - "body": { - "id": 1273, - "nodeType": "Block", - "src": "2892:99:4", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1266, - "name": "DEFAULT_ADMIN_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 25, - "src": "2918:18:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1267, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "2938:3:4", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1268, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2938:10:4", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "id": 1265, - "name": "hasRole", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 71, - "src": "2910:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", - "typeString": "function (bytes32,address) view returns (bool)" - } - }, - "id": 1269, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2910:39:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "73656e64657220646f65736e277420686176652061646d696e20726f6c65", - "id": 1270, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2951:32:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_cccb3b305edc7308d7027b1001041a46b235f7d3213d690bb469676069d9b205", - "typeString": "literal_string \"sender doesn't have admin role\"" - }, - "value": "sender doesn't have admin role" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_cccb3b305edc7308d7027b1001041a46b235f7d3213d690bb469676069d9b205", - "typeString": "literal_string \"sender doesn't have admin role\"" - } - ], - "id": 1264, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "2902:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 1271, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2902:82:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1272, - "nodeType": "ExpressionStatement", - "src": "2902:82:4" - } - ] + "name": "pos", + "nodeType": "YulIdentifier", + "src": "8273:3:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "8438:102:40", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "8527:6:40" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "8536:3:40" + } + ], + "functionName": { + "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "8445:81:40" + }, + "nodeType": "YulFunctionCall", + "src": "8445:95:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "8438:3:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "8550:155:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "8701:3:40" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "8557:142:40" + }, + "nodeType": "YulFunctionCall", + "src": "8557:148:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "8550:3:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "8715:102:40", + "value": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "8804:6:40" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "8813:3:40" + } + ], + "functionName": { + "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "8722:81:40" + }, + "nodeType": "YulFunctionCall", + "src": "8722:95:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "8715:3:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "8827:10:40", + "value": { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "8834:3:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "8827:3:40" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_t_string_memory_ptr_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "8233:3:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "8239:6:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "8247:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "8258:3:40", + "type": "" + } + ], + "src": "7876:967:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8945:73:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "8962:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "8967:6:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8955:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "8955:19:40" + }, + "nodeType": "YulExpressionStatement", + "src": "8955:19:40" + }, + { + "nodeType": "YulAssignment", + "src": "8983:29:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "9002:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9007:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8998:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "8998:14:40" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "8983:11:40" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "8917:3:40", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "8922:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "8933:11:40", + "type": "" + } + ], + "src": "8849:169:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9116:285:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "9126:53:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "9173:5:40" + } + ], + "functionName": { + "name": "array_length_t_string_memory_ptr", + "nodeType": "YulIdentifier", + "src": "9140:32:40" + }, + "nodeType": "YulFunctionCall", + "src": "9140:39:40" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "9130:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "9188:78:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "9254:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "9259:6:40" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "9195:58:40" + }, + "nodeType": "YulFunctionCall", + "src": "9195:71:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "9188:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "9314:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9321:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9310:3:40" }, - "documentation": null, - "id": 1274, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_onlyAdmin", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 1262, - "nodeType": "ParameterList", - "parameters": [], - "src": "2881:2:4" - }, - "returnParameters": { - "id": 1263, - "nodeType": "ParameterList", - "parameters": [], - "src": "2892:0:4" - }, - "scope": 2244, - "src": "2862:129:4", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "private" + "nodeType": "YulFunctionCall", + "src": "9310:16:40" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "9328:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "9333:6:40" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nodeType": "YulIdentifier", + "src": "9275:34:40" }, + "nodeType": "YulFunctionCall", + "src": "9275:65:40" + }, + "nodeType": "YulExpressionStatement", + "src": "9275:65:40" + }, + { + "nodeType": "YulAssignment", + "src": "9349:46:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "9360:3:40" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "9387:6:40" + } + ], + "functionName": { + "name": "round_up_to_mul_of_32", + "nodeType": "YulIdentifier", + "src": "9365:21:40" + }, + "nodeType": "YulFunctionCall", + "src": "9365:29:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9356:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "9356:39:40" + }, + "variableNames": [ { - "body": { - "id": 1286, - "nodeType": "Block", - "src": "3030:95:4", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1279, - "name": "RELAYER_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1221, - "src": "3056:12:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1280, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "3070:3:4", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1281, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3070:10:4", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "id": 1278, - "name": "hasRole", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 71, - "src": "3048:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", - "typeString": "function (bytes32,address) view returns (bool)" - } - }, - "id": 1282, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3048:33:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "73656e64657220646f65736e277420686176652072656c6179657220726f6c65", - "id": 1283, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3083:34:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_c5edc249083609d56bd00194353566fb7b8c09e436c3268ab57a56188319b6d4", - "typeString": "literal_string \"sender doesn't have relayer role\"" - }, - "value": "sender doesn't have relayer role" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_c5edc249083609d56bd00194353566fb7b8c09e436c3268ab57a56188319b6d4", - "typeString": "literal_string \"sender doesn't have relayer role\"" - } - ], - "id": 1277, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "3040:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 1284, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3040:78:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1285, - "nodeType": "ExpressionStatement", - "src": "3040:78:4" - } - ] + "name": "end", + "nodeType": "YulIdentifier", + "src": "9349:3:40" + } + ] + } + ] + }, + "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "9097:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "9104:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "9112:3:40", + "type": "" + } + ], + "src": "9024:377:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9525:195:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "9535:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9547:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9558:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9543:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "9543:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "9535:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9582:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9593:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9578:3:40" }, - "documentation": null, - "id": 1287, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_onlyRelayers", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 1275, - "nodeType": "ParameterList", - "parameters": [], - "src": "3019:2:4" - }, - "returnParameters": { - "id": 1276, - "nodeType": "ParameterList", - "parameters": [], - "src": "3030:0:4" - }, - "scope": 2244, - "src": "2997:128:4", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "private" + "nodeType": "YulFunctionCall", + "src": "9578:17:40" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "9601:4:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9607:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "9597:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "9597:20:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9571:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "9571:47:40" + }, + "nodeType": "YulExpressionStatement", + "src": "9571:47:40" + }, + { + "nodeType": "YulAssignment", + "src": "9627:86:40", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "9699:6:40" + }, + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "9708:4:40" + } + ], + "functionName": { + "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "9635:63:40" }, + "nodeType": "YulFunctionCall", + "src": "9635:78:40" + }, + "variableNames": [ { - "body": { - "id": 1355, - "nodeType": "Block", - "src": "3690:454:4", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1304, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1302, - "name": "_chainID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1112, - "src": "3700:8:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1303, - "name": "chainID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1290, - "src": "3711:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "3700:18:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 1305, - "nodeType": "ExpressionStatement", - "src": "3700:18:4" - }, - { - "expression": { - "argumentTypes": null, - "id": 1308, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1306, - "name": "_relayerThreshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "3728:17:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1307, - "name": "initialRelayerThreshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1295, - "src": "3748:23:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3728:43:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1309, - "nodeType": "ExpressionStatement", - "src": "3728:43:4" - }, - { - "expression": { - "argumentTypes": null, - "id": 1312, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1310, - "name": "_fee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1120, - "src": "3781:4:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1311, - "name": "fee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1297, - "src": "3788:3:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3781:10:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1313, - "nodeType": "ExpressionStatement", - "src": "3781:10:4" - }, - { - "expression": { - "argumentTypes": null, - "id": 1316, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1314, - "name": "_expiry", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1122, - "src": "3801:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1315, - "name": "expiry", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1299, - "src": "3811:6:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3801:16:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1317, - "nodeType": "ExpressionStatement", - "src": "3801:16:4" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1319, - "name": "DEFAULT_ADMIN_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 25, - "src": "3839:18:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1320, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "3859:3:4", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1321, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3859:10:4", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "id": 1318, - "name": "_setupRole", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 208, - "src": "3828:10:4", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", - "typeString": "function (bytes32,address)" - } - }, - "id": 1322, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3828:42:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1323, - "nodeType": "ExpressionStatement", - "src": "3828:42:4" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1325, - "name": "RELAYER_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1221, - "src": "3894:12:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 1326, - "name": "DEFAULT_ADMIN_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 25, - "src": "3908:18:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 1324, - "name": "_setRoleAdmin", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 233, - "src": "3880:13:4", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$", - "typeString": "function (bytes32,bytes32)" - } - }, - "id": 1327, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3880:47:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1328, - "nodeType": "ExpressionStatement", - "src": "3880:47:4" - }, - { - "assignments": [1330], - "declarations": [ - { - "constant": false, - "id": 1330, - "mutability": "mutable", - "name": "initialRelayerCount", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1355, - "src": "3938:24:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1329, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "3938:4:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1333, - "initialValue": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1331, - "name": "initialRelayers", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1293, - "src": "3965:15:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 1332, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3965:22:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3938:49:4" - }, - { - "body": { - "id": 1353, - "nodeType": "Block", - "src": "4040:98:4", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1344, - "name": "RELAYER_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1221, - "src": "4064:12:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1345, - "name": "initialRelayers", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1293, - "src": "4078:15:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 1347, - "indexExpression": { - "argumentTypes": null, - "id": 1346, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1335, - "src": "4094:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4078:18:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1343, - "name": "grantRole", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 146, - "src": "4054:9:4", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", - "typeString": "function (bytes32,address)" - } - }, - "id": 1348, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4054:43:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1349, - "nodeType": "ExpressionStatement", - "src": "4054:43:4" - }, - { - "expression": { - "argumentTypes": null, - "id": 1351, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "4111:16:4", - "subExpression": { - "argumentTypes": null, - "id": 1350, - "name": "_totalRelayers", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "4111:14:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1352, - "nodeType": "ExpressionStatement", - "src": "4111:16:4" - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1339, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1337, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1335, - "src": "4010:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "id": 1338, - "name": "initialRelayerCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1330, - "src": "4014:19:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4010:23:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1354, - "initializationExpression": { - "assignments": [1335], - "declarations": [ - { - "constant": false, - "id": 1335, - "mutability": "mutable", - "name": "i", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1354, - "src": "4002:6:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1334, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "4002:4:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1336, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "4002:6:4" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 1341, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "4035:3:4", - "subExpression": { - "argumentTypes": null, - "id": 1340, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1335, - "src": "4035:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1342, - "nodeType": "ExpressionStatement", - "src": "4035:3:4" - }, - "nodeType": "ForStatement", - "src": "3997:141:4" - } - ] + "name": "tail", + "nodeType": "YulIdentifier", + "src": "9627:4:40" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "9497:9:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "9509:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "9520:4:40", + "type": "" + } + ], + "src": "9407:313:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9774:362:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "9784:25:40", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "9807:1:40" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "9789:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "9789:20:40" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "9784:1:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "9818:25:40", + "value": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "9841:1:40" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "9823:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "9823:20:40" + }, + "variableNames": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "9818:1:40" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "9852:28:40", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "9875:1:40" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "9878:1:40" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "9871:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "9871:9:40" + }, + "variables": [ + { + "name": "product_raw", + "nodeType": "YulTypedName", + "src": "9856:11:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "9889:41:40", + "value": { + "arguments": [ + { + "name": "product_raw", + "nodeType": "YulIdentifier", + "src": "9918:11:40" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "9900:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "9900:30:40" + }, + "variableNames": [ + { + "name": "product", + "nodeType": "YulIdentifier", + "src": "9889:7:40" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10107:22:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "10109:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "10109:18:40" }, - "documentation": { - "id": 1288, - "nodeType": "StructuredDocumentation", - "src": "3131:426:4", - "text": "@notice Initializes Bridge, creates and grants {msg.sender} the admin role,\ncreates and grants {initialRelayers} the relayer role.\n@param chainID ID of chain the Bridge contract exists on.\n@param initialRelayers Addresses that should be initially granted the relayer role.\n@param initialRelayerThreshold Number of votes needed for a deposit proposal to be considered passed." - }, - "id": 1356, - "implemented": true, - "kind": "constructor", - "modifiers": [], - "name": "", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 1300, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1290, - "mutability": "mutable", - "name": "chainID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1356, - "src": "3575:13:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 1289, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "3575:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1293, - "mutability": "mutable", - "name": "initialRelayers", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1356, - "src": "3590:32:4", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[]" - }, - "typeName": { - "baseType": { - "id": 1291, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3590:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1292, - "length": null, - "nodeType": "ArrayTypeName", - "src": "3590:9:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1295, - "mutability": "mutable", - "name": "initialRelayerThreshold", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1356, - "src": "3624:28:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1294, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "3624:4:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1297, - "mutability": "mutable", - "name": "fee", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1356, - "src": "3654:11:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1296, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3654:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" + "nodeType": "YulExpressionStatement", + "src": "10109:18:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "10040:1:40" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "10033:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "10033:9:40" + }, + { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "10063:1:40" + }, + { + "arguments": [ + { + "name": "product", + "nodeType": "YulIdentifier", + "src": "10070:7:40" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "10079:1:40" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "10066:3:40" }, - { - "constant": false, - "id": 1299, - "mutability": "mutable", - "name": "expiry", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1356, - "src": "3667:14:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1298, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3667:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } + "nodeType": "YulFunctionCall", + "src": "10066:15:40" + } ], - "src": "3574:108:4" - }, - "returnParameters": { - "id": 1301, - "nodeType": "ParameterList", - "parameters": [], - "src": "3690:0:4" + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "10060:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "10060:22:40" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "10013:2:40" }, - "scope": 2244, - "src": "3562:582:4", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" + "nodeType": "YulFunctionCall", + "src": "10013:83:40" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "9993:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "9993:113:40" + }, + "nodeType": "YulIf", + "src": "9990:139:40" + } + ] + }, + "name": "checked_mul_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "9757:1:40", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "9760:1:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "product", + "nodeType": "YulTypedName", + "src": "9766:7:40", + "type": "" + } + ], + "src": "9726:410:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10186:147:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "10196:25:40", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "10219:1:40" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "10201:17:40" }, + "nodeType": "YulFunctionCall", + "src": "10201:20:40" + }, + "variableNames": [ { - "body": { - "id": 1369, - "nodeType": "Block", - "src": "4336:54:4", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1365, - "name": "RELAYER_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1221, - "src": "4361:12:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 1366, - "name": "relayer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1359, - "src": "4375:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1364, - "name": "hasRole", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 71, - "src": "4353:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", - "typeString": "function (bytes32,address) view returns (bool)" - } - }, - "id": 1367, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4353:30:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 1363, - "id": 1368, - "nodeType": "Return", - "src": "4346:37:4" - } - ] + "name": "x", + "nodeType": "YulIdentifier", + "src": "10196:1:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10230:25:40", + "value": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "10253:1:40" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "10235:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "10235:20:40" + }, + "variableNames": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "10230:1:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10264:16:40", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "10275:1:40" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "10278:1:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10271:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "10271:9:40" + }, + "variableNames": [ + { + "name": "sum", + "nodeType": "YulIdentifier", + "src": "10264:3:40" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10304:22:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "10306:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "10306:18:40" }, - "documentation": { - "id": 1357, - "nodeType": "StructuredDocumentation", - "src": "4150:116:4", - "text": "@notice Returns true if {relayer} has the relayer role.\n@param relayer Address to check." - }, - "functionSelector": "541d5548", - "id": 1370, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "isRelayer", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 1360, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1359, - "mutability": "mutable", - "name": "relayer", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1370, - "src": "4290:15:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1358, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4290:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4289:17:4" + "nodeType": "YulExpressionStatement", + "src": "10306:18:40" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "10296:1:40" + }, + { + "name": "sum", + "nodeType": "YulIdentifier", + "src": "10299:3:40" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "10293:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "10293:10:40" + }, + "nodeType": "YulIf", + "src": "10290:36:40" + } + ] + }, + "name": "checked_add_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "10173:1:40", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "10176:1:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "sum", + "nodeType": "YulTypedName", + "src": "10182:3:40", + "type": "" + } + ], + "src": "10142:191:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10382:128:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "10392:33:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "10419:5:40" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "10401:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "10401:24:40" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "10392:5:40" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10453:22:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "10455:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "10455:18:40" }, - "returnParameters": { - "id": 1363, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1362, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1370, - "src": "4330:4:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1361, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "4330:4:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4329:6:4" + "nodeType": "YulExpressionStatement", + "src": "10455:18:40" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "10440:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10447:4:40", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "10437:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "10437:15:40" + }, + "nodeType": "YulIf", + "src": "10434:41:40" + }, + { + "nodeType": "YulAssignment", + "src": "10484:20:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "10495:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10502:1:40", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "10491:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "10491:13:40" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "10484:3:40" + } + ] + } + ] + }, + "name": "decrement_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "10368:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nodeType": "YulTypedName", + "src": "10378:3:40", + "type": "" + } + ], + "src": "10339:171:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10622:76:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "10644:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10652:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10640:3:40" }, - "scope": 2244, - "src": "4271:119:4", - "stateMutability": "view", - "virtual": false, - "visibility": "external" + "nodeType": "YulFunctionCall", + "src": "10640:14:40" + }, + { + "hexValue": "537472696e67733a20686578206c656e67746820696e73756666696369656e74", + "kind": "string", + "nodeType": "YulLiteral", + "src": "10656:34:40", + "type": "", + "value": "Strings: hex length insufficient" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10633:6:40" }, + "nodeType": "YulFunctionCall", + "src": "10633:58:40" + }, + "nodeType": "YulExpressionStatement", + "src": "10633:58:40" + } + ] + }, + "name": "store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "10614:6:40", + "type": "" + } + ], + "src": "10516:182:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10850:220:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "10860:74:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "10926:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10931:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "10867:58:40" + }, + "nodeType": "YulFunctionCall", + "src": "10867:67:40" + }, + "variableNames": [ { - "body": { - "id": 1389, - "nodeType": "Block", - "src": "4701:110:4", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1379, - "name": "DEFAULT_ADMIN_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 25, - "src": "4721:18:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 1380, - "name": "newAdmin", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1373, - "src": "4741:8:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1378, - "name": "grantRole", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 146, - "src": "4711:9:4", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", - "typeString": "function (bytes32,address)" - } - }, - "id": 1381, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4711:39:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1382, - "nodeType": "ExpressionStatement", - "src": "4711:39:4" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1384, - "name": "DEFAULT_ADMIN_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 25, - "src": "4773:18:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1385, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "4793:3:4", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1386, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "4793:10:4", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "id": 1383, - "name": "renounceRole", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 194, - "src": "4760:12:4", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", - "typeString": "function (bytes32,address)" - } - }, - "id": 1387, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4760:44:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1388, - "nodeType": "ExpressionStatement", - "src": "4760:44:4" - } - ] + "name": "pos", + "nodeType": "YulIdentifier", + "src": "10860:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11032:3:40" + } + ], + "functionName": { + "name": "store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2", + "nodeType": "YulIdentifier", + "src": "10943:88:40" + }, + "nodeType": "YulFunctionCall", + "src": "10943:93:40" + }, + "nodeType": "YulExpressionStatement", + "src": "10943:93:40" + }, + { + "nodeType": "YulAssignment", + "src": "11045:19:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11056:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11061:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11052:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "11052:12:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "11045:3:40" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "10838:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "10846:3:40", + "type": "" + } + ], + "src": "10704:366:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11247:248:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "11257:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11269:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11280:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11265:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "11265:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "11257:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11304:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11315:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11300:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "11300:17:40" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "11323:4:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11329:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "11319:3:40" }, - "documentation": { - "id": 1371, - "nodeType": "StructuredDocumentation", - "src": "4396:240:4", - "text": "@notice Removes admin role from {msg.sender} and grants it to {newAdmin}.\n@notice Only callable by an address that currently has the admin role.\n@param newAdmin Address that admin role will be granted to." - }, - "functionSelector": "5e1fab0f", - "id": 1390, - "implemented": true, - "kind": "function", - "modifiers": [ + "nodeType": "YulFunctionCall", + "src": "11319:20:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11293:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "11293:47:40" + }, + "nodeType": "YulExpressionStatement", + "src": "11293:47:40" + }, + { + "nodeType": "YulAssignment", + "src": "11349:139:40", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "11483:4:40" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "11357:124:40" + }, + "nodeType": "YulFunctionCall", + "src": "11357:131:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "11349:4:40" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "11227:9:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "11242:4:40", + "type": "" + } + ], + "src": "11076:419:40" + } + ] + }, + "contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint8(value) -> cleaned {\n cleaned := and(value, 0xff)\n }\n\n function validator_revert_t_uint8(value) {\n if iszero(eq(value, cleanup_t_uint8(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint8_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_uint8(value)\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_array$_t_address_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_address(value)\n }\n\n // address[]\n function abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr_fromMemory(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_address_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x20))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x20) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_address_fromMemory(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // address[]\n function abi_decode_t_array$_t_address_$dyn_memory_ptr_fromMemory(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := mload(offset)\n array := abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr_fromMemory(add(offset, 0x20), length, end)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint8t_array$_t_address_$dyn_memory_ptrt_uint256t_uint256t_uint256_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4 {\n if slt(sub(dataEnd, headStart), 160) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint8_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := mload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value1 := abi_decode_t_array$_t_address_$dyn_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 128\n\n value4 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874(memPtr) {\n\n mstore(add(memPtr, 0), \"AccessControl: account \")\n\n }\n\n function abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, 23)\n store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874(pos)\n end := add(pos, 23)\n }\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function copy_memory_to_memory_with_cleanup(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, length)\n }\n\n function store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69(memPtr) {\n\n mstore(add(memPtr, 0), \" is missing role \")\n\n }\n\n function abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, 17)\n store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69(pos)\n end := add(pos, 17)\n }\n\n function abi_encode_tuple_packed_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_t_string_memory_ptr_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value1, value0) -> end {\n\n pos := abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack( pos)\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value0, pos)\n\n pos := abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack( pos)\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value1, pos)\n\n end := pos\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0, tail)\n\n }\n\n function checked_mul_t_uint256(x, y) -> product {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n let product_raw := mul(x, y)\n product := cleanup_t_uint256(product_raw)\n\n // overflow, if x != 0 and y != product/x\n if iszero(\n or(\n iszero(x),\n eq(y, div(product, x))\n )\n ) { panic_error_0x11() }\n\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n sum := add(x, y)\n\n if gt(x, sum) { panic_error_0x11() }\n\n }\n\n function decrement_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0x00) { panic_error_0x11() }\n ret := sub(value, 1)\n }\n\n function store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2(memPtr) {\n\n mstore(add(memPtr, 0), \"Strings: hex length insufficient\")\n\n }\n\n function abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 32)\n store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n}\n", + "id": 40, + "language": "Yul", + "name": "#utility.yul" + } + ], + "deployedGeneratedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:66599:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "47:35:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "57:19:40", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "73:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "67:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "67:9:40" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "57:6:40" + } + ] + } + ] + }, + "name": "allocate_unbounded", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "40:6:40", + "type": "" + } + ], + "src": "7:75:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "177:28:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "194:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "197:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "187:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "187:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "187:12:40" + } + ] + }, + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulFunctionDefinition", + "src": "88:117:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "300:28:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "317:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "320:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "310:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "310:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "310:12:40" + } + ] + }, + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulFunctionDefinition", + "src": "211:117:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "378:105:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "388:89:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "403:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "410:66:40", + "type": "", + "value": "0xffffffff00000000000000000000000000000000000000000000000000000000" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "399:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "399:78:40" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "388:7:40" + } + ] + } + ] + }, + "name": "cleanup_t_bytes4", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "360:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "370:7:40", + "type": "" + } + ], + "src": "334:149:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "531:78:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "587:16:40", + "statements": [ + { + "expression": { + "arguments": [ { - "arguments": null, - "id": 1376, - "modifierName": { - "argumentTypes": null, - "id": 1375, - "name": "onlyAdmin", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1228, - "src": "4691:9:4", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "4691:9:4" + "kind": "number", + "nodeType": "YulLiteral", + "src": "596:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "599:1:40", + "type": "", + "value": "0" } - ], - "name": "renounceAdmin", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 1374, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1373, - "mutability": "mutable", - "name": "newAdmin", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1390, - "src": "4664:16:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1372, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4664:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4663:18:4" + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "589:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "589:12:40" }, - "returnParameters": { - "id": 1377, - "nodeType": "ParameterList", - "parameters": [], - "src": "4701:0:4" + "nodeType": "YulExpressionStatement", + "src": "589:12:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "554:5:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "578:5:40" + } + ], + "functionName": { + "name": "cleanup_t_bytes4", + "nodeType": "YulIdentifier", + "src": "561:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "561:23:40" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "551:2:40" }, - "scope": 2244, - "src": "4641:170:4", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" + "nodeType": "YulFunctionCall", + "src": "551:34:40" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "544:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "544:42:40" + }, + "nodeType": "YulIf", + "src": "541:62:40" + } + ] + }, + "name": "validator_revert_t_bytes4", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "524:5:40", + "type": "" + } + ], + "src": "489:120:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "666:86:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "676:29:40", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "698:6:40" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "685:12:40" }, + "nodeType": "YulFunctionCall", + "src": "685:20:40" + }, + "variableNames": [ { - "body": { - "id": 1399, - "nodeType": "Block", - "src": "5049:25:4", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1396, - "name": "_pause", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2418, - "src": "5059:6:4", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", - "typeString": "function ()" - } - }, - "id": 1397, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5059:8:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1398, - "nodeType": "ExpressionStatement", - "src": "5059:8:4" - } - ] + "name": "value", + "nodeType": "YulIdentifier", + "src": "676:5:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "740:5:40" + } + ], + "functionName": { + "name": "validator_revert_t_bytes4", + "nodeType": "YulIdentifier", + "src": "714:25:40" + }, + "nodeType": "YulFunctionCall", + "src": "714:32:40" + }, + "nodeType": "YulExpressionStatement", + "src": "714:32:40" + } + ] + }, + "name": "abi_decode_t_bytes4", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "644:6:40", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "652:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "660:5:40", + "type": "" + } + ], + "src": "615:137:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "823:262:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "869:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "871:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "871:79:40" }, - "documentation": { - "id": 1391, - "nodeType": "StructuredDocumentation", - "src": "4817:177:4", - "text": "@notice Pauses deposits, proposal creation and voting, and deposit executions.\n@notice Only callable by an address that currently has the admin role." - }, - "functionSelector": "80ae1c28", - "id": 1400, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": null, - "id": 1394, - "modifierName": { - "argumentTypes": null, - "id": 1393, - "name": "onlyAdmin", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1228, - "src": "5039:9:4", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "5039:9:4" - } + "nodeType": "YulExpressionStatement", + "src": "871:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "844:7:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "853:9:40" + } ], - "name": "adminPauseTransfers", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 1392, - "nodeType": "ParameterList", - "parameters": [], - "src": "5027:2:4" - }, - "returnParameters": { - "id": 1395, - "nodeType": "ParameterList", - "parameters": [], - "src": "5049:0:4" - }, - "scope": 2244, - "src": "4999:75:4", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "840:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "840:23:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "865:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "836:3:40" }, + "nodeType": "YulFunctionCall", + "src": "836:32:40" + }, + "nodeType": "YulIf", + "src": "833:119:40" + }, + { + "nodeType": "YulBlock", + "src": "962:116:40", + "statements": [ { - "body": { - "id": 1409, - "nodeType": "Block", - "src": "5316:27:4", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1406, - "name": "_unpause", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2434, - "src": "5326:8:4", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", - "typeString": "function ()" - } - }, - "id": 1407, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5326:10:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1408, - "nodeType": "ExpressionStatement", - "src": "5326:10:4" - } - ] - }, - "documentation": { - "id": 1401, - "nodeType": "StructuredDocumentation", - "src": "5080:179:4", - "text": "@notice Unpauses deposits, proposal creation and voting, and deposit executions.\n@notice Only callable by an address that currently has the admin role." - }, - "functionSelector": "ffaac0eb", - "id": 1410, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": null, - "id": 1404, - "modifierName": { - "argumentTypes": null, - "id": 1403, - "name": "onlyAdmin", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1228, - "src": "5306:9:4", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "5306:9:4" - } - ], - "name": "adminUnpauseTransfers", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 1402, - "nodeType": "ParameterList", - "parameters": [], - "src": "5294:2:4" - }, - "returnParameters": { - "id": 1405, - "nodeType": "ParameterList", - "parameters": [], - "src": "5316:0:4" - }, - "scope": 2244, - "src": "5264:79:4", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" + "nodeType": "YulVariableDeclaration", + "src": "977:15:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "991:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "981:6:40", + "type": "" + } + ] }, { - "body": { - "id": 1426, - "nodeType": "Block", - "src": "5742:101:4", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1420, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1418, - "name": "_relayerThreshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "5752:17:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1419, - "name": "newThreshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1413, - "src": "5772:12:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5752:32:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1421, - "nodeType": "ExpressionStatement", - "src": "5752:32:4" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1423, - "name": "newThreshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1413, - "src": "5823:12:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1422, - "name": "RelayerThresholdChanged", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1178, - "src": "5799:23:4", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$", - "typeString": "function (uint256)" - } - }, - "id": 1424, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5799:37:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1425, - "nodeType": "EmitStatement", - "src": "5794:42:4" - } - ] + "nodeType": "YulAssignment", + "src": "1006:62:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1040:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1051:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1036:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "1036:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1060:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_bytes4", + "nodeType": "YulIdentifier", + "src": "1016:19:40" }, - "documentation": { - "id": 1411, - "nodeType": "StructuredDocumentation", - "src": "5349:313:4", - "text": "@notice Modifies the number of votes required for a proposal to be considered passed.\n@notice Only callable by an address that currently has the admin role.\n@param newThreshold Value {_relayerThreshold} will be changed to.\n@notice Emits {RelayerThresholdChanged} event." - }, - "functionSelector": "4e056005", - "id": 1427, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": null, - "id": 1416, - "modifierName": { - "argumentTypes": null, - "id": 1415, - "name": "onlyAdmin", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1228, - "src": "5732:9:4", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "5732:9:4" - } + "nodeType": "YulFunctionCall", + "src": "1016:52:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1006:6:40" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes4", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "793:9:40", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "804:7:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "816:6:40", + "type": "" + } + ], + "src": "758:327:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1133:48:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1143:32:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1168:5:40" + } ], - "name": "adminChangeRelayerThreshold", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 1414, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1413, - "mutability": "mutable", - "name": "newThreshold", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1427, - "src": "5704:17:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1412, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "5704:4:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "5703:19:4" + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1161:6:40" }, - "returnParameters": { - "id": 1417, - "nodeType": "ParameterList", - "parameters": [], - "src": "5742:0:4" + "nodeType": "YulFunctionCall", + "src": "1161:13:40" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1154:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "1154:21:40" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "1143:7:40" + } + ] + } + ] + }, + "name": "cleanup_t_bool", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1115:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "1125:7:40", + "type": "" + } + ], + "src": "1091:90:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1246:50:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "1263:3:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1283:5:40" + } + ], + "functionName": { + "name": "cleanup_t_bool", + "nodeType": "YulIdentifier", + "src": "1268:14:40" }, - "scope": 2244, - "src": "5667:176:4", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" + "nodeType": "YulFunctionCall", + "src": "1268:21:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1256:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "1256:34:40" + }, + "nodeType": "YulExpressionStatement", + "src": "1256:34:40" + } + ] + }, + "name": "abi_encode_t_bool_to_t_bool_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1234:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "1241:3:40", + "type": "" + } + ], + "src": "1187:109:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1394:118:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1404:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1416:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1427:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1412:3:40" }, + "nodeType": "YulFunctionCall", + "src": "1412:18:40" + }, + "variableNames": [ { - "body": { - "id": 1456, - "nodeType": "Block", - "src": "6212:216:4", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1440, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "6230:38:4", - "subExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1437, - "name": "RELAYER_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1221, - "src": "6239:12:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 1438, - "name": "relayerAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1430, - "src": "6253:14:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1436, - "name": "hasRole", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 71, - "src": "6231:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", - "typeString": "function (bytes32,address) view returns (bool)" - } - }, - "id": 1439, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6231:37:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "6164647220616c7265616479206861732072656c6179657220726f6c6521", - "id": 1441, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6270:32:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_8513154392cb347d26f1716c23a55342a9b762f4522b7062343455b658c92c85", - "typeString": "literal_string \"addr already has relayer role!\"" - }, - "value": "addr already has relayer role!" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_8513154392cb347d26f1716c23a55342a9b762f4522b7062343455b658c92c85", - "typeString": "literal_string \"addr already has relayer role!\"" - } - ], - "id": 1435, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "6222:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 1442, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6222:81:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1443, - "nodeType": "ExpressionStatement", - "src": "6222:81:4" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1445, - "name": "RELAYER_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1221, - "src": "6323:12:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 1446, - "name": "relayerAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1430, - "src": "6337:14:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1444, - "name": "grantRole", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 146, - "src": "6313:9:4", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", - "typeString": "function (bytes32,address)" - } - }, - "id": 1447, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6313:39:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1448, - "nodeType": "ExpressionStatement", - "src": "6313:39:4" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1450, - "name": "relayerAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1430, - "src": "6380:14:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1449, - "name": "RelayerAdded", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1182, - "src": "6367:12:4", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", - "typeString": "function (address)" - } - }, - "id": 1451, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6367:28:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1452, - "nodeType": "EmitStatement", - "src": "6362:33:4" - }, - { - "expression": { - "argumentTypes": null, - "id": 1454, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "6405:16:4", - "subExpression": { - "argumentTypes": null, - "id": 1453, - "name": "_totalRelayers", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "6405:14:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1455, - "nodeType": "ExpressionStatement", - "src": "6405:16:4" - } - ] + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1404:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1478:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1491:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1502:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1487:3:40" }, - "documentation": { - "id": 1428, - "nodeType": "StructuredDocumentation", - "src": "5849:290:4", - "text": "@notice Grants {relayerAddress} the relayer role and increases {_totalRelayer} count.\n@notice Only callable by an address that currently has the admin role.\n@param relayerAddress Address of relayer to be added.\n@notice Emits {RelayerAdded} event." - }, - "functionSelector": "cdb0f73a", - "id": 1457, - "implemented": true, - "kind": "function", - "modifiers": [ + "nodeType": "YulFunctionCall", + "src": "1487:17:40" + } + ], + "functionName": { + "name": "abi_encode_t_bool_to_t_bool_fromStack", + "nodeType": "YulIdentifier", + "src": "1440:37:40" + }, + "nodeType": "YulFunctionCall", + "src": "1440:65:40" + }, + "nodeType": "YulExpressionStatement", + "src": "1440:65:40" + } + ] + }, + "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1366:9:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1378:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1389:4:40", + "type": "" + } + ], + "src": "1302:210:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1561:43:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1571:27:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1586:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1593:4:40", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "1582:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "1582:16:40" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "1571:7:40" + } + ] + } + ] + }, + "name": "cleanup_t_uint8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1543:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "1553:7:40", + "type": "" + } + ], + "src": "1518:86:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1651:77:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1706:16:40", + "statements": [ + { + "expression": { + "arguments": [ { - "arguments": null, - "id": 1433, - "modifierName": { - "argumentTypes": null, - "id": 1432, - "name": "onlyAdmin", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1228, - "src": "6202:9:4", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "6202:9:4" + "kind": "number", + "nodeType": "YulLiteral", + "src": "1715:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1718:1:40", + "type": "", + "value": "0" } - ], - "name": "adminAddRelayer", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 1431, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1430, - "mutability": "mutable", - "name": "relayerAddress", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1457, - "src": "6169:22:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1429, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "6169:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "6168:24:4" + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1708:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "1708:12:40" }, - "returnParameters": { - "id": 1434, - "nodeType": "ParameterList", - "parameters": [], - "src": "6212:0:4" + "nodeType": "YulExpressionStatement", + "src": "1708:12:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1674:5:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1697:5:40" + } + ], + "functionName": { + "name": "cleanup_t_uint8", + "nodeType": "YulIdentifier", + "src": "1681:15:40" + }, + "nodeType": "YulFunctionCall", + "src": "1681:22:40" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "1671:2:40" }, - "scope": 2244, - "src": "6144:284:4", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" + "nodeType": "YulFunctionCall", + "src": "1671:33:40" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1664:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "1664:41:40" + }, + "nodeType": "YulIf", + "src": "1661:61:40" + } + ] + }, + "name": "validator_revert_t_uint8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1644:5:40", + "type": "" + } + ], + "src": "1610:118:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1784:85:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1794:29:40", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1816:6:40" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1803:12:40" }, + "nodeType": "YulFunctionCall", + "src": "1803:20:40" + }, + "variableNames": [ { - "body": { - "id": 1485, - "nodeType": "Block", - "src": "6805:219:4", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1467, - "name": "RELAYER_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1221, - "src": "6831:12:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 1468, - "name": "relayerAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1460, - "src": "6845:14:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1466, - "name": "hasRole", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 71, - "src": "6823:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", - "typeString": "function (bytes32,address) view returns (bool)" - } - }, - "id": 1469, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6823:37:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "6164647220646f65736e277420686176652072656c6179657220726f6c6521", - "id": 1470, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6862:33:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_1399520dec2ce6448b61ea4bb9d4980c6bfff25cd5836058c07edd3d56f94864", - "typeString": "literal_string \"addr doesn't have relayer role!\"" - }, - "value": "addr doesn't have relayer role!" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_1399520dec2ce6448b61ea4bb9d4980c6bfff25cd5836058c07edd3d56f94864", - "typeString": "literal_string \"addr doesn't have relayer role!\"" - } - ], - "id": 1465, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "6815:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 1471, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6815:81:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1472, - "nodeType": "ExpressionStatement", - "src": "6815:81:4" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1474, - "name": "RELAYER_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1221, - "src": "6917:12:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 1475, - "name": "relayerAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1460, - "src": "6931:14:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1473, - "name": "revokeRole", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 172, - "src": "6906:10:4", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", - "typeString": "function (bytes32,address)" - } - }, - "id": 1476, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6906:40:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1477, - "nodeType": "ExpressionStatement", - "src": "6906:40:4" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1479, - "name": "relayerAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1460, - "src": "6976:14:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1478, - "name": "RelayerRemoved", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1186, - "src": "6961:14:4", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", - "typeString": "function (address)" - } - }, - "id": 1480, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6961:30:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1481, - "nodeType": "EmitStatement", - "src": "6956:35:4" - }, - { - "expression": { - "argumentTypes": null, - "id": 1483, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "--", - "prefix": false, - "src": "7001:16:4", - "subExpression": { - "argumentTypes": null, - "id": 1482, - "name": "_totalRelayers", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "7001:14:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1484, - "nodeType": "ExpressionStatement", - "src": "7001:16:4" - } - ] - }, - "documentation": { - "id": 1458, - "nodeType": "StructuredDocumentation", - "src": "6434:295:4", - "text": "@notice Removes relayer role for {relayerAddress} and decreases {_totalRelayer} count.\n@notice Only callable by an address that currently has the admin role.\n@param relayerAddress Address of relayer to be removed.\n@notice Emits {RelayerRemoved} event." - }, - "functionSelector": "9d82dd63", - "id": 1486, - "implemented": true, - "kind": "function", - "modifiers": [ + "name": "value", + "nodeType": "YulIdentifier", + "src": "1794:5:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1857:5:40" + } + ], + "functionName": { + "name": "validator_revert_t_uint8", + "nodeType": "YulIdentifier", + "src": "1832:24:40" + }, + "nodeType": "YulFunctionCall", + "src": "1832:31:40" + }, + "nodeType": "YulExpressionStatement", + "src": "1832:31:40" + } + ] + }, + "name": "abi_decode_t_uint8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1762:6:40", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "1770:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1778:5:40", + "type": "" + } + ], + "src": "1734:135:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1920:32:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1930:16:40", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1941:5:40" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "1930:7:40" + } + ] + } + ] + }, + "name": "cleanup_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1902:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "1912:7:40", + "type": "" + } + ], + "src": "1875:77:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2001:79:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2058:16:40", + "statements": [ + { + "expression": { + "arguments": [ { - "arguments": null, - "id": 1463, - "modifierName": { - "argumentTypes": null, - "id": 1462, - "name": "onlyAdmin", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1228, - "src": "6795:9:4", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "6795:9:4" + "kind": "number", + "nodeType": "YulLiteral", + "src": "2067:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2070:1:40", + "type": "", + "value": "0" } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2060:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "2060:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "2060:12:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2024:5:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2049:5:40" + } + ], + "functionName": { + "name": "cleanup_t_bytes32", + "nodeType": "YulIdentifier", + "src": "2031:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "2031:24:40" + } ], - "name": "adminRemoveRelayer", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 1461, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1460, - "mutability": "mutable", - "name": "relayerAddress", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1486, - "src": "6762:22:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1459, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "6762:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "2021:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "2021:35:40" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "2014:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "2014:43:40" + }, + "nodeType": "YulIf", + "src": "2011:63:40" + } + ] + }, + "name": "validator_revert_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1994:5:40", + "type": "" + } + ], + "src": "1958:122:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2138:87:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2148:29:40", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2170:6:40" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "2157:12:40" + }, + "nodeType": "YulFunctionCall", + "src": "2157:20:40" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2148:5:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2213:5:40" + } + ], + "functionName": { + "name": "validator_revert_t_bytes32", + "nodeType": "YulIdentifier", + "src": "2186:26:40" + }, + "nodeType": "YulFunctionCall", + "src": "2186:33:40" + }, + "nodeType": "YulExpressionStatement", + "src": "2186:33:40" + } + ] + }, + "name": "abi_decode_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "2116:6:40", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "2124:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2132:5:40", + "type": "" + } + ], + "src": "2086:139:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2320:28:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2337:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2340:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2330:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "2330:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "2330:12:40" + } + ] + }, + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulFunctionDefinition", + "src": "2231:117:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2443:28:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2460:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2463:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2453:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "2453:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "2453:12:40" + } + ] + }, + "name": "revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490", + "nodeType": "YulFunctionDefinition", + "src": "2354:117:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2566:28:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2583:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2586:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2576:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "2576:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "2576:12:40" + } + ] + }, + "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", + "nodeType": "YulFunctionDefinition", + "src": "2477:117:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2687:478:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2736:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulIdentifier", + "src": "2738:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "2738:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "2738:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2715:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2723:4:40", + "type": "", + "value": "0x1f" + } ], - "src": "6761:24:4" + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2711:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "2711:17:40" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "2730:3:40" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "2707:3:40" }, - "returnParameters": { - "id": 1464, - "nodeType": "ParameterList", - "parameters": [], - "src": "6805:0:4" + "nodeType": "YulFunctionCall", + "src": "2707:27:40" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "2700:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "2700:35:40" + }, + "nodeType": "YulIf", + "src": "2697:122:40" + }, + { + "nodeType": "YulAssignment", + "src": "2828:30:40", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2851:6:40" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "2838:12:40" + }, + "nodeType": "YulFunctionCall", + "src": "2838:20:40" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2828:6:40" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2901:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490", + "nodeType": "YulIdentifier", + "src": "2903:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "2903:79:40" }, - "scope": 2244, - "src": "6734:290:4", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" + "nodeType": "YulExpressionStatement", + "src": "2903:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2873:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2881:18:40", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "2870:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "2870:30:40" + }, + "nodeType": "YulIf", + "src": "2867:117:40" + }, + { + "nodeType": "YulAssignment", + "src": "2993:29:40", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3009:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3017:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3005:3:40" }, + "nodeType": "YulFunctionCall", + "src": "3005:17:40" + }, + "variableNames": [ { - "body": { - "id": 1517, - "nodeType": "Block", - "src": "7676:187:4", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1502, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1498, - "name": "_resourceIDToHandlerAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1154, - "src": "7686:27:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", - "typeString": "mapping(bytes32 => address)" - } - }, - "id": 1500, - "indexExpression": { - "argumentTypes": null, - "id": 1499, - "name": "resourceID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1491, - "src": "7714:10:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "7686:39:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1501, - "name": "handlerAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1489, - "src": "7728:14:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "7686:56:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1503, - "nodeType": "ExpressionStatement", - "src": "7686:56:4" - }, - { - "assignments": [1505], - "declarations": [ - { - "constant": false, - "id": 1505, - "mutability": "mutable", - "name": "handler", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1517, - "src": "7752:19:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERCHandler_$2318", - "typeString": "contract IERCHandler" - }, - "typeName": { - "contractScope": null, - "id": 1504, - "name": "IERCHandler", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2318, - "src": "7752:11:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERCHandler_$2318", - "typeString": "contract IERCHandler" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1509, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1507, - "name": "handlerAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1489, - "src": "7786:14:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1506, - "name": "IERCHandler", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2318, - "src": "7774:11:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERCHandler_$2318_$", - "typeString": "type(contract IERCHandler)" - } - }, - "id": 1508, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7774:27:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERCHandler_$2318", - "typeString": "contract IERCHandler" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "7752:49:4" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1513, - "name": "resourceID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1491, - "src": "7831:10:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 1514, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1493, - "src": "7843:12:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "argumentTypes": null, - "id": 1510, - "name": "handler", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1505, - "src": "7811:7:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERCHandler_$2318", - "typeString": "contract IERCHandler" - } - }, - "id": 1512, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "setResource", - "nodeType": "MemberAccess", - "referencedDeclaration": 2291, - "src": "7811:19:4", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$__$", - "typeString": "function (bytes32,address) external" - } - }, - "id": 1515, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7811:45:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1516, - "nodeType": "ExpressionStatement", - "src": "7811:45:4" - } - ] + "name": "arrayPos", + "nodeType": "YulIdentifier", + "src": "2993:8:40" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3076:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", + "nodeType": "YulIdentifier", + "src": "3078:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "3078:79:40" }, - "documentation": { - "id": 1487, - "nodeType": "StructuredDocumentation", - "src": "7030:530:4", - "text": "@notice Sets a new resource for handler contracts that use the IERCHandler interface,\nand maps the {handlerAddress} to {resourceID} in {_resourceIDToHandlerAddress}.\n@notice Only callable by an address that currently has the admin role.\n@param handlerAddress Address of handler resource will be set for.\n@param resourceID ResourceID to be used when making deposits.\n@param tokenAddress Address of contract to be called when a deposit is made and a deposited is executed." - }, - "functionSelector": "cb10f215", - "id": 1518, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": null, - "id": 1496, - "modifierName": { - "argumentTypes": null, - "id": 1495, - "name": "onlyAdmin", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1228, - "src": "7666:9:4", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "7666:9:4" - } + "nodeType": "YulExpressionStatement", + "src": "3078:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "arrayPos", + "nodeType": "YulIdentifier", + "src": "3041:8:40" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "3055:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3063:4:40", + "type": "", + "value": "0x01" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "3051:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "3051:17:40" + } ], - "name": "adminSetResource", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 1494, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1489, - "mutability": "mutable", - "name": "handlerAddress", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1518, - "src": "7591:22:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1488, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "7591:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1491, - "mutability": "mutable", - "name": "resourceID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1518, - "src": "7615:18:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1490, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "7615:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1493, - "mutability": "mutable", - "name": "tokenAddress", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1518, - "src": "7635:20:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1492, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "7635:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "7590:66:4" + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3037:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "3037:32:40" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "3071:3:40" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "3034:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "3034:41:40" + }, + "nodeType": "YulIf", + "src": "3031:128:40" + } + ] + }, + "name": "abi_decode_t_bytes_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "2654:6:40", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "2662:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "arrayPos", + "nodeType": "YulTypedName", + "src": "2670:8:40", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "2680:6:40", + "type": "" + } + ], + "src": "2613:552:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3288:696:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3334:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "3336:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "3336:79:40" }, - "returnParameters": { - "id": 1497, - "nodeType": "ParameterList", - "parameters": [], - "src": "7676:0:4" + "nodeType": "YulExpressionStatement", + "src": "3336:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "3309:7:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3318:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "3305:3:40" }, - "scope": 2244, - "src": "7565:298:4", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" + "nodeType": "YulFunctionCall", + "src": "3305:23:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3330:2:40", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "3301:3:40" }, + "nodeType": "YulFunctionCall", + "src": "3301:32:40" + }, + "nodeType": "YulIf", + "src": "3298:119:40" + }, + { + "nodeType": "YulBlock", + "src": "3427:115:40", + "statements": [ { - "body": { - "id": 1555, - "nodeType": "Block", - "src": "8632:238:4", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1538, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1534, - "name": "_resourceIDToHandlerAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1154, - "src": "8642:27:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", - "typeString": "mapping(bytes32 => address)" - } - }, - "id": 1536, - "indexExpression": { - "argumentTypes": null, - "id": 1535, - "name": "resourceID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1523, - "src": "8670:10:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "8642:39:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1537, - "name": "handlerAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1521, - "src": "8684:14:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "8642:56:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1539, - "nodeType": "ExpressionStatement", - "src": "8642:56:4" - }, - { - "assignments": [1541], - "declarations": [ - { - "constant": false, - "id": 1541, - "mutability": "mutable", - "name": "handler", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1555, - "src": "8708:23:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IGenericHandler_$2334", - "typeString": "contract IGenericHandler" - }, - "typeName": { - "contractScope": null, - "id": 1540, - "name": "IGenericHandler", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2334, - "src": "8708:15:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IGenericHandler_$2334", - "typeString": "contract IGenericHandler" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1545, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1543, - "name": "handlerAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1521, - "src": "8750:14:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1542, - "name": "IGenericHandler", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2334, - "src": "8734:15:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IGenericHandler_$2334_$", - "typeString": "type(contract IGenericHandler)" - } - }, - "id": 1544, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8734:31:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IGenericHandler_$2334", - "typeString": "contract IGenericHandler" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "8708:57:4" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1549, - "name": "resourceID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1523, - "src": "8795:10:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 1550, - "name": "contractAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1525, - "src": "8807:15:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1551, - "name": "depositFunctionSig", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1527, - "src": "8824:18:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - { - "argumentTypes": null, - "id": 1552, - "name": "executeFunctionSig", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1529, - "src": "8844:18:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - ], - "expression": { - "argumentTypes": null, - "id": 1546, - "name": "handler", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1541, - "src": "8775:7:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IGenericHandler_$2334", - "typeString": "contract IGenericHandler" - } - }, - "id": 1548, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "setResource", - "nodeType": "MemberAccess", - "referencedDeclaration": 2333, - "src": "8775:19:4", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$_t_bytes4_$_t_bytes4_$returns$__$", - "typeString": "function (bytes32,address,bytes4,bytes4) external" - } - }, - "id": 1553, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8775:88:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1554, - "nodeType": "ExpressionStatement", - "src": "8775:88:4" - } - ] + "nodeType": "YulVariableDeclaration", + "src": "3442:15:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3456:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "3446:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3471:61:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3504:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3515:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3500:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "3500:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "3524:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_uint8", + "nodeType": "YulIdentifier", + "src": "3481:18:40" }, - "documentation": { - "id": 1519, - "nodeType": "StructuredDocumentation", - "src": "7869:537:4", - "text": "@notice Sets a new resource for handler contracts that use the IGenericHandler interface,\nand maps the {handlerAddress} to {resourceID} in {_resourceIDToHandlerAddress}.\n@notice Only callable by an address that currently has the admin role.\n@param handlerAddress Address of handler resource will be set for.\n@param resourceID ResourceID to be used when making deposits.\n@param contractAddress Address of contract to be called when a deposit is made and a deposited is executed." - }, - "functionSelector": "e8437ee7", - "id": 1556, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": null, - "id": 1532, - "modifierName": { - "argumentTypes": null, - "id": 1531, - "name": "onlyAdmin", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1228, - "src": "8622:9:4", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "8622:9:4" - } + "nodeType": "YulFunctionCall", + "src": "3481:51:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "3471:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "3552:118:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "3567:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3581:2:40", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "3571:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3597:63:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3632:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3643:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3628:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "3628:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "3652:7:40" + } ], - "name": "adminSetGenericResource", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 1530, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1521, - "mutability": "mutable", - "name": "handlerAddress", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1556, - "src": "8453:22:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1520, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8453:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1523, - "mutability": "mutable", - "name": "resourceID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1556, - "src": "8485:18:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1522, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "8485:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1525, - "mutability": "mutable", - "name": "contractAddress", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1556, - "src": "8513:23:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1524, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8513:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1527, - "mutability": "mutable", - "name": "depositFunctionSig", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1556, - "src": "8546:25:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "typeName": { - "id": 1526, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "8546:6:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1529, - "mutability": "mutable", - "name": "executeFunctionSig", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1556, - "src": "8581:25:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "typeName": { - "id": 1528, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "8581:6:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "value": null, - "visibility": "internal" - } + "functionName": { + "name": "abi_decode_t_bytes32", + "nodeType": "YulIdentifier", + "src": "3607:20:40" + }, + "nodeType": "YulFunctionCall", + "src": "3607:53:40" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "3597:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "3680:297:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "3695:46:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3726:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3737:2:40", + "type": "", + "value": "64" + } ], - "src": "8443:169:4" + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3722:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "3722:18:40" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "3709:12:40" }, - "returnParameters": { - "id": 1533, - "nodeType": "ParameterList", - "parameters": [], - "src": "8632:0:4" + "nodeType": "YulFunctionCall", + "src": "3709:32:40" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "3699:6:40", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3788:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "3790:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "3790:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "3790:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3760:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3768:18:40", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "3757:2:40" }, - "scope": 2244, - "src": "8411:459:4", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" + "nodeType": "YulFunctionCall", + "src": "3757:30:40" + }, + "nodeType": "YulIf", + "src": "3754:117:40" }, { - "body": { - "id": 1578, - "nodeType": "Block", - "src": "9352:109:4", - "statements": [ - { - "assignments": [1567], - "declarations": [ - { - "constant": false, - "id": 1567, - "mutability": "mutable", - "name": "handler", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1578, - "src": "9362:19:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERCHandler_$2318", - "typeString": "contract IERCHandler" - }, - "typeName": { - "contractScope": null, - "id": 1566, - "name": "IERCHandler", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2318, - "src": "9362:11:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERCHandler_$2318", - "typeString": "contract IERCHandler" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1571, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1569, - "name": "handlerAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1559, - "src": "9396:14:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1568, - "name": "IERCHandler", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2318, - "src": "9384:11:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERCHandler_$2318_$", - "typeString": "type(contract IERCHandler)" - } - }, - "id": 1570, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9384:27:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERCHandler_$2318", - "typeString": "contract IERCHandler" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "9362:49:4" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1575, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1561, - "src": "9441:12:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "argumentTypes": null, - "id": 1572, - "name": "handler", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1567, - "src": "9421:7:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERCHandler_$2318", - "typeString": "contract IERCHandler" - } - }, - "id": 1574, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "setBurnable", - "nodeType": "MemberAccess", - "referencedDeclaration": 2297, - "src": "9421:19:4", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", - "typeString": "function (address) external" - } - }, - "id": 1576, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9421:33:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1577, - "nodeType": "ExpressionStatement", - "src": "9421:33:4" - } - ] + "nodeType": "YulAssignment", + "src": "3885:82:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3939:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3950:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3935:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "3935:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "3959:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_bytes_calldata_ptr", + "nodeType": "YulIdentifier", + "src": "3903:31:40" }, - "documentation": { - "id": 1557, - "nodeType": "StructuredDocumentation", - "src": "8876:380:4", - "text": "@notice Sets a resource as burnable for handler contracts that use the IERCHandler interface.\n@notice Only callable by an address that currently has the admin role.\n@param handlerAddress Address of handler resource will be set for.\n@param tokenAddress Address of contract to be called when a deposit is made and a deposited is executed." - }, - "functionSelector": "8c0c2631", - "id": 1579, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": null, - "id": 1564, - "modifierName": { - "argumentTypes": null, - "id": 1563, - "name": "onlyAdmin", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1228, - "src": "9342:9:4", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "9342:9:4" - } - ], - "name": "adminSetBurnable", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 1562, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1559, - "mutability": "mutable", - "name": "handlerAddress", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1579, - "src": "9287:22:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1558, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9287:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1561, - "mutability": "mutable", - "name": "tokenAddress", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1579, - "src": "9311:20:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1560, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9311:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "9286:46:4" + "nodeType": "YulFunctionCall", + "src": "3903:64:40" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "3885:6:40" }, - "returnParameters": { - "id": 1565, - "nodeType": "ParameterList", - "parameters": [], - "src": "9352:0:4" + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "3893:6:40" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint8t_bytes32t_bytes_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3234:9:40", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "3245:7:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "3257:6:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "3265:6:40", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "3273:6:40", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "3281:6:40", + "type": "" + } + ], + "src": "3171:813:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4055:53:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "4072:3:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4095:5:40" + } + ], + "functionName": { + "name": "cleanup_t_bytes32", + "nodeType": "YulIdentifier", + "src": "4077:17:40" }, - "scope": 2244, - "src": "9261:200:4", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" + "nodeType": "YulFunctionCall", + "src": "4077:24:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4065:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "4065:37:40" + }, + "nodeType": "YulExpressionStatement", + "src": "4065:37:40" + } + ] + }, + "name": "abi_encode_t_bytes32_to_t_bytes32_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "4043:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "4050:3:40", + "type": "" + } + ], + "src": "3990:118:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4212:124:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4222:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4234:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4245:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4230:3:40" }, + "nodeType": "YulFunctionCall", + "src": "4230:18:40" + }, + "variableNames": [ { - "body": { - "id": 1607, - "nodeType": "Block", - "src": "9982:136:4", - "statements": [ - { - "assignments": [1594], - "declarations": [ - { - "constant": false, - "id": 1594, - "mutability": "mutable", - "name": "handler", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1607, - "src": "9992:19:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERCHandler_$2318", - "typeString": "contract IERCHandler" - }, - "typeName": { - "contractScope": null, - "id": 1593, - "name": "IERCHandler", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2318, - "src": "9992:11:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERCHandler_$2318", - "typeString": "contract IERCHandler" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1598, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1596, - "name": "handlerAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1582, - "src": "10026:14:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1595, - "name": "IERCHandler", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2318, - "src": "10014:11:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERCHandler_$2318_$", - "typeString": "type(contract IERCHandler)" - } - }, - "id": 1597, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10014:27:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERCHandler_$2318", - "typeString": "contract IERCHandler" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "9992:49:4" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1602, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1584, - "src": "10071:12:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1603, - "name": "srcDecimals", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1586, - "src": "10085:11:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "id": 1604, - "name": "destDecimals", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1588, - "src": "10098:12:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "expression": { - "argumentTypes": null, - "id": 1599, - "name": "handler", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1594, - "src": "10051:7:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERCHandler_$2318", - "typeString": "contract IERCHandler" - } - }, - "id": 1601, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "setDecimals", - "nodeType": "MemberAccess", - "referencedDeclaration": 2307, - "src": "10051:19:4", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint8_$_t_uint8_$returns$__$", - "typeString": "function (address,uint8,uint8) external" - } - }, - "id": 1605, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10051:60:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1606, - "nodeType": "ExpressionStatement", - "src": "10051:60:4" - } - ] + "name": "tail", + "nodeType": "YulIdentifier", + "src": "4222:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "4302:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4315:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4326:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4311:3:40" }, - "documentation": { - "id": 1580, - "nodeType": "StructuredDocumentation", - "src": "9467:380:4", - "text": "@notice Sets a resource as burnable for handler contracts that use the IERCHandler interface.\n@notice Only callable by an address that currently has the admin role.\n@param handlerAddress Address of handler resource will be set for.\n@param tokenAddress Address of contract to be called when a deposit is made and a deposited is executed." - }, - "functionSelector": "b56bcaf1", - "id": 1608, - "implemented": true, - "kind": "function", - "modifiers": [ + "nodeType": "YulFunctionCall", + "src": "4311:17:40" + } + ], + "functionName": { + "name": "abi_encode_t_bytes32_to_t_bytes32_fromStack", + "nodeType": "YulIdentifier", + "src": "4258:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "4258:71:40" + }, + "nodeType": "YulExpressionStatement", + "src": "4258:71:40" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "4184:9:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "4196:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "4207:4:40", + "type": "" + } + ], + "src": "4114:222:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4387:81:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4397:65:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4412:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4419:42:40", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "4408:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "4408:54:40" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "4397:7:40" + } + ] + } + ] + }, + "name": "cleanup_t_uint160", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "4369:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "4379:7:40", + "type": "" + } + ], + "src": "4342:126:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4519:51:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4529:35:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4558:5:40" + } + ], + "functionName": { + "name": "cleanup_t_uint160", + "nodeType": "YulIdentifier", + "src": "4540:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "4540:24:40" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "4529:7:40" + } + ] + } + ] + }, + "name": "cleanup_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "4501:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "4511:7:40", + "type": "" + } + ], + "src": "4474:96:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4619:79:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "4676:16:40", + "statements": [ + { + "expression": { + "arguments": [ { - "arguments": null, - "id": 1591, - "modifierName": { - "argumentTypes": null, - "id": 1590, - "name": "onlyAdmin", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1228, - "src": "9972:9:4", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "9972:9:4" + "kind": "number", + "nodeType": "YulLiteral", + "src": "4685:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4688:1:40", + "type": "", + "value": "0" } - ], - "name": "adminSetDecimals", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 1589, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1582, - "mutability": "mutable", - "name": "handlerAddress", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1608, - "src": "9878:22:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1581, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9878:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1584, - "mutability": "mutable", - "name": "tokenAddress", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1608, - "src": "9902:20:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1583, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9902:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1586, - "mutability": "mutable", - "name": "srcDecimals", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1608, - "src": "9924:17:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 1585, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "9924:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1588, - "mutability": "mutable", - "name": "destDecimals", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1608, - "src": "9943:18:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 1587, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "9943:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "9877:85:4" + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "4678:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "4678:12:40" }, - "returnParameters": { - "id": 1592, - "nodeType": "ParameterList", - "parameters": [], - "src": "9982:0:4" + "nodeType": "YulExpressionStatement", + "src": "4678:12:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4642:5:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4667:5:40" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "4649:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "4649:24:40" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "4639:2:40" }, - "scope": 2244, - "src": "9852:266:4", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" + "nodeType": "YulFunctionCall", + "src": "4639:35:40" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "4632:6:40" }, + "nodeType": "YulFunctionCall", + "src": "4632:43:40" + }, + "nodeType": "YulIf", + "src": "4629:63:40" + } + ] + }, + "name": "validator_revert_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "4612:5:40", + "type": "" + } + ], + "src": "4576:122:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4756:87:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4766:29:40", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4788:6:40" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4775:12:40" + }, + "nodeType": "YulFunctionCall", + "src": "4775:20:40" + }, + "variableNames": [ { - "body": { - "id": 1624, - "nodeType": "Block", - "src": "10424:55:4", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1622, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1618, - "name": "_depositCounts", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1150, - "src": "10434:14:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint8_$_t_uint64_$", - "typeString": "mapping(uint8 => uint64)" - } - }, - "id": 1620, - "indexExpression": { - "argumentTypes": null, - "id": 1619, - "name": "chainId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1611, - "src": "10449:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "10434:23:4", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1621, - "name": "depositNonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1613, - "src": "10460:12:4", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "src": "10434:38:4", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "id": 1623, - "nodeType": "ExpressionStatement", - "src": "10434:38:4" - } - ] + "name": "value", + "nodeType": "YulIdentifier", + "src": "4766:5:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4831:5:40" + } + ], + "functionName": { + "name": "validator_revert_t_address", + "nodeType": "YulIdentifier", + "src": "4804:26:40" + }, + "nodeType": "YulFunctionCall", + "src": "4804:33:40" + }, + "nodeType": "YulExpressionStatement", + "src": "4804:33:40" + } + ] + }, + "name": "abi_decode_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "4734:6:40", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "4742:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "4750:5:40", + "type": "" + } + ], + "src": "4704:139:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4915:263:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "4961:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "4963:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "4963:79:40" }, - "documentation": { - "id": 1609, - "nodeType": "StructuredDocumentation", - "src": "10124:210:4", - "text": "@notice Sets a initial deposit nonce for dest chan, this is used to migrate to a new bridge contract.\n@param chainId Dest chain id.\n@param depositNonce Initial deposit nonce." - }, - "functionSelector": "edc20c3c", - "id": 1625, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": null, - "id": 1616, - "modifierName": { - "argumentTypes": null, - "id": 1615, - "name": "onlyAdmin", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1228, - "src": "10414:9:4", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "10414:9:4" - } + "nodeType": "YulExpressionStatement", + "src": "4963:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4936:7:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4945:9:40" + } ], - "name": "adminSetDepositNonce", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 1614, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1611, - "mutability": "mutable", - "name": "chainId", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1625, - "src": "10369:13:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 1610, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "10369:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1613, - "mutability": "mutable", - "name": "depositNonce", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1625, - "src": "10384:19:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 1612, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "10384:6:4", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "10368:36:4" + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "4932:3:40" }, - "returnParameters": { - "id": 1617, - "nodeType": "ParameterList", - "parameters": [], - "src": "10424:0:4" - }, - "scope": 2244, - "src": "10339:140:4", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" + "nodeType": "YulFunctionCall", + "src": "4932:23:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4957:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "4928:3:40" }, + "nodeType": "YulFunctionCall", + "src": "4928:32:40" + }, + "nodeType": "YulIf", + "src": "4925:119:40" + }, + { + "nodeType": "YulBlock", + "src": "5054:117:40", + "statements": [ { - "body": { - "id": 1658, - "nodeType": "Block", - "src": "11183:137:4", - "statements": [ - { - "assignments": [1638], - "declarations": [ - { - "constant": false, - "id": 1638, - "mutability": "mutable", - "name": "nonceAndID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1658, - "src": "11193:17:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - }, - "typeName": { - "id": 1637, - "name": "uint72", - "nodeType": "ElementaryTypeName", - "src": "11193:6:4", - "typeDescriptions": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1651, - "initialValue": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - }, - "id": 1650, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - }, - "id": 1644, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1641, - "name": "depositNonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1630, - "src": "11221:12:4", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - ], - "id": 1640, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "11214:6:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint72_$", - "typeString": "type(uint72)" - }, - "typeName": { - "id": 1639, - "name": "uint72", - "nodeType": "ElementaryTypeName", - "src": "11214:6:4", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 1642, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11214:20:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - } - }, - "nodeType": "BinaryOperation", - "operator": "<<", - "rightExpression": { - "argumentTypes": null, - "hexValue": "38", - "id": 1643, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11238:1:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_8_by_1", - "typeString": "int_const 8" - }, - "value": "8" - }, - "src": "11214:25:4", - "typeDescriptions": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - } - } - ], - "id": 1645, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "11213:27:4", - "typeDescriptions": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - } - }, - "nodeType": "BinaryOperation", - "operator": "|", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1648, - "name": "originChainID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1628, - "src": "11250:13:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "id": 1647, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "11243:6:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint72_$", - "typeString": "type(uint72)" - }, - "typeName": { - "id": 1646, - "name": "uint72", - "nodeType": "ElementaryTypeName", - "src": "11243:6:4", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 1649, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11243:21:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - } - }, - "src": "11213:51:4", - "typeDescriptions": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "11193:71:4" - }, - { - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1652, - "name": "_proposals", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1166, - "src": "11281:10:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint72_$_t_mapping$_t_bytes32_$_t_struct$_Proposal_$1146_storage_$_$", - "typeString": "mapping(uint72 => mapping(bytes32 => struct Bridge.Proposal storage ref))" - } - }, - "id": 1654, - "indexExpression": { - "argumentTypes": null, - "id": 1653, - "name": "nonceAndID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1638, - "src": "11292:10:4", - "typeDescriptions": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "11281:22:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$1146_storage_$", - "typeString": "mapping(bytes32 => struct Bridge.Proposal storage ref)" - } - }, - "id": 1656, - "indexExpression": { - "argumentTypes": null, - "id": 1655, - "name": "dataHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1632, - "src": "11304:8:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "11281:32:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Proposal_$1146_storage", - "typeString": "struct Bridge.Proposal storage ref" - } - }, - "functionReturnParameters": 1636, - "id": 1657, - "nodeType": "Return", - "src": "11274:39:4" - } - ] - }, - "documentation": { - "id": 1626, - "nodeType": "StructuredDocumentation", - "src": "10485:572:4", - "text": "@notice Returns a proposal.\n@param originChainID Chain ID deposit originated from.\n@param depositNonce ID of proposal generated by proposal's origin Bridge contract.\n@param dataHash Hash of data to be provided when deposit proposal is executed.\n@return Proposal which consists of:\n- _dataHash Hash of data to be provided when deposit proposal is executed.\n- _yesVotes Number of votes in favor of proposal.\n- _noVotes Number of votes against proposal.\n- _status Current status of proposal." - }, - "functionSelector": "a9cf69fa", - "id": 1659, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getProposal", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 1633, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1628, - "mutability": "mutable", - "name": "originChainID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1659, - "src": "11083:19:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 1627, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "11083:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1630, - "mutability": "mutable", - "name": "depositNonce", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1659, - "src": "11104:19:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 1629, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "11104:6:4", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1632, - "mutability": "mutable", - "name": "dataHash", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1659, - "src": "11125:16:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1631, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "11125:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } + "nodeType": "YulVariableDeclaration", + "src": "5069:15:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5083:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "5073:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5098:63:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5133:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5144:6:40" + } ], - "src": "11082:60:4" + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5129:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "5129:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "5153:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "5108:20:40" }, - "returnParameters": { - "id": 1636, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1635, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1659, - "src": "11166:15:4", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Proposal_$1146_memory_ptr", - "typeString": "struct Bridge.Proposal" - }, - "typeName": { - "contractScope": null, - "id": 1634, - "name": "Proposal", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1146, - "src": "11166:8:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Proposal_$1146_storage_ptr", - "typeString": "struct Bridge.Proposal" - } - }, - "value": null, - "visibility": "internal" - } + "nodeType": "YulFunctionCall", + "src": "5108:53:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "5098:6:40" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "4885:9:40", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "4896:7:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "4908:6:40", + "type": "" + } + ], + "src": "4849:329:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5228:57:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5238:41:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5253:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5260:18:40", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "5249:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "5249:30:40" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "5238:7:40" + } + ] + } + ] + }, + "name": "cleanup_t_uint64", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "5210:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "5220:7:40", + "type": "" + } + ], + "src": "5184:101:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5333:78:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "5389:16:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5398:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5401:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "5391:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "5391:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "5391:12:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5356:5:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5380:5:40" + } ], - "src": "11165:17:4" + "functionName": { + "name": "cleanup_t_uint64", + "nodeType": "YulIdentifier", + "src": "5363:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "5363:23:40" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "5353:2:40" }, - "scope": 2244, - "src": "11062:258:4", - "stateMutability": "view", - "virtual": false, - "visibility": "external" + "nodeType": "YulFunctionCall", + "src": "5353:34:40" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "5346:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "5346:42:40" + }, + "nodeType": "YulIf", + "src": "5343:62:40" + } + ] + }, + "name": "validator_revert_t_uint64", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "5326:5:40", + "type": "" + } + ], + "src": "5291:120:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5468:86:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5478:29:40", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5500:6:40" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5487:12:40" }, + "nodeType": "YulFunctionCall", + "src": "5487:20:40" + }, + "variableNames": [ { - "body": { - "id": 1678, - "nodeType": "Block", - "src": "11530:98:4", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1670, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1668, - "name": "_fee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1120, - "src": "11548:4:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "id": 1669, - "name": "newFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1662, - "src": "11556:6:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "11548:14:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "43757272656e742066656520697320657175616c20746f206e657720666565", - "id": 1671, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11564:33:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_db095f13e245243418ee9a5b7ae0408e2f6a2092be336cf2ec7b5f2ae85b9133", - "typeString": "literal_string \"Current fee is equal to new fee\"" - }, - "value": "Current fee is equal to new fee" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_db095f13e245243418ee9a5b7ae0408e2f6a2092be336cf2ec7b5f2ae85b9133", - "typeString": "literal_string \"Current fee is equal to new fee\"" - } - ], - "id": 1667, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "11540:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 1672, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11540:58:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1673, - "nodeType": "ExpressionStatement", - "src": "11540:58:4" - }, - { - "expression": { - "argumentTypes": null, - "id": 1676, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1674, - "name": "_fee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1120, - "src": "11608:4:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1675, - "name": "newFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1662, - "src": "11615:6:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "11608:13:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1677, - "nodeType": "ExpressionStatement", - "src": "11608:13:4" - } - ] + "name": "value", + "nodeType": "YulIdentifier", + "src": "5478:5:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5542:5:40" + } + ], + "functionName": { + "name": "validator_revert_t_uint64", + "nodeType": "YulIdentifier", + "src": "5516:25:40" + }, + "nodeType": "YulFunctionCall", + "src": "5516:32:40" + }, + "nodeType": "YulExpressionStatement", + "src": "5516:32:40" + } + ] + }, + "name": "abi_decode_t_uint64", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "5446:6:40", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "5454:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "5462:5:40", + "type": "" + } + ], + "src": "5417:137:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5657:516:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "5703:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "5705:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "5705:79:40" }, - "documentation": { - "id": 1660, - "nodeType": "StructuredDocumentation", - "src": "11326:143:4", - "text": "@notice Changes deposit fee.\n@notice Only callable by admin.\n@param newFee Value {_fee} will be updated to." - }, - "functionSelector": "91c404ac", - "id": 1679, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": null, - "id": 1665, - "modifierName": { - "argumentTypes": null, - "id": 1664, - "name": "onlyAdmin", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1228, - "src": "11520:9:4", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "11520:9:4" - } + "nodeType": "YulExpressionStatement", + "src": "5705:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "5678:7:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5687:9:40" + } ], - "name": "adminChangeFee", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 1663, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1662, - "mutability": "mutable", - "name": "newFee", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1679, - "src": "11498:11:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1661, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "11498:4:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "11497:13:4" + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "5674:3:40" }, - "returnParameters": { - "id": 1666, - "nodeType": "ParameterList", - "parameters": [], - "src": "11530:0:4" + "nodeType": "YulFunctionCall", + "src": "5674:23:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5699:2:40", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "5670:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "5670:32:40" + }, + "nodeType": "YulIf", + "src": "5667:119:40" + }, + { + "nodeType": "YulBlock", + "src": "5796:115:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "5811:15:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5825:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "5815:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5840:61:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5873:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5884:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5869:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "5869:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "5893:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_uint8", + "nodeType": "YulIdentifier", + "src": "5850:18:40" }, - "scope": 2244, - "src": "11474:154:4", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" + "nodeType": "YulFunctionCall", + "src": "5850:51:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "5840:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "5921:117:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "5936:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5950:2:40", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "5940:6:40", + "type": "" + } + ] }, { - "body": { - "id": 1707, - "nodeType": "Block", - "src": "12166:134:4", - "statements": [ - { - "assignments": [1694], - "declarations": [ - { - "constant": false, - "id": 1694, - "mutability": "mutable", - "name": "handler", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1707, - "src": "12176:19:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERCHandler_$2318", - "typeString": "contract IERCHandler" - }, - "typeName": { - "contractScope": null, - "id": 1693, - "name": "IERCHandler", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2318, - "src": "12176:11:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERCHandler_$2318", - "typeString": "contract IERCHandler" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1698, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1696, - "name": "handlerAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1682, - "src": "12210:14:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1695, - "name": "IERCHandler", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2318, - "src": "12198:11:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERCHandler_$2318_$", - "typeString": "type(contract IERCHandler)" - } - }, - "id": 1697, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "12198:27:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERCHandler_$2318", - "typeString": "contract IERCHandler" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "12176:49:4" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1702, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1684, - "src": "12252:12:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1703, - "name": "recipient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1686, - "src": "12266:9:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1704, - "name": "amountOrTokenID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1688, - "src": "12277:15:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 1699, - "name": "handler", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1694, - "src": "12235:7:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERCHandler_$2318", - "typeString": "contract IERCHandler" - } - }, - "id": 1701, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "withdraw", - "nodeType": "MemberAccess", - "referencedDeclaration": 2317, - "src": "12235:16:4", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256) external" - } - }, - "id": 1705, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "12235:58:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1706, - "nodeType": "ExpressionStatement", - "src": "12235:58:4" - } - ] + "nodeType": "YulAssignment", + "src": "5966:62:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6000:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6011:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5996:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "5996:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "6020:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_uint64", + "nodeType": "YulIdentifier", + "src": "5976:19:40" }, - "documentation": { - "id": 1680, - "nodeType": "StructuredDocumentation", - "src": "11634:357:4", - "text": "@notice Used to manually withdraw funds from ERC safes.\n@param handlerAddress Address of handler to withdraw from.\n@param tokenAddress Address of token to withdraw.\n@param recipient Address to withdraw tokens to.\n@param amountOrTokenID Either the amount of ERC20 tokens or the ERC721 token ID to withdraw." - }, - "functionSelector": "780cf004", - "id": 1708, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": null, - "id": 1691, - "modifierName": { - "argumentTypes": null, - "id": 1690, - "name": "onlyAdmin", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1228, - "src": "12156:9:4", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "12156:9:4" - } + "nodeType": "YulFunctionCall", + "src": "5976:52:40" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "5966:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "6048:118:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "6063:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6077:2:40", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "6067:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "6093:63:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6128:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6139:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6124:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "6124:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "6148:7:40" + } ], - "name": "adminWithdraw", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 1689, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1682, - "mutability": "mutable", - "name": "handlerAddress", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1708, - "src": "12028:22:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1681, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "12028:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1684, - "mutability": "mutable", - "name": "tokenAddress", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1708, - "src": "12060:20:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1683, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "12060:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1686, - "mutability": "mutable", - "name": "recipient", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1708, - "src": "12090:17:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1685, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "12090:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1688, - "mutability": "mutable", - "name": "amountOrTokenID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1708, - "src": "12117:23:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1687, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "12117:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } + "functionName": { + "name": "abi_decode_t_bytes32", + "nodeType": "YulIdentifier", + "src": "6103:20:40" + }, + "nodeType": "YulFunctionCall", + "src": "6103:53:40" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "6093:6:40" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint8t_uint64t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "5611:9:40", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "5622:7:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "5634:6:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "5642:6:40", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "5650:6:40", + "type": "" + } + ], + "src": "5560:613:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6245:263:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "6291:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "6293:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "6293:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "6293:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "6266:7:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6275:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "6262:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "6262:23:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6287:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "6258:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "6258:32:40" + }, + "nodeType": "YulIf", + "src": "6255:119:40" + }, + { + "nodeType": "YulBlock", + "src": "6384:117:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "6399:15:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6413:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "6403:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "6428:63:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6463:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6474:6:40" + } ], - "src": "12018:128:4" + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6459:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "6459:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "6483:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_bytes32", + "nodeType": "YulIdentifier", + "src": "6438:20:40" + }, + "nodeType": "YulFunctionCall", + "src": "6438:53:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "6428:6:40" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "6215:9:40", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "6226:7:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "6238:6:40", + "type": "" + } + ], + "src": "6179:329:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6597:391:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "6643:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "6645:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "6645:79:40" }, - "returnParameters": { - "id": 1692, - "nodeType": "ParameterList", - "parameters": [], - "src": "12166:0:4" + "nodeType": "YulExpressionStatement", + "src": "6645:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "6618:7:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6627:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "6614:3:40" }, - "scope": 2244, - "src": "11996:304:4", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" + "nodeType": "YulFunctionCall", + "src": "6614:23:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6639:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "6610:3:40" }, + "nodeType": "YulFunctionCall", + "src": "6610:32:40" + }, + "nodeType": "YulIf", + "src": "6607:119:40" + }, + { + "nodeType": "YulBlock", + "src": "6736:117:40", + "statements": [ { - "body": { - "id": 1782, - "nodeType": "Block", - "src": "12844:581:4", - "statements": [ + "nodeType": "YulVariableDeclaration", + "src": "6751:15:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6765:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "6755:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "6780:63:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6815:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6826:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6811:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "6811:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "6835:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_bytes32", + "nodeType": "YulIdentifier", + "src": "6790:20:40" + }, + "nodeType": "YulFunctionCall", + "src": "6790:53:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "6780:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "6863:118:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "6878:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6892:2:40", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "6882:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "6908:63:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6943:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6954:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6939:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "6939:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "6963:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "6918:20:40" + }, + "nodeType": "YulFunctionCall", + "src": "6918:53:40" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "6908:6:40" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "6559:9:40", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "6570:7:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "6582:6:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "6590:6:40", + "type": "" + } + ], + "src": "6514:474:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7074:388:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "7120:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "7122:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "7122:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "7122:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "7095:7:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7104:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "7091:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "7091:23:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7116:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "7087:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "7087:32:40" + }, + "nodeType": "YulIf", + "src": "7084:119:40" + }, + { + "nodeType": "YulBlock", + "src": "7213:116:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "7228:15:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7242:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "7232:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "7257:62:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7291:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "7302:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7287:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "7287:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "7311:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_uint64", + "nodeType": "YulIdentifier", + "src": "7267:19:40" + }, + "nodeType": "YulFunctionCall", + "src": "7267:52:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "7257:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "7339:116:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "7354:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7368:2:40", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "7358:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "7384:61:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7417:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "7428:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7413:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "7413:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "7437:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_uint8", + "nodeType": "YulIdentifier", + "src": "7394:18:40" + }, + "nodeType": "YulFunctionCall", + "src": "7394:51:40" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "7384:6:40" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint64t_uint8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "7036:9:40", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "7047:7:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "7059:6:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "7067:6:40", + "type": "" + } + ], + "src": "6994:468:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7526:40:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7537:22:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "7553:5:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "7547:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "7547:12:40" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "7537:6:40" + } + ] + } + ] + }, + "name": "array_length_t_bytes_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "7509:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "7519:6:40", + "type": "" + } + ], + "src": "7468:98:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7667:73:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "7684:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "7689:6:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7677:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "7677:19:40" + }, + "nodeType": "YulExpressionStatement", + "src": "7677:19:40" + }, + { + "nodeType": "YulAssignment", + "src": "7705:29:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "7724:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7729:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7720:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "7720:14:40" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "7705:11:40" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "7639:3:40", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "7644:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "7655:11:40", + "type": "" + } + ], + "src": "7572:168:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7808:184:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "7818:10:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7827:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "7822:1:40", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7887:63:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1724, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1721, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "12862:3:4", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1722, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "value", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "12862:9:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 1723, - "name": "_fee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1120, - "src": "12875:4:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "12862:17:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "496e636f72726563742066656520737570706c696564", - "id": 1725, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12881:24:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_2a2431514317abe5c8b163ccf132d16516b7e676afbb7d1bf5781dba4082d9d5", - "typeString": "literal_string \"Incorrect fee supplied\"" - }, - "value": "Incorrect fee supplied" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_2a2431514317abe5c8b163ccf132d16516b7e676afbb7d1bf5781dba4082d9d5", - "typeString": "literal_string \"Incorrect fee supplied\"" - } - ], - "id": 1720, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "12854:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 1726, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "12854:52:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1727, - "nodeType": "ExpressionStatement", - "src": "12854:52:4" + "name": "dst", + "nodeType": "YulIdentifier", + "src": "7912:3:40" }, { - "assignments": [1729], - "declarations": [ - { - "constant": false, - "id": 1729, - "mutability": "mutable", - "name": "handler", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1782, - "src": "12917:15:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1728, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "12917:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1733, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1730, - "name": "_resourceIDToHandlerAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1154, - "src": "12935:27:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", - "typeString": "mapping(bytes32 => address)" - } - }, - "id": 1732, - "indexExpression": { - "argumentTypes": null, - "id": 1731, - "name": "resourceID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1713, - "src": "12963:10:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "12935:39:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "12917:57:4" - }, + "name": "i", + "nodeType": "YulIdentifier", + "src": "7917:1:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7908:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "7908:11:40" + }, + { + "arguments": [ { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1740, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1735, - "name": "handler", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1729, - "src": "12992:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 1738, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "13011:1:4", - "subdenomination": null, - "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": 1737, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "13003:7:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 1736, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "13003:7:4", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 1739, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "13003:10:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "src": "12992:21:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "7265736f757263654944206e6f74206d617070656420746f2068616e646c6572", - "id": 1741, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "13015:34:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_542d0c0b50539d1853c947fb8449b05e8626e9928b1fbf8fb55da8a4976aae52", - "typeString": "literal_string \"resourceID not mapped to handler\"" - }, - "value": "resourceID not mapped to handler" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_542d0c0b50539d1853c947fb8449b05e8626e9928b1fbf8fb55da8a4976aae52", - "typeString": "literal_string \"resourceID not mapped to handler\"" - } - ], - "id": 1734, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "12984:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 1742, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "12984:66:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "7931:3:40" }, - "id": 1743, - "nodeType": "ExpressionStatement", - "src": "12984:66:4" - }, - { - "assignments": [1745], - "declarations": [ - { - "constant": false, - "id": 1745, - "mutability": "mutable", - "name": "depositNonce", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1782, - "src": "13061:19:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 1744, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "13061:6:4", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1750, - "initialValue": { - "argumentTypes": null, - "id": 1749, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": true, - "src": "13083:36:4", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1746, - "name": "_depositCounts", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1150, - "src": "13085:14:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint8_$_t_uint64_$", - "typeString": "mapping(uint8 => uint64)" - } - }, - "id": 1748, - "indexExpression": { - "argumentTypes": null, - "id": 1747, - "name": "destinationChainID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1711, - "src": "13100:18:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "13085:34:4", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "13061:58:4" - }, - { - "expression": { - "argumentTypes": null, - "id": 1757, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1751, - "name": "_depositRecords", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1160, - "src": "13129:15:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_uint8_$_t_bytes_storage_$_$", - "typeString": "mapping(uint64 => mapping(uint8 => bytes storage ref))" - } - }, - "id": 1754, - "indexExpression": { - "argumentTypes": null, - "id": 1752, - "name": "depositNonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1745, - "src": "13145:12:4", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "13129:29:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint8_$_t_bytes_storage_$", - "typeString": "mapping(uint8 => bytes storage ref)" - } - }, - "id": 1755, - "indexExpression": { - "argumentTypes": null, - "id": 1753, - "name": "destinationChainID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1711, - "src": "13159:18:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "13129:49:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage", - "typeString": "bytes storage ref" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1756, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1715, - "src": "13181:4:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "src": "13129:56:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage", - "typeString": "bytes storage ref" - } - }, - "id": 1758, - "nodeType": "ExpressionStatement", - "src": "13129:56:4" - }, - { - "assignments": [1760], - "declarations": [ - { - "constant": false, - "id": 1760, - "mutability": "mutable", - "name": "depositHandler", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1782, - "src": "13196:30:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IDepositExecute_$2280", - "typeString": "contract IDepositExecute" - }, - "typeName": { - "contractScope": null, - "id": 1759, - "name": "IDepositExecute", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2280, - "src": "13196:15:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IDepositExecute_$2280", - "typeString": "contract IDepositExecute" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1764, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1762, - "name": "handler", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1729, - "src": "13245:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1761, - "name": "IDepositExecute", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2280, - "src": "13229:15:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IDepositExecute_$2280_$", - "typeString": "type(contract IDepositExecute)" - } - }, - "id": 1763, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "13229:24:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IDepositExecute_$2280", - "typeString": "contract IDepositExecute" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "13196:57:4" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1768, - "name": "resourceID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1713, - "src": "13286:10:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 1769, - "name": "destinationChainID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1711, - "src": "13298:18:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "id": 1770, - "name": "depositNonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1745, - "src": "13318:12:4", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1771, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "13332:3:4", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1772, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "13332:10:4", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - { - "argumentTypes": null, - "id": 1773, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1715, - "src": "13344:4:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - ], - "expression": { - "argumentTypes": null, - "id": 1765, - "name": "depositHandler", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1760, - "src": "13263:14:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IDepositExecute_$2280", - "typeString": "contract IDepositExecute" - } - }, - "id": 1767, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "deposit", - "nodeType": "MemberAccess", - "referencedDeclaration": 2271, - "src": "13263:22:4", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_uint8_$_t_uint64_$_t_address_$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (bytes32,uint8,uint64,address,bytes memory) external" - } - }, - "id": 1774, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "13263:86:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1775, - "nodeType": "ExpressionStatement", - "src": "13263:86:4" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1777, - "name": "destinationChainID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1711, - "src": "13373:18:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "id": 1778, - "name": "resourceID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1713, - "src": "13393:10:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 1779, - "name": "depositNonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1745, - "src": "13405:12:4", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - ], - "id": 1776, - "name": "Deposit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1194, - "src": "13365:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_bytes32_$_t_uint64_$returns$__$", - "typeString": "function (uint8,bytes32,uint64)" - } - }, - "id": 1780, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "13365:53:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1781, - "nodeType": "EmitStatement", - "src": "13360:58:4" + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "7936:1:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7927:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "7927:11:40" } - ] + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "7921:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "7921:18:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7901:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "7901:39:40" }, - "documentation": { - "id": 1709, - "nodeType": "StructuredDocumentation", - "src": "12306:418:4", - "text": "@notice Initiates a transfer using a specified handler contract.\n@notice Only callable when Bridge is not paused.\n@param destinationChainID ID of chain deposit will be bridged to.\n@param resourceID ResourceID used to find address of handler to be used for deposit.\n@param data Additional data to be passed to specified handler.\n@notice Emits {Deposit} event." - }, - "functionSelector": "05e2ca17", - "id": 1783, - "implemented": true, - "kind": "function", - "modifiers": [ + "nodeType": "YulExpressionStatement", + "src": "7901:39:40" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "7848:1:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "7851:6:40" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "7845:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "7845:13:40" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "7859:19:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7861:15:40", + "value": { + "arguments": [ { - "arguments": null, - "id": 1718, - "modifierName": { - "argumentTypes": null, - "id": 1717, - "name": "whenNotPaused", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2375, - "src": "12830:13:4", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "12830:13:4" + "name": "i", + "nodeType": "YulIdentifier", + "src": "7870:1:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7873:2:40", + "type": "", + "value": "32" } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7866:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "7866:10:40" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "7861:1:40" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "7841:3:40", + "statements": [] + }, + "src": "7837:113:40" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "7970:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "7975:6:40" + } ], - "name": "deposit", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 1716, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1711, - "mutability": "mutable", - "name": "destinationChainID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1783, - "src": "12746:24:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 1710, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "12746:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1713, - "mutability": "mutable", - "name": "resourceID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1783, - "src": "12772:18:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1712, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "12772:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1715, - "mutability": "mutable", - "name": "data", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1783, - "src": "12792:19:4", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 1714, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "12792:5:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12745:67:4" + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7966:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "7966:16:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7984:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7959:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "7959:27:40" + }, + "nodeType": "YulExpressionStatement", + "src": "7959:27:40" + } + ] + }, + "name": "copy_memory_to_memory_with_cleanup", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "7790:3:40", + "type": "" + }, + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "7795:3:40", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "7800:6:40", + "type": "" + } + ], + "src": "7746:246:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8046:54:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8056:38:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8074:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8081:2:40", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8070:3:40" }, - "returnParameters": { - "id": 1719, - "nodeType": "ParameterList", - "parameters": [], - "src": "12844:0:4" + "nodeType": "YulFunctionCall", + "src": "8070:14:40" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8090:2:40", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "8086:3:40" }, - "scope": 2244, - "src": "12729:696:4", - "stateMutability": "payable", - "virtual": false, - "visibility": "external" + "nodeType": "YulFunctionCall", + "src": "8086:7:40" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "8066:3:40" }, + "nodeType": "YulFunctionCall", + "src": "8066:28:40" + }, + "variableNames": [ { - "body": { - "id": 2011, - "nodeType": "Block", - "src": "14221:2237:4", - "statements": [ - { - "assignments": [1800], - "declarations": [ - { - "constant": false, - "id": 1800, - "mutability": "mutable", - "name": "nonceAndID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 2011, - "src": "14232:17:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - }, - "typeName": { - "id": 1799, - "name": "uint72", - "nodeType": "ElementaryTypeName", - "src": "14232:6:4", - "typeDescriptions": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1813, - "initialValue": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - }, - "id": 1812, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - }, - "id": 1806, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1803, - "name": "depositNonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1788, - "src": "14260:12:4", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - ], - "id": 1802, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "14253:6:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint72_$", - "typeString": "type(uint72)" - }, - "typeName": { - "id": 1801, - "name": "uint72", - "nodeType": "ElementaryTypeName", - "src": "14253:6:4", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 1804, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "14253:20:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - } - }, - "nodeType": "BinaryOperation", - "operator": "<<", - "rightExpression": { - "argumentTypes": null, - "hexValue": "38", - "id": 1805, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "14277:1:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_8_by_1", - "typeString": "int_const 8" - }, - "value": "8" - }, - "src": "14253:25:4", - "typeDescriptions": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - } - } - ], - "id": 1807, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "14252:27:4", - "typeDescriptions": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - } - }, - "nodeType": "BinaryOperation", - "operator": "|", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1810, - "name": "chainID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1786, - "src": "14289:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "id": 1809, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "14282:6:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint72_$", - "typeString": "type(uint72)" - }, - "typeName": { - "id": 1808, - "name": "uint72", - "nodeType": "ElementaryTypeName", - "src": "14282:6:4", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 1811, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "14282:15:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - } - }, - "src": "14252:45:4", - "typeDescriptions": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "14232:65:4" - }, - { - "assignments": [1815], - "declarations": [ - { - "constant": false, - "id": 1815, - "mutability": "mutable", - "name": "proposal", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 2011, - "src": "14307:25:4", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Proposal_$1146_storage_ptr", - "typeString": "struct Bridge.Proposal" - }, - "typeName": { - "contractScope": null, - "id": 1814, - "name": "Proposal", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1146, - "src": "14307:8:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Proposal_$1146_storage_ptr", - "typeString": "struct Bridge.Proposal" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1821, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1816, - "name": "_proposals", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1166, - "src": "14335:10:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint72_$_t_mapping$_t_bytes32_$_t_struct$_Proposal_$1146_storage_$_$", - "typeString": "mapping(uint72 => mapping(bytes32 => struct Bridge.Proposal storage ref))" - } - }, - "id": 1818, - "indexExpression": { - "argumentTypes": null, - "id": 1817, - "name": "nonceAndID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1800, - "src": "14346:10:4", - "typeDescriptions": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14335:22:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$1146_storage_$", - "typeString": "mapping(bytes32 => struct Bridge.Proposal storage ref)" - } - }, - "id": 1820, - "indexExpression": { - "argumentTypes": null, - "id": 1819, - "name": "dataHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1792, - "src": "14358:8:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14335:32:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Proposal_$1146_storage", - "typeString": "struct Bridge.Proposal storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "14307:60:4" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1830, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1823, - "name": "_resourceIDToHandlerAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1154, - "src": "14386:27:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", - "typeString": "mapping(bytes32 => address)" - } - }, - "id": 1825, - "indexExpression": { - "argumentTypes": null, - "id": 1824, - "name": "resourceID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1790, - "src": "14414:10:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14386:39:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 1828, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "14437:1:4", - "subdenomination": null, - "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": 1827, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "14429:7:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 1826, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "14429:7:4", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 1829, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "14429:10:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "src": "14386:53:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "6e6f2068616e646c657220666f72207265736f757263654944", - "id": 1831, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "14441:27:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_e9d3c8def96ec5b61b3d5e8e38d358587f69ed955aa1f36ba2f95c28a40ffe20", - "typeString": "literal_string \"no handler for resourceID\"" - }, - "value": "no handler for resourceID" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_e9d3c8def96ec5b61b3d5e8e38d358587f69ed955aa1f36ba2f95c28a40ffe20", - "typeString": "literal_string \"no handler for resourceID\"" - } - ], - "id": 1822, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "14378:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 1832, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "14378:91:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1833, - "nodeType": "ExpressionStatement", - "src": "14378:91:4" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1841, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1837, - "name": "proposal", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1815, - "src": "14492:8:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Proposal_$1146_storage_ptr", - "typeString": "struct Bridge.Proposal storage pointer" - } - }, - "id": 1838, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "_status", - "nodeType": "MemberAccess", - "referencedDeclaration": 1143, - "src": "14492:16:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - } - ], - "id": 1836, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "14487:4:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 1835, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "14487:4:4", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 1839, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "14487:22:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1840, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "14513:1:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "14487:27:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "70726f706f73616c20616c7265616479207061737365642f65786563757465642f63616e63656c6c6564", - "id": 1842, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "14516:44:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_c48a67927cb12b6986df316341a7e026082eb20c4db86a85c59231eb345d8194", - "typeString": "literal_string \"proposal already passed/executed/cancelled\"" - }, - "value": "proposal already passed/executed/cancelled" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_c48a67927cb12b6986df316341a7e026082eb20c4db86a85c59231eb345d8194", - "typeString": "literal_string \"proposal already passed/executed/cancelled\"" - } - ], - "id": 1834, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "14479:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 1843, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "14479:82:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1844, - "nodeType": "ExpressionStatement", - "src": "14479:82:4" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1854, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "14579:54:4", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1846, - "name": "_hasVotedOnProposal", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1174, - "src": "14580:19:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint72_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$_$", - "typeString": "mapping(uint72 => mapping(bytes32 => mapping(address => bool)))" - } - }, - "id": 1848, - "indexExpression": { - "argumentTypes": null, - "id": 1847, - "name": "nonceAndID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1800, - "src": "14600:10:4", - "typeDescriptions": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14580:31:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(bytes32 => mapping(address => bool))" - } - }, - "id": 1850, - "indexExpression": { - "argumentTypes": null, - "id": 1849, - "name": "dataHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1792, - "src": "14612:8:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14580:41:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1853, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1851, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "14622:3:4", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1852, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "14622:10:4", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14580:53:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "72656c6179657220616c726561647920766f746564", - "id": 1855, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "14635:23:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_0bc9c5100729666c219a147072032fe3fda273fedfa160b31a35f38bd9d0632b", - "typeString": "literal_string \"relayer already voted\"" - }, - "value": "relayer already voted" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_0bc9c5100729666c219a147072032fe3fda273fedfa160b31a35f38bd9d0632b", - "typeString": "literal_string \"relayer already voted\"" - } - ], - "id": 1845, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "14571:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 1856, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "14571:88:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1857, - "nodeType": "ExpressionStatement", - "src": "14571:88:4" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1864, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1860, - "name": "proposal", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1815, - "src": "14679:8:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Proposal_$1146_storage_ptr", - "typeString": "struct Bridge.Proposal storage pointer" - } - }, - "id": 1861, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "_status", - "nodeType": "MemberAccess", - "referencedDeclaration": 1143, - "src": "14679:16:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - } - ], - "id": 1859, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "14674:4:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 1858, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "14674:4:4", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 1862, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "14674:22:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1863, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "14700:1:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "14674:27:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 1956, - "nodeType": "Block", - "src": "15244:584:4", - "statements": [ - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1919, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1913, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "15266:5:4", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 1914, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "number", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "15266:12:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1915, - "name": "proposal", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1815, - "src": "15280:8:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Proposal_$1146_storage_ptr", - "typeString": "struct Bridge.Proposal storage pointer" - } - }, - "id": 1916, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "_proposedBlock", - "nodeType": "MemberAccess", - "referencedDeclaration": 1145, - "src": "15280:23:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1912, - "name": "sub", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2455, - "src": "15262:3:4", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 1917, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "15262:42:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "id": 1918, - "name": "_expiry", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1122, - "src": "15307:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "15262:52:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 1954, - "nodeType": "Block", - "src": "15671:146:4", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "id": 1941, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1938, - "name": "dataHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1792, - "src": "15697:8:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1939, - "name": "proposal", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1815, - "src": "15709:8:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Proposal_$1146_storage_ptr", - "typeString": "struct Bridge.Proposal storage pointer" - } - }, - "id": 1940, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "_dataHash", - "nodeType": "MemberAccess", - "referencedDeclaration": 1135, - "src": "15709:18:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "15697:30:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "6461746168617368206d69736d61746368", - "id": 1942, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "15729:19:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_e3209b3b3221a11cdef33af435affcc74bff38eb4aaafc629c451edb5bb6cf58", - "typeString": "literal_string \"datahash mismatch\"" - }, - "value": "datahash mismatch" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_e3209b3b3221a11cdef33af435affcc74bff38eb4aaafc629c451edb5bb6cf58", - "typeString": "literal_string \"datahash mismatch\"" - } - ], - "id": 1937, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "15689:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 1943, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "15689:60:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1944, - "nodeType": "ExpressionStatement", - "src": "15689:60:4" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1950, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "15791:3:4", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1951, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "15791:10:4", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "expression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1945, - "name": "proposal", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1815, - "src": "15767:8:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Proposal_$1146_storage_ptr", - "typeString": "struct Bridge.Proposal storage pointer" - } - }, - "id": 1948, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "_yesVotes", - "nodeType": "MemberAccess", - "referencedDeclaration": 1138, - "src": "15767:18:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 1949, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "push", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "15767:23:4", - "typeDescriptions": { - "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$__$", - "typeString": "function (address)" - } - }, - "id": 1952, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "15767:35:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1953, - "nodeType": "ExpressionStatement", - "src": "15767:35:4" - } - ] - }, - "id": 1955, - "nodeType": "IfStatement", - "src": "15258:559:4", - "trueBody": { - "id": 1936, - "nodeType": "Block", - "src": "15316:349:4", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1925, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1920, - "name": "proposal", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1815, - "src": "15500:8:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Proposal_$1146_storage_ptr", - "typeString": "struct Bridge.Proposal storage pointer" - } - }, - "id": 1922, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "_status", - "nodeType": "MemberAccess", - "referencedDeclaration": 1143, - "src": "15500:16:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1923, - "name": "ProposalStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1131, - "src": "15519:14:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$1131_$", - "typeString": "type(enum Bridge.ProposalStatus)" - } - }, - "id": 1924, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Cancelled", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "15519:24:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - } - }, - "src": "15500:43:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - } - }, - "id": 1926, - "nodeType": "ExpressionStatement", - "src": "15500:43:4" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1928, - "name": "chainID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1786, - "src": "15580:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "id": 1929, - "name": "depositNonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1788, - "src": "15589:12:4", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1930, - "name": "ProposalStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1131, - "src": "15603:14:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$1131_$", - "typeString": "type(enum Bridge.ProposalStatus)" - } - }, - "id": 1931, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Cancelled", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "15603:24:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - } - }, - { - "argumentTypes": null, - "id": 1932, - "name": "resourceID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1790, - "src": "15629:10:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 1933, - "name": "dataHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1792, - "src": "15641:8:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 1927, - "name": "ProposalEvent", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1206, - "src": "15566:13:4", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_uint64_$_t_enum$_ProposalStatus_$1131_$_t_bytes32_$_t_bytes32_$returns$__$", - "typeString": "function (uint8,uint64,enum Bridge.ProposalStatus,bytes32,bytes32)" - } - }, - "id": 1934, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "15566:84:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1935, - "nodeType": "EmitStatement", - "src": "15561:89:4" - } - ] - } - } - ] - }, - "id": 1957, - "nodeType": "IfStatement", - "src": "14670:1158:4", - "trueBody": { - "id": 1911, - "nodeType": "Block", - "src": "14703:535:4", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1866, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": true, - "src": "14717:17:4", - "subExpression": { - "argumentTypes": null, - "id": 1865, - "name": "_totalProposals", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1118, - "src": "14719:15:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1867, - "nodeType": "ExpressionStatement", - "src": "14717:17:4" - }, - { - "expression": { - "argumentTypes": null, - "id": 1891, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1868, - "name": "_proposals", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1166, - "src": "14748:10:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint72_$_t_mapping$_t_bytes32_$_t_struct$_Proposal_$1146_storage_$_$", - "typeString": "mapping(uint72 => mapping(bytes32 => struct Bridge.Proposal storage ref))" - } - }, - "id": 1871, - "indexExpression": { - "argumentTypes": null, - "id": 1869, - "name": "nonceAndID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1800, - "src": "14759:10:4", - "typeDescriptions": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14748:22:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$1146_storage_$", - "typeString": "mapping(bytes32 => struct Bridge.Proposal storage ref)" - } - }, - "id": 1872, - "indexExpression": { - "argumentTypes": null, - "id": 1870, - "name": "dataHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1792, - "src": "14771:8:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "14748:32:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Proposal_$1146_storage", - "typeString": "struct Bridge.Proposal storage ref" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1874, - "name": "resourceID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1790, - "src": "14824:10:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 1875, - "name": "dataHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1792, - "src": "14864:8:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "31", - "id": 1879, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "14916:1:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - } - ], - "id": 1878, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "NewExpression", - "src": "14902:13:4", - "typeDescriptions": { - "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$", - "typeString": "function (uint256) pure returns (address[] memory)" - }, - "typeName": { - "baseType": { - "id": 1876, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "14906:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1877, - "length": null, - "nodeType": "ArrayTypeName", - "src": "14906:9:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - } - }, - "id": 1880, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "14902:16:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 1884, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "14961:1:4", - "subdenomination": null, - "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": 1883, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "NewExpression", - "src": "14947:13:4", - "typeDescriptions": { - "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$", - "typeString": "function (uint256) pure returns (address[] memory)" - }, - "typeName": { - "baseType": { - "id": 1881, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "14951:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1882, - "length": null, - "nodeType": "ArrayTypeName", - "src": "14951:9:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - } - }, - "id": 1885, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "14947:16:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1886, - "name": "ProposalStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1131, - "src": "14991:14:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$1131_$", - "typeString": "type(enum Bridge.ProposalStatus)" - } - }, - "id": 1887, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Active", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "14991:21:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1888, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "15047:5:4", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 1889, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "number", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "15047:12:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1873, - "name": "Proposal", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1146, - "src": "14783:8:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_Proposal_$1146_storage_ptr_$", - "typeString": "type(struct Bridge.Proposal storage pointer)" - } - }, - "id": 1890, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "structConstructorCall", - "lValueRequested": false, - "names": [ - "_resourceID", - "_dataHash", - "_yesVotes", - "_noVotes", - "_status", - "_proposedBlock" - ], - "nodeType": "FunctionCall", - "src": "14783:295:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_Proposal_$1146_memory_ptr", - "typeString": "struct Bridge.Proposal memory" - } - }, - "src": "14748:330:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Proposal_$1146_storage", - "typeString": "struct Bridge.Proposal storage ref" - } - }, - "id": 1892, - "nodeType": "ExpressionStatement", - "src": "14748:330:4" - }, - { - "expression": { - "argumentTypes": null, - "id": 1900, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1893, - "name": "proposal", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1815, - "src": "15093:8:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Proposal_$1146_storage_ptr", - "typeString": "struct Bridge.Proposal storage pointer" - } - }, - "id": 1896, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "_yesVotes", - "nodeType": "MemberAccess", - "referencedDeclaration": 1138, - "src": "15093:18:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 1897, - "indexExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1895, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "15112:1:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "15093:21:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1898, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "15117:3:4", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1899, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "15117:10:4", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "src": "15093:34:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1901, - "nodeType": "ExpressionStatement", - "src": "15093:34:4" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1903, - "name": "chainID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1786, - "src": "15160:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "id": 1904, - "name": "depositNonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1788, - "src": "15169:12:4", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1905, - "name": "ProposalStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1131, - "src": "15183:14:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$1131_$", - "typeString": "type(enum Bridge.ProposalStatus)" - } - }, - "id": 1906, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Active", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "15183:21:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - } - }, - { - "argumentTypes": null, - "id": 1907, - "name": "resourceID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1790, - "src": "15206:10:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 1908, - "name": "dataHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1792, - "src": "15218:8:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 1902, - "name": "ProposalEvent", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1206, - "src": "15146:13:4", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_uint64_$_t_enum$_ProposalStatus_$1131_$_t_bytes32_$_t_bytes32_$returns$__$", - "typeString": "function (uint8,uint64,enum Bridge.ProposalStatus,bytes32,bytes32)" - } - }, - "id": 1909, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "15146:81:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1910, - "nodeType": "EmitStatement", - "src": "15141:86:4" - } - ] - } - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - }, - "id": 1962, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1958, - "name": "proposal", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1815, - "src": "15841:8:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Proposal_$1146_storage_ptr", - "typeString": "struct Bridge.Proposal storage pointer" - } - }, - "id": 1959, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "_status", - "nodeType": "MemberAccess", - "referencedDeclaration": 1143, - "src": "15841:16:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1960, - "name": "ProposalStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1131, - "src": "15861:14:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$1131_$", - "typeString": "type(enum Bridge.ProposalStatus)" - } - }, - "id": 1961, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Cancelled", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "15861:24:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - } - }, - "src": "15841:44:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 2010, - "nodeType": "IfStatement", - "src": "15837:614:4", - "trueBody": { - "id": 2009, - "nodeType": "Block", - "src": "15887:564:4", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1972, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1963, - "name": "_hasVotedOnProposal", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1174, - "src": "15901:19:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint72_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$_$", - "typeString": "mapping(uint72 => mapping(bytes32 => mapping(address => bool)))" - } - }, - "id": 1968, - "indexExpression": { - "argumentTypes": null, - "id": 1964, - "name": "nonceAndID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1800, - "src": "15921:10:4", - "typeDescriptions": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "15901:31:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(bytes32 => mapping(address => bool))" - } - }, - "id": 1969, - "indexExpression": { - "argumentTypes": null, - "id": 1965, - "name": "dataHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1792, - "src": "15933:8:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "15901:41:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1970, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1966, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "15943:3:4", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1967, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "15943:10:4", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "15901:53:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1971, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "15957:4:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "15901:60:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1973, - "nodeType": "ExpressionStatement", - "src": "15901:60:4" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1975, - "name": "chainID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1786, - "src": "15993:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "id": 1976, - "name": "depositNonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1788, - "src": "16002:12:4", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1977, - "name": "proposal", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1815, - "src": "16016:8:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Proposal_$1146_storage_ptr", - "typeString": "struct Bridge.Proposal storage pointer" - } - }, - "id": 1978, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "_status", - "nodeType": "MemberAccess", - "referencedDeclaration": 1143, - "src": "16016:16:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - } - }, - { - "argumentTypes": null, - "id": 1979, - "name": "resourceID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1790, - "src": "16034:10:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 1974, - "name": "ProposalVote", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1216, - "src": "15980:12:4", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_uint64_$_t_enum$_ProposalStatus_$1131_$_t_bytes32_$returns$__$", - "typeString": "function (uint8,uint64,enum Bridge.ProposalStatus,bytes32)" - } - }, - "id": 1980, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "15980:65:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1981, - "nodeType": "EmitStatement", - "src": "15975:70:4" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 1990, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1984, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1982, - "name": "_relayerThreshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "16189:17:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1983, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "16210:1:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "16189:22:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1989, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1985, - "name": "proposal", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1815, - "src": "16215:8:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Proposal_$1146_storage_ptr", - "typeString": "struct Bridge.Proposal storage pointer" - } - }, - "id": 1986, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "_yesVotes", - "nodeType": "MemberAccess", - "referencedDeclaration": 1138, - "src": "16215:18:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 1987, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "16215:25:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "id": 1988, - "name": "_relayerThreshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "16244:17:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "16215:46:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "16189:72:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 2008, - "nodeType": "IfStatement", - "src": "16185:256:4", - "trueBody": { - "id": 2007, - "nodeType": "Block", - "src": "16263:178:4", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1996, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1991, - "name": "proposal", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1815, - "src": "16281:8:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Proposal_$1146_storage_ptr", - "typeString": "struct Bridge.Proposal storage pointer" - } - }, - "id": 1993, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "_status", - "nodeType": "MemberAccess", - "referencedDeclaration": 1143, - "src": "16281:16:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1994, - "name": "ProposalStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1131, - "src": "16300:14:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$1131_$", - "typeString": "type(enum Bridge.ProposalStatus)" - } - }, - "id": 1995, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Passed", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "16300:21:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - } - }, - "src": "16281:40:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - } - }, - "id": 1997, - "nodeType": "ExpressionStatement", - "src": "16281:40:4" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1999, - "name": "chainID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1786, - "src": "16359:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "id": 2000, - "name": "depositNonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1788, - "src": "16368:12:4", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 2001, - "name": "ProposalStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1131, - "src": "16382:14:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$1131_$", - "typeString": "type(enum Bridge.ProposalStatus)" - } - }, - "id": 2002, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Passed", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "16382:21:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - } - }, - { - "argumentTypes": null, - "id": 2003, - "name": "resourceID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1790, - "src": "16405:10:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 2004, - "name": "dataHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1792, - "src": "16417:8:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 1998, - "name": "ProposalEvent", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1206, - "src": "16345:13:4", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_uint64_$_t_enum$_ProposalStatus_$1131_$_t_bytes32_$_t_bytes32_$returns$__$", - "typeString": "function (uint8,uint64,enum Bridge.ProposalStatus,bytes32,bytes32)" - } - }, - "id": 2005, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "16345:81:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2006, - "nodeType": "EmitStatement", - "src": "16340:86:4" - } - ] - } - } - ] - } - } - ] + "name": "result", + "nodeType": "YulIdentifier", + "src": "8056:6:40" + } + ] + } + ] + }, + "name": "round_up_to_mul_of_32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "8029:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "result", + "nodeType": "YulTypedName", + "src": "8039:6:40", + "type": "" + } + ], + "src": "7998:102:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8196:283:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "8206:52:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8252:5:40" + } + ], + "functionName": { + "name": "array_length_t_bytes_memory_ptr", + "nodeType": "YulIdentifier", + "src": "8220:31:40" + }, + "nodeType": "YulFunctionCall", + "src": "8220:38:40" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "8210:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "8267:77:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "8332:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "8337:6:40" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "8274:57:40" + }, + "nodeType": "YulFunctionCall", + "src": "8274:70:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "8267:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8392:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8399:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8388:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "8388:16:40" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "8406:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "8411:6:40" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nodeType": "YulIdentifier", + "src": "8353:34:40" + }, + "nodeType": "YulFunctionCall", + "src": "8353:65:40" + }, + "nodeType": "YulExpressionStatement", + "src": "8353:65:40" + }, + { + "nodeType": "YulAssignment", + "src": "8427:46:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "8438:3:40" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "8465:6:40" + } + ], + "functionName": { + "name": "round_up_to_mul_of_32", + "nodeType": "YulIdentifier", + "src": "8443:21:40" + }, + "nodeType": "YulFunctionCall", + "src": "8443:29:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8434:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "8434:39:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "8427:3:40" + } + ] + } + ] + }, + "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "8177:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "8184:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "8192:3:40", + "type": "" + } + ], + "src": "8106:373:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8601:193:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8611:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8623:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8634:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8619:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "8619:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "8611:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8658:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8669:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8654:3:40" }, - "documentation": { - "id": 1784, - "nodeType": "StructuredDocumentation", - "src": "13431:653:4", - "text": "@notice When called, {msg.sender} will be marked as voting in favor of proposal.\n@notice Only callable by relayers when Bridge is not paused.\n@param chainID ID of chain deposit originated from.\n@param depositNonce ID of deposited generated by origin Bridge contract.\n@param dataHash Hash of data provided when deposit was made.\n@notice Proposal must not have already been passed or executed.\n@notice {msg.sender} must not have already voted on proposal.\n@notice Emits {ProposalEvent} event with status indicating the proposal status.\n@notice Emits {ProposalVote} event." - }, - "functionSelector": "1ff013f1", - "id": 2012, - "implemented": true, - "kind": "function", - "modifiers": [ + "nodeType": "YulFunctionCall", + "src": "8654:17:40" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "8677:4:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8683:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "8673:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "8673:20:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8647:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "8647:47:40" + }, + "nodeType": "YulExpressionStatement", + "src": "8647:47:40" + }, + { + "nodeType": "YulAssignment", + "src": "8703:84:40", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "8773:6:40" + }, + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "8782:4:40" + } + ], + "functionName": { + "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "8711:61:40" + }, + "nodeType": "YulFunctionCall", + "src": "8711:76:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "8703:4:40" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "8573:9:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "8585:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "8596:4:40", + "type": "" + } + ], + "src": "8485:309:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8845:32:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8855:16:40", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8866:5:40" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "8855:7:40" + } + ] + } + ] + }, + "name": "cleanup_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "8827:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "8837:7:40", + "type": "" + } + ], + "src": "8800:77:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8926:79:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "8983:16:40", + "statements": [ + { + "expression": { + "arguments": [ { - "arguments": null, - "id": 1795, - "modifierName": { - "argumentTypes": null, - "id": 1794, - "name": "onlyRelayers", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1242, - "src": "14194:12:4", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "14194:12:4" + "kind": "number", + "nodeType": "YulLiteral", + "src": "8992:1:40", + "type": "", + "value": "0" }, { - "arguments": null, - "id": 1797, - "modifierName": { - "argumentTypes": null, - "id": 1796, - "name": "whenNotPaused", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2375, - "src": "14207:13:4", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "14207:13:4" + "kind": "number", + "nodeType": "YulLiteral", + "src": "8995:1:40", + "type": "", + "value": "0" } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "8985:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "8985:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "8985:12:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8949:5:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8974:5:40" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "8956:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "8956:24:40" + } ], - "name": "voteProposal", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 1793, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1786, - "mutability": "mutable", - "name": "chainID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 2012, - "src": "14111:13:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 1785, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "14111:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1788, - "mutability": "mutable", - "name": "depositNonce", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 2012, - "src": "14126:19:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 1787, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "14126:6:4", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1790, - "mutability": "mutable", - "name": "resourceID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 2012, - "src": "14147:18:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1789, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "14147:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1792, - "mutability": "mutable", - "name": "dataHash", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 2012, - "src": "14167:16:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1791, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "14167:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "8946:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "8946:35:40" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "8939:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "8939:43:40" + }, + "nodeType": "YulIf", + "src": "8936:63:40" + } + ] + }, + "name": "validator_revert_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "8919:5:40", + "type": "" + } + ], + "src": "8883:122:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9063:87:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "9073:29:40", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "9095:6:40" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "9082:12:40" + }, + "nodeType": "YulFunctionCall", + "src": "9082:20:40" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "9073:5:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "9138:5:40" + } + ], + "functionName": { + "name": "validator_revert_t_uint256", + "nodeType": "YulIdentifier", + "src": "9111:26:40" + }, + "nodeType": "YulFunctionCall", + "src": "9111:33:40" + }, + "nodeType": "YulExpressionStatement", + "src": "9111:33:40" + } + ] + }, + "name": "abi_decode_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "9041:6:40", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "9049:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "9057:5:40", + "type": "" + } + ], + "src": "9011:139:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9222:263:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "9268:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "9270:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "9270:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "9270:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "9243:7:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9252:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "9239:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "9239:23:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9264:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "9235:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "9235:32:40" + }, + "nodeType": "YulIf", + "src": "9232:119:40" + }, + { + "nodeType": "YulBlock", + "src": "9361:117:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "9376:15:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9390:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "9380:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "9405:63:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9440:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "9451:6:40" + } ], - "src": "14110:74:4" + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9436:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "9436:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "9460:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "9415:20:40" + }, + "nodeType": "YulFunctionCall", + "src": "9415:53:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "9405:6:40" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "9192:9:40", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "9203:7:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "9215:6:40", + "type": "" + } + ], + "src": "9156:329:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9624:824:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "9671:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "9673:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "9673:79:40" }, - "returnParameters": { - "id": 1798, - "nodeType": "ParameterList", - "parameters": [], - "src": "14221:0:4" + "nodeType": "YulExpressionStatement", + "src": "9673:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "9645:7:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9654:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "9641:3:40" }, - "scope": 2244, - "src": "14089:2369:4", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" + "nodeType": "YulFunctionCall", + "src": "9641:23:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9666:3:40", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "9637:3:40" }, + "nodeType": "YulFunctionCall", + "src": "9637:33:40" + }, + "nodeType": "YulIf", + "src": "9634:120:40" + }, + { + "nodeType": "YulBlock", + "src": "9764:115:40", + "statements": [ { - "body": { - "id": 2086, - "nodeType": "Block", - "src": "17105:527:4", - "statements": [ - { - "assignments": [2025], - "declarations": [ - { - "constant": false, - "id": 2025, - "mutability": "mutable", - "name": "nonceAndID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 2086, - "src": "17115:17:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - }, - "typeName": { - "id": 2024, - "name": "uint72", - "nodeType": "ElementaryTypeName", - "src": "17115:6:4", - "typeDescriptions": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 2038, - "initialValue": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - }, - "id": 2037, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - }, - "id": 2031, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 2028, - "name": "depositNonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2017, - "src": "17143:12:4", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - ], - "id": 2027, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "17136:6:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint72_$", - "typeString": "type(uint72)" - }, - "typeName": { - "id": 2026, - "name": "uint72", - "nodeType": "ElementaryTypeName", - "src": "17136:6:4", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 2029, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "17136:20:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - } - }, - "nodeType": "BinaryOperation", - "operator": "<<", - "rightExpression": { - "argumentTypes": null, - "hexValue": "38", - "id": 2030, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "17160:1:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_8_by_1", - "typeString": "int_const 8" - }, - "value": "8" - }, - "src": "17136:25:4", - "typeDescriptions": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - } - } - ], - "id": 2032, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "17135:27:4", - "typeDescriptions": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - } - }, - "nodeType": "BinaryOperation", - "operator": "|", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 2035, - "name": "chainID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2015, - "src": "17172:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "id": 2034, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "17165:6:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint72_$", - "typeString": "type(uint72)" - }, - "typeName": { - "id": 2033, - "name": "uint72", - "nodeType": "ElementaryTypeName", - "src": "17165:6:4", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 2036, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "17165:15:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - } - }, - "src": "17135:45:4", - "typeDescriptions": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "17115:65:4" - }, - { - "assignments": [2040], - "declarations": [ - { - "constant": false, - "id": 2040, - "mutability": "mutable", - "name": "proposal", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 2086, - "src": "17190:25:4", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Proposal_$1146_storage_ptr", - "typeString": "struct Bridge.Proposal" - }, - "typeName": { - "contractScope": null, - "id": 2039, - "name": "Proposal", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1146, - "src": "17190:8:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Proposal_$1146_storage_ptr", - "typeString": "struct Bridge.Proposal" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 2046, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 2041, - "name": "_proposals", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1166, - "src": "17218:10:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint72_$_t_mapping$_t_bytes32_$_t_struct$_Proposal_$1146_storage_$_$", - "typeString": "mapping(uint72 => mapping(bytes32 => struct Bridge.Proposal storage ref))" - } - }, - "id": 2043, - "indexExpression": { - "argumentTypes": null, - "id": 2042, - "name": "nonceAndID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2025, - "src": "17229:10:4", - "typeDescriptions": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "17218:22:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$1146_storage_$", - "typeString": "mapping(bytes32 => struct Bridge.Proposal storage ref)" - } - }, - "id": 2045, - "indexExpression": { - "argumentTypes": null, - "id": 2044, - "name": "dataHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2019, - "src": "17241:8:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "17218:32:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Proposal_$1146_storage", - "typeString": "struct Bridge.Proposal storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "17190:60:4" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - }, - "id": 2052, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 2048, - "name": "proposal", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2040, - "src": "17269:8:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Proposal_$1146_storage_ptr", - "typeString": "struct Bridge.Proposal storage pointer" - } - }, - "id": 2049, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "_status", - "nodeType": "MemberAccess", - "referencedDeclaration": 1143, - "src": "17269:16:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 2050, - "name": "ProposalStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1131, - "src": "17289:14:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$1131_$", - "typeString": "type(enum Bridge.ProposalStatus)" - } - }, - "id": 2051, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Cancelled", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "17289:24:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - } - }, - "src": "17269:44:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "50726f706f73616c20616c72656164792063616e63656c6c6564", - "id": 2053, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "17315:28:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_3e17bfcd355060e4798c0d940327e9e82091039c8817e9bd1bb8653b1bc06f8f", - "typeString": "literal_string \"Proposal already cancelled\"" - }, - "value": "Proposal already cancelled" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_3e17bfcd355060e4798c0d940327e9e82091039c8817e9bd1bb8653b1bc06f8f", - "typeString": "literal_string \"Proposal already cancelled\"" - } - ], - "id": 2047, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "17261:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 2054, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "17261:83:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2055, - "nodeType": "ExpressionStatement", - "src": "17261:83:4" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 2064, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 2058, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "17366:5:4", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 2059, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "number", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "17366:12:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 2060, - "name": "proposal", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2040, - "src": "17380:8:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Proposal_$1146_storage_ptr", - "typeString": "struct Bridge.Proposal storage pointer" - } - }, - "id": 2061, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "_proposedBlock", - "nodeType": "MemberAccess", - "referencedDeclaration": 1145, - "src": "17380:23:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 2057, - "name": "sub", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2455, - "src": "17362:3:4", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 2062, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "17362:42:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "id": 2063, - "name": "_expiry", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1122, - "src": "17407:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "17362:52:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "50726f706f73616c206e6f7420617420657870697279207468726573686f6c64", - "id": 2065, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "17416:34:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_683f5cd388e83d1592bd1ca665f25f51ebccd4deed2b3fc92e3fe6b96cb47225", - "typeString": "literal_string \"Proposal not at expiry threshold\"" - }, - "value": "Proposal not at expiry threshold" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_683f5cd388e83d1592bd1ca665f25f51ebccd4deed2b3fc92e3fe6b96cb47225", - "typeString": "literal_string \"Proposal not at expiry threshold\"" - } - ], - "id": 2056, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "17354:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 2066, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "17354:97:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2067, - "nodeType": "ExpressionStatement", - "src": "17354:97:4" - }, - { - "expression": { - "argumentTypes": null, - "id": 2073, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 2068, - "name": "proposal", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2040, - "src": "17462:8:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Proposal_$1146_storage_ptr", - "typeString": "struct Bridge.Proposal storage pointer" - } - }, - "id": 2070, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "_status", - "nodeType": "MemberAccess", - "referencedDeclaration": 1143, - "src": "17462:16:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 2071, - "name": "ProposalStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1131, - "src": "17481:14:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$1131_$", - "typeString": "type(enum Bridge.ProposalStatus)" - } - }, - "id": 2072, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Cancelled", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "17481:24:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - } - }, - "src": "17462:43:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - } - }, - "id": 2074, - "nodeType": "ExpressionStatement", - "src": "17462:43:4" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 2076, - "name": "chainID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2015, - "src": "17534:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "id": 2077, - "name": "depositNonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2017, - "src": "17543:12:4", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 2078, - "name": "ProposalStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1131, - "src": "17557:14:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$1131_$", - "typeString": "type(enum Bridge.ProposalStatus)" - } - }, - "id": 2079, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Cancelled", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "17557:24:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 2080, - "name": "proposal", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2040, - "src": "17583:8:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Proposal_$1146_storage_ptr", - "typeString": "struct Bridge.Proposal storage pointer" - } - }, - "id": 2081, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "_resourceID", - "nodeType": "MemberAccess", - "referencedDeclaration": 1133, - "src": "17583:20:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 2082, - "name": "proposal", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2040, - "src": "17605:8:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Proposal_$1146_storage_ptr", - "typeString": "struct Bridge.Proposal storage pointer" - } - }, - "id": 2083, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "_dataHash", - "nodeType": "MemberAccess", - "referencedDeclaration": 1135, - "src": "17605:18:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 2075, - "name": "ProposalEvent", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1206, - "src": "17520:13:4", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_uint64_$_t_enum$_ProposalStatus_$1131_$_t_bytes32_$_t_bytes32_$returns$__$", - "typeString": "function (uint8,uint64,enum Bridge.ProposalStatus,bytes32,bytes32)" - } - }, - "id": 2084, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "17520:104:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2085, - "nodeType": "EmitStatement", - "src": "17515:109:4" - } - ] + "nodeType": "YulVariableDeclaration", + "src": "9779:15:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9793:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "9783:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "9808:61:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9841:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "9852:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9837:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "9837:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "9861:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_uint8", + "nodeType": "YulIdentifier", + "src": "9818:18:40" }, - "documentation": { - "id": 2013, - "nodeType": "StructuredDocumentation", - "src": "16464:532:4", - "text": "@notice Executes a deposit proposal that is considered passed using a specified handler contract.\n@notice Only callable by relayers when Bridge is not paused.\n@param chainID ID of chain deposit originated from.\n@param depositNonce ID of deposited generated by origin Bridge contract.\n@param dataHash Hash of data originally provided when deposit was made.\n@notice Proposal must be past expiry threshold.\n@notice Emits {ProposalEvent} event with status {Cancelled}." - }, - "functionSelector": "17f03ce5", - "id": 2087, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": null, - "id": 2022, - "modifierName": { - "argumentTypes": null, - "id": 2021, - "name": "onlyAdminOrRelayer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1235, - "src": "17086:18:4", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "17086:18:4" - } + "nodeType": "YulFunctionCall", + "src": "9818:51:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "9808:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "9889:117:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "9904:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9918:2:40", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "9908:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "9934:62:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9968:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "9979:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9964:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "9964:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "9988:7:40" + } ], - "name": "cancelProposal", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 2020, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2015, - "mutability": "mutable", - "name": "chainID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 2087, - "src": "17025:13:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 2014, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "17025:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 2017, - "mutability": "mutable", - "name": "depositNonce", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 2087, - "src": "17040:19:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 2016, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "17040:6:4", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 2019, - "mutability": "mutable", - "name": "dataHash", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 2087, - "src": "17061:16:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 2018, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "17061:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } + "functionName": { + "name": "abi_decode_t_uint64", + "nodeType": "YulIdentifier", + "src": "9944:19:40" + }, + "nodeType": "YulFunctionCall", + "src": "9944:52:40" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "9934:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "10016:297:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "10031:46:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10062:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10073:2:40", + "type": "", + "value": "64" + } ], - "src": "17024:54:4" + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10058:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "10058:18:40" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "10045:12:40" }, - "returnParameters": { - "id": 2023, - "nodeType": "ParameterList", - "parameters": [], - "src": "17105:0:4" + "nodeType": "YulFunctionCall", + "src": "10045:32:40" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "10035:6:40", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10124:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "10126:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "10126:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "10126:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "10096:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10104:18:40", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "10093:2:40" }, - "scope": 2244, - "src": "17001:631:4", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" + "nodeType": "YulFunctionCall", + "src": "10093:30:40" + }, + "nodeType": "YulIf", + "src": "10090:117:40" }, { - "body": { - "id": 2194, - "nodeType": "Block", - "src": "18429:806:4", - "statements": [ - { - "assignments": [2104], - "declarations": [ - { - "constant": false, - "id": 2104, - "mutability": "mutable", - "name": "handler", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 2194, - "src": "18439:15:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 2103, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "18439:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 2108, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 2105, - "name": "_resourceIDToHandlerAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1154, - "src": "18457:27:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", - "typeString": "mapping(bytes32 => address)" - } - }, - "id": 2107, - "indexExpression": { - "argumentTypes": null, - "id": 2106, - "name": "resourceID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2096, - "src": "18485:10:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "18457:39:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "18439:57:4" - }, - { - "assignments": [2110], - "declarations": [ - { - "constant": false, - "id": 2110, - "mutability": "mutable", - "name": "nonceAndID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 2194, - "src": "18506:17:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - }, - "typeName": { - "id": 2109, - "name": "uint72", - "nodeType": "ElementaryTypeName", - "src": "18506:6:4", - "typeDescriptions": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 2123, - "initialValue": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - }, - "id": 2122, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - }, - "id": 2116, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 2113, - "name": "depositNonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "18534:12:4", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - ], - "id": 2112, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "18527:6:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint72_$", - "typeString": "type(uint72)" - }, - "typeName": { - "id": 2111, - "name": "uint72", - "nodeType": "ElementaryTypeName", - "src": "18527:6:4", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 2114, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "18527:20:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - } - }, - "nodeType": "BinaryOperation", - "operator": "<<", - "rightExpression": { - "argumentTypes": null, - "hexValue": "38", - "id": 2115, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "18551:1:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_8_by_1", - "typeString": "int_const 8" - }, - "value": "8" - }, - "src": "18527:25:4", - "typeDescriptions": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - } - } - ], - "id": 2117, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "18526:27:4", - "typeDescriptions": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - } - }, - "nodeType": "BinaryOperation", - "operator": "|", - "rightExpression": { - "argumentTypes": null, + "nodeType": "YulAssignment", + "src": "10221:82:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10275:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "10286:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10271:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "10271:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "10295:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_bytes_calldata_ptr", + "nodeType": "YulIdentifier", + "src": "10239:31:40" + }, + "nodeType": "YulFunctionCall", + "src": "10239:64:40" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "10221:6:40" + }, + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "10229:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "10323:118:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "10338:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10352:2:40", + "type": "", + "value": "96" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "10342:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10368:63:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10403:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "10414:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10399:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "10399:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "10423:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_bytes32", + "nodeType": "YulIdentifier", + "src": "10378:20:40" + }, + "nodeType": "YulFunctionCall", + "src": "10378:53:40" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "10368:6:40" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint8t_uint64t_bytes_calldata_ptrt_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "9562:9:40", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "9573:7:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "9585:6:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "9593:6:40", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "9601:6:40", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "9609:6:40", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "9617:6:40", + "type": "" + } + ], + "src": "9491:957:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10577:478:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "10626:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulIdentifier", + "src": "10628:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "10628:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "10628:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "10605:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10613:4:40", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10601:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "10601:17:40" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "10620:3:40" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "10597:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "10597:27:40" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "10590:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "10590:35:40" + }, + "nodeType": "YulIf", + "src": "10587:122:40" + }, + { + "nodeType": "YulAssignment", + "src": "10718:30:40", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "10741:6:40" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "10728:12:40" + }, + "nodeType": "YulFunctionCall", + "src": "10728:20:40" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "10718:6:40" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10791:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490", + "nodeType": "YulIdentifier", + "src": "10793:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "10793:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "10793:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "10763:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10771:18:40", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "10760:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "10760:30:40" + }, + "nodeType": "YulIf", + "src": "10757:117:40" + }, + { + "nodeType": "YulAssignment", + "src": "10883:29:40", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "10899:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10907:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10895:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "10895:17:40" + }, + "variableNames": [ + { + "name": "arrayPos", + "nodeType": "YulIdentifier", + "src": "10883:8:40" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10966:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", + "nodeType": "YulIdentifier", + "src": "10968:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "10968:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "10968:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "arrayPos", + "nodeType": "YulIdentifier", + "src": "10931:8:40" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "10945:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10953:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "10941:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "10941:17:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10927:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "10927:32:40" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "10961:3:40" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "10924:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "10924:41:40" + }, + "nodeType": "YulIf", + "src": "10921:128:40" + } + ] + }, + "name": "abi_decode_t_array$_t_address_payable_$dyn_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "10544:6:40", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "10552:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "arrayPos", + "nodeType": "YulTypedName", + "src": "10560:8:40", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "10570:6:40", + "type": "" + } + ], + "src": "10479:576:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11168:478:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "11217:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulIdentifier", + "src": "11219:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "11219:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "11219:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "11196:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11204:4:40", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11192:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "11192:17:40" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "11211:3:40" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "11188:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "11188:27:40" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "11181:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "11181:35:40" + }, + "nodeType": "YulIf", + "src": "11178:122:40" + }, + { + "nodeType": "YulAssignment", + "src": "11309:30:40", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "11332:6:40" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "11319:12:40" + }, + "nodeType": "YulFunctionCall", + "src": "11319:20:40" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "11309:6:40" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11382:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490", + "nodeType": "YulIdentifier", + "src": "11384:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "11384:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "11384:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "11354:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11362:18:40", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "11351:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "11351:30:40" + }, + "nodeType": "YulIf", + "src": "11348:117:40" + }, + { + "nodeType": "YulAssignment", + "src": "11474:29:40", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "11490:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11498:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11486:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "11486:17:40" + }, + "variableNames": [ + { + "name": "arrayPos", + "nodeType": "YulIdentifier", + "src": "11474:8:40" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11557:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", + "nodeType": "YulIdentifier", + "src": "11559:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "11559:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "11559:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "arrayPos", + "nodeType": "YulIdentifier", + "src": "11522:8:40" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "11536:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11544:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "11532:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "11532:17:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11518:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "11518:32:40" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "11552:3:40" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "11515:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "11515:41:40" + }, + "nodeType": "YulIf", + "src": "11512:128:40" + } + ] + }, + "name": "abi_decode_t_array$_t_uint256_$dyn_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "11135:6:40", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "11143:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "arrayPos", + "nodeType": "YulTypedName", + "src": "11151:8:40", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "11161:6:40", + "type": "" + } + ], + "src": "11078:568:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11813:789:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "11859:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "11861:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "11861:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "11861:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "11834:7:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11843:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "11830:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "11830:23:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11855:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "11826:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "11826:32:40" + }, + "nodeType": "YulIf", + "src": "11823:119:40" + }, + { + "nodeType": "YulBlock", + "src": "11952:320:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "11967:45:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11998:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12009:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11994:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "11994:17:40" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "11981:12:40" + }, + "nodeType": "YulFunctionCall", + "src": "11981:31:40" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "11971:6:40", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12059:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "12061:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "12061:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "12061:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "12031:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12039:18:40", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "12028:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "12028:30:40" + }, + "nodeType": "YulIf", + "src": "12025:117:40" + }, + { + "nodeType": "YulAssignment", + "src": "12156:106:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12234:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "12245:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12230:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "12230:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "12254:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_array$_t_address_payable_$dyn_calldata_ptr", + "nodeType": "YulIdentifier", + "src": "12174:55:40" + }, + "nodeType": "YulFunctionCall", + "src": "12174:88:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "12156:6:40" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "12164:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "12282:313:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "12297:46:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12328:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12339:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12324:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "12324:18:40" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "12311:12:40" + }, + "nodeType": "YulFunctionCall", + "src": "12311:32:40" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "12301:6:40", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12390:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "12392:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "12392:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "12392:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "12362:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12370:18:40", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "12359:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "12359:30:40" + }, + "nodeType": "YulIf", + "src": "12356:117:40" + }, + { + "nodeType": "YulAssignment", + "src": "12487:98:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12557:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "12568:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12553:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "12553:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "12577:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_array$_t_uint256_$dyn_calldata_ptr", + "nodeType": "YulIdentifier", + "src": "12505:47:40" + }, + "nodeType": "YulFunctionCall", + "src": "12505:80:40" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "12487:6:40" + }, + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "12495:6:40" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_array$_t_address_payable_$dyn_calldata_ptrt_array$_t_uint256_$dyn_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "11759:9:40", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "11770:7:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "11782:6:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "11790:6:40", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "11798:6:40", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "11806:6:40", + "type": "" + } + ], + "src": "11652:950:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12672:261:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "12718:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "12720:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "12720:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "12720:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "12693:7:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12702:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "12689:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "12689:23:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12714:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "12685:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "12685:32:40" + }, + "nodeType": "YulIf", + "src": "12682:119:40" + }, + { + "nodeType": "YulBlock", + "src": "12811:115:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "12826:15:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12840:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "12830:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "12855:61:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12888:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "12899:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12884:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "12884:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "12908:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_uint8", + "nodeType": "YulIdentifier", + "src": "12865:18:40" + }, + "nodeType": "YulFunctionCall", + "src": "12865:51:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "12855:6:40" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "12642:9:40", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "12653:7:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "12665:6:40", + "type": "" + } + ], + "src": "12608:325:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13002:52:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "13019:3:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "13041:5:40" + } + ], + "functionName": { + "name": "cleanup_t_uint64", + "nodeType": "YulIdentifier", + "src": "13024:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "13024:23:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13012:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "13012:36:40" + }, + "nodeType": "YulExpressionStatement", + "src": "13012:36:40" + } + ] + }, + "name": "abi_encode_t_uint64_to_t_uint64_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "12990:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "12997:3:40", + "type": "" + } + ], + "src": "12939:115:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13156:122:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "13166:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13178:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13189:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13174:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "13174:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "13166:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "13244:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13257:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13268:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13253:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "13253:17:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint64_to_t_uint64_fromStack", + "nodeType": "YulIdentifier", + "src": "13202:41:40" + }, + "nodeType": "YulFunctionCall", + "src": "13202:69:40" + }, + "nodeType": "YulExpressionStatement", + "src": "13202:69:40" + } + ] + }, + "name": "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "13128:9:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "13140:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "13151:4:40", + "type": "" + } + ], + "src": "13060:218:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13328:59:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "13338:43:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "13353:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13360:20:40", + "type": "", + "value": "0xffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "13349:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "13349:32:40" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "13338:7:40" + } + ] + } + ] + }, + "name": "cleanup_t_uint72", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "13310:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "13320:7:40", + "type": "" + } + ], + "src": "13284:103:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13435:78:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "13491:16:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13500:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13503:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "13493:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "13493:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "13493:12:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "13458:5:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "13482:5:40" + } + ], + "functionName": { + "name": "cleanup_t_uint72", + "nodeType": "YulIdentifier", + "src": "13465:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "13465:23:40" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "13455:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "13455:34:40" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "13448:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "13448:42:40" + }, + "nodeType": "YulIf", + "src": "13445:62:40" + } + ] + }, + "name": "validator_revert_t_uint72", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "13428:5:40", + "type": "" + } + ], + "src": "13393:120:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13570:86:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "13580:29:40", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "13602:6:40" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "13589:12:40" + }, + "nodeType": "YulFunctionCall", + "src": "13589:20:40" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "13580:5:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "13644:5:40" + } + ], + "functionName": { + "name": "validator_revert_t_uint72", + "nodeType": "YulIdentifier", + "src": "13618:25:40" + }, + "nodeType": "YulFunctionCall", + "src": "13618:32:40" + }, + "nodeType": "YulExpressionStatement", + "src": "13618:32:40" + } + ] + }, + "name": "abi_decode_t_uint72", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "13548:6:40", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "13556:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "13564:5:40", + "type": "" + } + ], + "src": "13519:137:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13744:390:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "13790:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "13792:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "13792:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "13792:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "13765:7:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13774:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "13761:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "13761:23:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13786:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "13757:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "13757:32:40" + }, + "nodeType": "YulIf", + "src": "13754:119:40" + }, + { + "nodeType": "YulBlock", + "src": "13883:116:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "13898:15:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13912:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "13902:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "13927:62:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13961:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "13972:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13957:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "13957:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "13981:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_uint72", + "nodeType": "YulIdentifier", + "src": "13937:19:40" + }, + "nodeType": "YulFunctionCall", + "src": "13937:52:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "13927:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "14009:118:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "14024:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14038:2:40", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "14028:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "14054:63:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14089:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "14100:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14085:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "14085:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "14109:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_bytes32", + "nodeType": "YulIdentifier", + "src": "14064:20:40" + }, + "nodeType": "YulFunctionCall", + "src": "14064:53:40" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "14054:6:40" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint72t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "13706:9:40", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "13717:7:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "13729:6:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "13737:6:40", + "type": "" + } + ], + "src": "13662:472:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14168:152:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14185:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14188:77:40", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14178:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "14178:88:40" + }, + "nodeType": "YulExpressionStatement", + "src": "14178:88:40" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14282:1:40", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14285:4:40", + "type": "", + "value": "0x21" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14275:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "14275:15:40" + }, + "nodeType": "YulExpressionStatement", + "src": "14275:15:40" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14306:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14309:4:40", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "14299:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "14299:15:40" + }, + "nodeType": "YulExpressionStatement", + "src": "14299:15:40" + } + ] + }, + "name": "panic_error_0x21", + "nodeType": "YulFunctionDefinition", + "src": "14140:180:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14386:62:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "14420:22:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x21", + "nodeType": "YulIdentifier", + "src": "14422:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "14422:18:40" + }, + "nodeType": "YulExpressionStatement", + "src": "14422:18:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "14409:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14416:1:40", + "type": "", + "value": "5" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "14406:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "14406:12:40" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "14399:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "14399:20:40" + }, + "nodeType": "YulIf", + "src": "14396:46:40" + } + ] + }, + "name": "validator_assert_t_enum$_ProposalStatus_$31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "14379:5:40", + "type": "" + } + ], + "src": "14326:122:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14516:83:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "14526:16:40", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "14537:5:40" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "14526:7:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "14587:5:40" + } + ], + "functionName": { + "name": "validator_assert_t_enum$_ProposalStatus_$31", + "nodeType": "YulIdentifier", + "src": "14543:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "14543:50:40" + }, + "nodeType": "YulExpressionStatement", + "src": "14543:50:40" + } + ] + }, + "name": "cleanup_t_enum$_ProposalStatus_$31", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "14498:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "14508:7:40", + "type": "" + } + ], + "src": "14454:145:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14680:70:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "14690:54:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "14738:5:40" + } + ], + "functionName": { + "name": "cleanup_t_enum$_ProposalStatus_$31", + "nodeType": "YulIdentifier", + "src": "14703:34:40" + }, + "nodeType": "YulFunctionCall", + "src": "14703:41:40" + }, + "variableNames": [ + { + "name": "converted", + "nodeType": "YulIdentifier", + "src": "14690:9:40" + } + ] + } + ] + }, + "name": "convert_t_enum$_ProposalStatus_$31_to_t_uint8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "14660:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "converted", + "nodeType": "YulTypedName", + "src": "14670:9:40", + "type": "" + } + ], + "src": "14605:145:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14836:81:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14853:3:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "14904:5:40" + } + ], + "functionName": { + "name": "convert_t_enum$_ProposalStatus_$31_to_t_uint8", + "nodeType": "YulIdentifier", + "src": "14858:45:40" + }, + "nodeType": "YulFunctionCall", + "src": "14858:52:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14846:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "14846:65:40" + }, + "nodeType": "YulExpressionStatement", + "src": "14846:65:40" + } + ] + }, + "name": "abi_encode_t_enum$_ProposalStatus_$31_to_t_uint8_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "14824:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "14831:3:40", + "type": "" + } + ], + "src": "14756:161:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14988:53:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "15005:3:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "15028:5:40" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "15010:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "15010:24:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14998:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "14998:37:40" + }, + "nodeType": "YulExpressionStatement", + "src": "14998:37:40" + } + ] + }, + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "14976:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "14983:3:40", + "type": "" + } + ], + "src": "14923:118:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15244:386:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "15254:27:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15266:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15277:3:40", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15262:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "15262:19:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "15254:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "15335:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15348:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15359:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15344:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "15344:17:40" + } + ], + "functionName": { + "name": "abi_encode_t_bytes32_to_t_bytes32_fromStack", + "nodeType": "YulIdentifier", + "src": "15291:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "15291:71:40" + }, + "nodeType": "YulExpressionStatement", + "src": "15291:71:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "15416:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15429:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15440:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15425:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "15425:18:40" + } + ], + "functionName": { + "name": "abi_encode_t_bytes32_to_t_bytes32_fromStack", + "nodeType": "YulIdentifier", + "src": "15372:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "15372:72:40" + }, + "nodeType": "YulExpressionStatement", + "src": "15372:72:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "15513:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15526:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15537:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15522:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "15522:18:40" + } + ], + "functionName": { + "name": "abi_encode_t_enum$_ProposalStatus_$31_to_t_uint8_fromStack", + "nodeType": "YulIdentifier", + "src": "15454:58:40" + }, + "nodeType": "YulFunctionCall", + "src": "15454:87:40" + }, + "nodeType": "YulExpressionStatement", + "src": "15454:87:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "15595:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15608:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15619:2:40", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15604:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "15604:18:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "15551:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "15551:72:40" + }, + "nodeType": "YulExpressionStatement", + "src": "15551:72:40" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_enum$_ProposalStatus_$31_t_uint256__to_t_bytes32_t_bytes32_t_uint8_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "15192:9:40", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "15204:6:40", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "15212:6:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "15220:6:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "15228:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "15239:4:40", + "type": "" + } + ], + "src": "15047:583:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15753:648:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "15800:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "15802:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "15802:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "15802:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "15774:7:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15783:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "15770:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "15770:23:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15795:3:40", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "15766:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "15766:33:40" + }, + "nodeType": "YulIf", + "src": "15763:120:40" + }, + { + "nodeType": "YulBlock", + "src": "15893:117:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "15908:15:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15922:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "15912:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "15937:63:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15972:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "15983:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15968:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "15968:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "15992:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "15947:20:40" + }, + "nodeType": "YulFunctionCall", + "src": "15947:53:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "15937:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "16020:118:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "16035:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16049:2:40", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "16039:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "16065:63:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16100:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "16111:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16096:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "16096:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "16120:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "16075:20:40" + }, + "nodeType": "YulFunctionCall", + "src": "16075:53:40" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "16065:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "16148:118:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "16163:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16177:2:40", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "16167:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "16193:63:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16228:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "16239:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16224:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "16224:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "16248:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "16203:20:40" + }, + "nodeType": "YulFunctionCall", + "src": "16203:53:40" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "16193:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "16276:118:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "16291:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16305:2:40", + "type": "", + "value": "96" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "16295:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "16321:63:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16356:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "16367:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16352:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "16352:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "16376:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "16331:20:40" + }, + "nodeType": "YulFunctionCall", + "src": "16331:53:40" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "16321:6:40" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_addresst_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "15699:9:40", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "15710:7:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "15722:6:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "15730:6:40", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "15738:6:40", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "15746:6:40", + "type": "" + } + ], + "src": "15636:765:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16506:518:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "16552:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "16554:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "16554:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "16554:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "16527:7:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16536:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "16523:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "16523:23:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16548:2:40", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "16519:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "16519:32:40" + }, + "nodeType": "YulIf", + "src": "16516:119:40" + }, + { + "nodeType": "YulBlock", + "src": "16645:116:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "16660:15:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16674:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "16664:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "16689:62:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16723:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "16734:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16719:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "16719:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "16743:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_uint72", + "nodeType": "YulIdentifier", + "src": "16699:19:40" + }, + "nodeType": "YulFunctionCall", + "src": "16699:52:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "16689:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "16771:118:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "16786:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16800:2:40", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "16790:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "16816:63:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16851:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "16862:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16847:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "16847:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "16871:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_bytes32", + "nodeType": "YulIdentifier", + "src": "16826:20:40" + }, + "nodeType": "YulFunctionCall", + "src": "16826:53:40" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "16816:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "16899:118:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "16914:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16928:2:40", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "16918:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "16944:63:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16979:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "16990:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16975:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "16975:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "16999:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "16954:20:40" + }, + "nodeType": "YulFunctionCall", + "src": "16954:53:40" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "16944:6:40" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint72t_bytes32t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "16460:9:40", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "16471:7:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "16483:6:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "16491:6:40", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "16499:6:40", + "type": "" + } + ], + "src": "16407:617:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17095:53:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "17112:3:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "17135:5:40" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "17117:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "17117:24:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "17105:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "17105:37:40" + }, + "nodeType": "YulExpressionStatement", + "src": "17105:37:40" + } + ] + }, + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "17083:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "17090:3:40", + "type": "" + } + ], + "src": "17030:118:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17252:124:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "17262:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17274:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17285:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17270:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "17270:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "17262:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "17342:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17355:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17366:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17351:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "17351:17:40" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "17298:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "17298:71:40" + }, + "nodeType": "YulExpressionStatement", + "src": "17298:71:40" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "17224:9:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "17236:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "17247:4:40", + "type": "" + } + ], + "src": "17154:222:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17465:391:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "17511:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "17513:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "17513:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "17513:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "17486:7:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17495:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "17482:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "17482:23:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17507:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "17478:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "17478:32:40" + }, + "nodeType": "YulIf", + "src": "17475:119:40" + }, + { + "nodeType": "YulBlock", + "src": "17604:117:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "17619:15:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17633:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "17623:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "17648:63:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17683:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "17694:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17679:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "17679:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "17703:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "17658:20:40" + }, + "nodeType": "YulFunctionCall", + "src": "17658:53:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "17648:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "17731:118:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "17746:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17760:2:40", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "17750:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "17776:63:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17811:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "17822:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17807:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "17807:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "17831:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "17786:20:40" + }, + "nodeType": "YulFunctionCall", + "src": "17786:53:40" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "17776:6:40" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "17427:9:40", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "17438:7:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "17450:6:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "17458:6:40", + "type": "" + } + ], + "src": "17382:474:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17945:391:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "17991:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "17993:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "17993:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "17993:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "17966:7:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17975:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "17962:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "17962:23:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17987:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "17958:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "17958:32:40" + }, + "nodeType": "YulIf", + "src": "17955:119:40" + }, + { + "nodeType": "YulBlock", + "src": "18084:117:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "18099:15:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18113:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "18103:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "18128:63:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18163:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "18174:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18159:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "18159:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "18183:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_bytes32", + "nodeType": "YulIdentifier", + "src": "18138:20:40" + }, + "nodeType": "YulFunctionCall", + "src": "18138:53:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "18128:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "18211:118:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "18226:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18240:2:40", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "18230:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "18256:63:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18291:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "18302:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18287:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "18287:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "18311:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "18266:20:40" + }, + "nodeType": "YulFunctionCall", + "src": "18266:53:40" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "18256:6:40" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "17907:9:40", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "17918:7:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "17930:6:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "17938:6:40", + "type": "" + } + ], + "src": "17862:474:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18440:124:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "18450:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18462:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18473:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18458:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "18458:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "18450:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "18530:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18543:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18554:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18539:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "18539:17:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "18486:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "18486:71:40" + }, + "nodeType": "YulExpressionStatement", + "src": "18486:71:40" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "18412:9:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "18424:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "18435:4:40", + "type": "" + } + ], + "src": "18342:222:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18625:53:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "18642:3:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "18665:5:40" + } + ], + "functionName": { + "name": "cleanup_t_bytes32", + "nodeType": "YulIdentifier", + "src": "18647:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "18647:24:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18635:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "18635:37:40" + }, + "nodeType": "YulExpressionStatement", + "src": "18635:37:40" + } + ] + }, + "name": "abi_encode_t_bytes32_to_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "18613:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "18620:3:40", + "type": "" + } + ], + "src": "18570:108:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18758:40:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "18769:22:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "18785:5:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "18779:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "18779:12:40" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "18769:6:40" + } + ] + } + ] + }, + "name": "array_length_t_array$_t_address_$dyn_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "18741:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "18751:6:40", + "type": "" + } + ], + "src": "18684:114:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18905:73:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "18922:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "18927:6:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18915:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "18915:19:40" + }, + "nodeType": "YulExpressionStatement", + "src": "18915:19:40" + }, + { + "nodeType": "YulAssignment", + "src": "18943:29:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "18962:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18967:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18958:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "18958:14:40" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "18943:11:40" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_array$_t_address_$dyn_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "18877:3:40", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "18882:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "18893:11:40", + "type": "" + } + ], + "src": "18804:174:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19056:60:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "19066:11:40", + "value": { + "name": "ptr", + "nodeType": "YulIdentifier", + "src": "19074:3:40" + }, + "variableNames": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "19066:4:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "19087:22:40", + "value": { + "arguments": [ + { + "name": "ptr", + "nodeType": "YulIdentifier", + "src": "19099:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19104:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19095:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "19095:14:40" + }, + "variableNames": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "19087:4:40" + } + ] + } + ] + }, + "name": "array_dataslot_t_array$_t_address_$dyn_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "ptr", + "nodeType": "YulTypedName", + "src": "19043:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "data", + "nodeType": "YulTypedName", + "src": "19051:4:40", + "type": "" + } + ], + "src": "18984:132:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19177:53:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "19194:3:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "19217:5:40" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "19199:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "19199:24:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19187:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "19187:37:40" + }, + "nodeType": "YulExpressionStatement", + "src": "19187:37:40" + } + ] + }, + "name": "abi_encode_t_address_to_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "19165:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "19172:3:40", + "type": "" + } + ], + "src": "19122:108:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19316:99:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "19360:6:40" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "19368:3:40" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address", + "nodeType": "YulIdentifier", + "src": "19326:33:40" + }, + "nodeType": "YulFunctionCall", + "src": "19326:46:40" + }, + "nodeType": "YulExpressionStatement", + "src": "19326:46:40" + }, + { + "nodeType": "YulAssignment", + "src": "19381:28:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "19399:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19404:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19395:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "19395:14:40" + }, + "variableNames": [ + { + "name": "updatedPos", + "nodeType": "YulIdentifier", + "src": "19381:10:40" + } + ] + } + ] + }, + "name": "abi_encodeUpdatedPos_t_address_to_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "19289:6:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "19297:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updatedPos", + "nodeType": "YulTypedName", + "src": "19305:10:40", + "type": "" + } + ], + "src": "19236:179:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19496:38:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "19506:22:40", + "value": { + "arguments": [ + { + "name": "ptr", + "nodeType": "YulIdentifier", + "src": "19518:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19523:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19514:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "19514:14:40" + }, + "variableNames": [ + { + "name": "next", + "nodeType": "YulIdentifier", + "src": "19506:4:40" + } + ] + } + ] + }, + "name": "array_nextElement_t_array$_t_address_$dyn_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "ptr", + "nodeType": "YulTypedName", + "src": "19483:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "next", + "nodeType": "YulTypedName", + "src": "19491:4:40", + "type": "" + } + ], + "src": "19421:113:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19684:598:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "19694:68:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "19756:5:40" + } + ], + "functionName": { + "name": "array_length_t_array$_t_address_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "19708:47:40" + }, + "nodeType": "YulFunctionCall", + "src": "19708:54:40" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "19698:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "19771:83:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "19842:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "19847:6:40" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_array$_t_address_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "19778:63:40" + }, + "nodeType": "YulFunctionCall", + "src": "19778:76:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "19771:3:40" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "19863:71:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "19928:5:40" + } + ], + "functionName": { + "name": "array_dataslot_t_array$_t_address_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "19878:49:40" + }, + "nodeType": "YulFunctionCall", + "src": "19878:56:40" + }, + "variables": [ + { + "name": "baseRef", + "nodeType": "YulTypedName", + "src": "19867:7:40", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "19943:21:40", + "value": { + "name": "baseRef", + "nodeType": "YulIdentifier", + "src": "19957:7:40" + }, + "variables": [ + { + "name": "srcPtr", + "nodeType": "YulTypedName", + "src": "19947:6:40", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20033:224:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "20047:34:40", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "20074:6:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "20068:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "20068:13:40" + }, + "variables": [ + { + "name": "elementValue0", + "nodeType": "YulTypedName", + "src": "20051:13:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "20094:70:40", + "value": { + "arguments": [ + { + "name": "elementValue0", + "nodeType": "YulIdentifier", + "src": "20145:13:40" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "20160:3:40" + } + ], + "functionName": { + "name": "abi_encodeUpdatedPos_t_address_to_t_address", + "nodeType": "YulIdentifier", + "src": "20101:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "20101:63:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "20094:3:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "20177:70:40", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "20240:6:40" + } + ], + "functionName": { + "name": "array_nextElement_t_array$_t_address_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "20187:52:40" + }, + "nodeType": "YulFunctionCall", + "src": "20187:60:40" + }, + "variableNames": [ + { + "name": "srcPtr", + "nodeType": "YulIdentifier", + "src": "20177:6:40" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "19995:1:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "19998:6:40" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "19992:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "19992:13:40" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "20006:18:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "20008:14:40", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "20017:1:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20020:1:40", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20013:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "20013:9:40" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "20008:1:40" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "19977:14:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "19979:10:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19988:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "19983:1:40", + "type": "" + } + ] + } + ] + }, + "src": "19973:284:40" + }, + { + "nodeType": "YulAssignment", + "src": "20266:10:40", + "value": { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "20273:3:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "20266:3:40" + } + ] + } + ] + }, + "name": "abi_encode_t_array$_t_address_$dyn_memory_ptr_to_t_array$_t_address_$dyn_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "19663:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "19670:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "19679:3:40", + "type": "" + } + ], + "src": "19570:712:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20358:81:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "20375:3:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "20426:5:40" + } + ], + "functionName": { + "name": "convert_t_enum$_ProposalStatus_$31_to_t_uint8", + "nodeType": "YulIdentifier", + "src": "20380:45:40" + }, + "nodeType": "YulFunctionCall", + "src": "20380:52:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20368:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "20368:65:40" + }, + "nodeType": "YulExpressionStatement", + "src": "20368:65:40" + } + ] + }, + "name": "abi_encode_t_enum$_ProposalStatus_$31_to_t_uint8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "20346:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "20353:3:40", + "type": "" + } + ], + "src": "20288:151:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20500:53:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "20517:3:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "20540:5:40" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "20522:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "20522:24:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20510:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "20510:37:40" + }, + "nodeType": "YulExpressionStatement", + "src": "20510:37:40" + } + ] + }, + "name": "abi_encode_t_uint256_to_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "20488:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "20495:3:40", + "type": "" + } + ], + "src": "20445:108:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20737:1358:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "20747:26:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "20763:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20768:4:40", + "type": "", + "value": "0xc0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20759:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "20759:14:40" + }, + "variables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "20751:4:40", + "type": "" + } + ] + }, + { + "nodeType": "YulBlock", + "src": "20783:171:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "20825:43:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "20855:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20862:4:40", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20851:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "20851:16:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "20845:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "20845:23:40" + }, + "variables": [ + { + "name": "memberValue0", + "nodeType": "YulTypedName", + "src": "20829:12:40", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "memberValue0", + "nodeType": "YulIdentifier", + "src": "20915:12:40" + }, + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "20933:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20938:4:40", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20929:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "20929:14:40" + } + ], + "functionName": { + "name": "abi_encode_t_bytes32_to_t_bytes32", + "nodeType": "YulIdentifier", + "src": "20881:33:40" + }, + "nodeType": "YulFunctionCall", + "src": "20881:63:40" + }, + "nodeType": "YulExpressionStatement", + "src": "20881:63:40" + } + ] + }, + { + "nodeType": "YulBlock", + "src": "20964:169:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "21004:43:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "21034:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21041:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21030:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "21030:16:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "21024:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "21024:23:40" + }, + "variables": [ + { + "name": "memberValue0", + "nodeType": "YulTypedName", + "src": "21008:12:40", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "memberValue0", + "nodeType": "YulIdentifier", + "src": "21094:12:40" + }, + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "21112:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21117:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21108:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "21108:14:40" + } + ], + "functionName": { + "name": "abi_encode_t_bytes32_to_t_bytes32", + "nodeType": "YulIdentifier", + "src": "21060:33:40" + }, + "nodeType": "YulFunctionCall", + "src": "21060:63:40" + }, + "nodeType": "YulExpressionStatement", + "src": "21060:63:40" + } + ] + }, + { + "nodeType": "YulBlock", + "src": "21143:270:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "21183:43:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "21213:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21220:4:40", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21209:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "21209:16:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "21203:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "21203:23:40" + }, + "variables": [ + { + "name": "memberValue0", + "nodeType": "YulTypedName", + "src": "21187:12:40", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "21251:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21256:4:40", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21247:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "21247:14:40" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "21267:4:40" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "21273:3:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "21263:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "21263:14:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21240:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "21240:38:40" + }, + "nodeType": "YulExpressionStatement", + "src": "21240:38:40" + }, + { + "nodeType": "YulAssignment", + "src": "21291:111:40", + "value": { + "arguments": [ + { + "name": "memberValue0", + "nodeType": "YulIdentifier", + "src": "21383:12:40" + }, + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "21397:4:40" + } + ], + "functionName": { + "name": "abi_encode_t_array$_t_address_$dyn_memory_ptr_to_t_array$_t_address_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "21299:83:40" + }, + "nodeType": "YulFunctionCall", + "src": "21299:103:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "21291:4:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "21423:269:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "21462:43:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "21492:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21499:4:40", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21488:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "21488:16:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "21482:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "21482:23:40" + }, + "variables": [ + { + "name": "memberValue0", + "nodeType": "YulTypedName", + "src": "21466:12:40", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "21530:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21535:4:40", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21526:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "21526:14:40" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "21546:4:40" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "21552:3:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "21542:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "21542:14:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21519:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "21519:38:40" + }, + "nodeType": "YulExpressionStatement", + "src": "21519:38:40" + }, + { + "nodeType": "YulAssignment", + "src": "21570:111:40", + "value": { + "arguments": [ + { + "name": "memberValue0", + "nodeType": "YulIdentifier", + "src": "21662:12:40" + }, + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "21676:4:40" + } + ], + "functionName": { + "name": "abi_encode_t_array$_t_address_$dyn_memory_ptr_to_t_array$_t_address_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "21578:83:40" + }, + "nodeType": "YulFunctionCall", + "src": "21578:103:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "21570:4:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "21702:182:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "21740:43:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "21770:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21777:4:40", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21766:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "21766:16:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "21760:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "21760:23:40" + }, + "variables": [ + { + "name": "memberValue0", + "nodeType": "YulTypedName", + "src": "21744:12:40", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "memberValue0", + "nodeType": "YulIdentifier", + "src": "21845:12:40" + }, + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "21863:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21868:4:40", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21859:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "21859:14:40" + } + ], + "functionName": { + "name": "abi_encode_t_enum$_ProposalStatus_$31_to_t_uint8", + "nodeType": "YulIdentifier", + "src": "21796:48:40" + }, + "nodeType": "YulFunctionCall", + "src": "21796:78:40" + }, + "nodeType": "YulExpressionStatement", + "src": "21796:78:40" + } + ] + }, + { + "nodeType": "YulBlock", + "src": "21894:174:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "21939:43:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "21969:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21976:4:40", + "type": "", + "value": "0xa0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21965:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "21965:16:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "21959:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "21959:23:40" + }, + "variables": [ + { + "name": "memberValue0", + "nodeType": "YulTypedName", + "src": "21943:12:40", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "memberValue0", + "nodeType": "YulIdentifier", + "src": "22029:12:40" + }, + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "22047:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22052:4:40", + "type": "", + "value": "0xa0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22043:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "22043:14:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256", + "nodeType": "YulIdentifier", + "src": "21995:33:40" + }, + "nodeType": "YulFunctionCall", + "src": "21995:63:40" + }, + "nodeType": "YulExpressionStatement", + "src": "21995:63:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "22078:11:40", + "value": { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "22085:4:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "22078:3:40" + } + ] + } + ] + }, + "name": "abi_encode_t_struct$_Proposal_$47_memory_ptr_to_t_struct$_Proposal_$47_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "20716:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "20723:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "20732:3:40", + "type": "" + } + ], + "src": "20615:1480:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "22247:223:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "22257:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22269:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22280:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22265:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "22265:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "22257:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22304:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22315:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22300:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "22300:17:40" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "22323:4:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22329:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "22319:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "22319:20:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "22293:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "22293:47:40" + }, + "nodeType": "YulExpressionStatement", + "src": "22293:47:40" + }, + { + "nodeType": "YulAssignment", + "src": "22349:114:40", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "22449:6:40" + }, + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "22458:4:40" + } + ], + "functionName": { + "name": "abi_encode_t_struct$_Proposal_$47_memory_ptr_to_t_struct$_Proposal_$47_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "22357:91:40" + }, + "nodeType": "YulFunctionCall", + "src": "22357:106:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "22349:4:40" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_struct$_Proposal_$47_memory_ptr__to_t_struct$_Proposal_$47_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "22219:9:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "22231:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "22242:4:40", + "type": "" + } + ], + "src": "22101:369:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "22537:51:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "22554:3:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "22575:5:40" + } + ], + "functionName": { + "name": "cleanup_t_uint8", + "nodeType": "YulIdentifier", + "src": "22559:15:40" + }, + "nodeType": "YulFunctionCall", + "src": "22559:22:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "22547:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "22547:35:40" + }, + "nodeType": "YulExpressionStatement", + "src": "22547:35:40" + } + ] + }, + "name": "abi_encode_t_uint8_to_t_uint8_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "22525:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "22532:3:40", + "type": "" + } + ], + "src": "22476:112:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "22688:120:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "22698:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22710:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22721:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22706:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "22706:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "22698:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "22774:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22787:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22798:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22783:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "22783:17:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint8_to_t_uint8_fromStack", + "nodeType": "YulIdentifier", + "src": "22734:39:40" + }, + "nodeType": "YulFunctionCall", + "src": "22734:67:40" + }, + "nodeType": "YulExpressionStatement", + "src": "22734:67:40" + } + ] + }, + "name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "22660:9:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "22672:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "22683:4:40", + "type": "" + } + ], + "src": "22594:214:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "22947:824:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "22994:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "22996:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "22996:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "22996:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "22968:7:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22977:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "22964:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "22964:23:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22989:3:40", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "22960:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "22960:33:40" + }, + "nodeType": "YulIf", + "src": "22957:120:40" + }, + { + "nodeType": "YulBlock", + "src": "23087:115:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "23102:15:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23116:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "23106:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "23131:61:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23164:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "23175:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23160:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "23160:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "23184:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_uint8", + "nodeType": "YulIdentifier", + "src": "23141:18:40" + }, + "nodeType": "YulFunctionCall", + "src": "23141:51:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "23131:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "23212:117:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "23227:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23241:2:40", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "23231:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "23257:62:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23291:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "23302:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23287:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "23287:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "23311:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_uint64", + "nodeType": "YulIdentifier", + "src": "23267:19:40" + }, + "nodeType": "YulFunctionCall", + "src": "23267:52:40" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "23257:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "23339:118:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "23354:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23368:2:40", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "23358:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "23384:63:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23419:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "23430:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23415:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "23415:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "23439:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_bytes32", + "nodeType": "YulIdentifier", + "src": "23394:20:40" + }, + "nodeType": "YulFunctionCall", + "src": "23394:53:40" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "23384:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "23467:297:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "23482:46:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23513:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23524:2:40", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23509:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "23509:18:40" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "23496:12:40" + }, + "nodeType": "YulFunctionCall", + "src": "23496:32:40" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "23486:6:40", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "23575:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "23577:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "23577:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "23577:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "23547:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23555:18:40", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "23544:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "23544:30:40" + }, + "nodeType": "YulIf", + "src": "23541:117:40" + }, + { + "nodeType": "YulAssignment", + "src": "23672:82:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23726:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "23737:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23722:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "23722:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "23746:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_bytes_calldata_ptr", + "nodeType": "YulIdentifier", + "src": "23690:31:40" + }, + "nodeType": "YulFunctionCall", + "src": "23690:64:40" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "23672:6:40" + }, + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "23680:6:40" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint8t_uint64t_bytes32t_bytes_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "22885:9:40", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "22896:7:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "22908:6:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "22916:6:40", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "22924:6:40", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "22932:6:40", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "22940:6:40", + "type": "" + } + ], + "src": "22814:957:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "23877:519:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "23923:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "23925:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "23925:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "23925:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "23898:7:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23907:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "23894:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "23894:23:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23919:2:40", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "23890:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "23890:32:40" + }, + "nodeType": "YulIf", + "src": "23887:119:40" + }, + { + "nodeType": "YulBlock", + "src": "24016:117:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "24031:15:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24045:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "24035:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "24060:63:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24095:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "24106:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24091:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "24091:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "24115:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "24070:20:40" + }, + "nodeType": "YulFunctionCall", + "src": "24070:53:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "24060:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "24143:118:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "24158:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24172:2:40", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "24162:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "24188:63:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24223:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "24234:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24219:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "24219:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "24243:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_bytes32", + "nodeType": "YulIdentifier", + "src": "24198:20:40" + }, + "nodeType": "YulFunctionCall", + "src": "24198:53:40" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "24188:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "24271:118:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "24286:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24300:2:40", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "24290:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "24316:63:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24351:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "24362:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24347:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "24347:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "24371:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "24326:20:40" + }, + "nodeType": "YulFunctionCall", + "src": "24326:53:40" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "24316:6:40" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_bytes32t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "23831:9:40", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "23842:7:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "23854:6:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "23862:6:40", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "23870:6:40", + "type": "" + } + ], + "src": "23777:619:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "24534:775:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "24581:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "24583:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "24583:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "24583:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "24555:7:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24564:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "24551:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "24551:23:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24576:3:40", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "24547:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "24547:33:40" + }, + "nodeType": "YulIf", + "src": "24544:120:40" + }, + { + "nodeType": "YulBlock", + "src": "24674:117:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "24689:15:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24703:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "24693:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "24718:63:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24753:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "24764:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24749:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "24749:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "24773:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "24728:20:40" + }, + "nodeType": "YulFunctionCall", + "src": "24728:53:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "24718:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "24801:118:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "24816:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24830:2:40", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "24820:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "24846:63:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24881:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "24892:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24877:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "24877:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "24901:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_bytes32", + "nodeType": "YulIdentifier", + "src": "24856:20:40" + }, + "nodeType": "YulFunctionCall", + "src": "24856:53:40" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "24846:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "24929:118:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "24944:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24958:2:40", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "24948:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "24974:63:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25009:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "25020:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25005:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "25005:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "25029:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "24984:20:40" + }, + "nodeType": "YulFunctionCall", + "src": "24984:53:40" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "24974:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "25057:117:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "25072:16:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25086:2:40", + "type": "", + "value": "96" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "25076:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "25102:62:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25136:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "25147:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25132:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "25132:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "25156:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_bytes4", + "nodeType": "YulIdentifier", + "src": "25112:19:40" + }, + "nodeType": "YulFunctionCall", + "src": "25112:52:40" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "25102:6:40" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "25184:118:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "25199:17:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25213:3:40", + "type": "", + "value": "128" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "25203:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "25230:62:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25264:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "25275:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25260:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "25260:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "25284:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_bytes4", + "nodeType": "YulIdentifier", + "src": "25240:19:40" + }, + "nodeType": "YulFunctionCall", + "src": "25240:52:40" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "25230:6:40" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_bytes32t_addresst_bytes4t_bytes4", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "24472:9:40", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "24483:7:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "24495:6:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "24503:6:40", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "24511:6:40", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "24519:6:40", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "24527:6:40", + "type": "" + } + ], + "src": "24402:907:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "25411:73:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "25428:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "25433:6:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25421:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "25421:19:40" + }, + "nodeType": "YulExpressionStatement", + "src": "25421:19:40" + }, + { + "nodeType": "YulAssignment", + "src": "25449:29:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "25468:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25473:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25464:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "25464:14:40" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "25449:11:40" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "25383:3:40", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "25388:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "25399:11:40", + "type": "" + } + ], + "src": "25315:169:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "25596:66:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "25618:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25626:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25614:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "25614:14:40" + }, + { + "hexValue": "496e636f72726563742066656520737570706c696564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "25630:24:40", + "type": "", + "value": "Incorrect fee supplied" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25607:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "25607:48:40" + }, + "nodeType": "YulExpressionStatement", + "src": "25607:48:40" + } + ] + }, + "name": "store_literal_in_memory_2a2431514317abe5c8b163ccf132d16516b7e676afbb7d1bf5781dba4082d9d5", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "25588:6:40", + "type": "" + } + ], + "src": "25490:172:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "25814:220:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "25824:74:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "25890:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25895:2:40", + "type": "", + "value": "22" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "25831:58:40" + }, + "nodeType": "YulFunctionCall", + "src": "25831:67:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "25824:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "25996:3:40" + } + ], + "functionName": { + "name": "store_literal_in_memory_2a2431514317abe5c8b163ccf132d16516b7e676afbb7d1bf5781dba4082d9d5", + "nodeType": "YulIdentifier", + "src": "25907:88:40" + }, + "nodeType": "YulFunctionCall", + "src": "25907:93:40" + }, + "nodeType": "YulExpressionStatement", + "src": "25907:93:40" + }, + { + "nodeType": "YulAssignment", + "src": "26009:19:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "26020:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26025:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26016:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "26016:12:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "26009:3:40" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_2a2431514317abe5c8b163ccf132d16516b7e676afbb7d1bf5781dba4082d9d5_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "25802:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "25810:3:40", + "type": "" + } + ], + "src": "25668:366:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "26211:248:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "26221:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26233:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26244:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26229:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "26229:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "26221:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26268:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26279:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26264:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "26264:17:40" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "26287:4:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26293:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "26283:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "26283:20:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26257:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "26257:47:40" + }, + "nodeType": "YulExpressionStatement", + "src": "26257:47:40" + }, + { + "nodeType": "YulAssignment", + "src": "26313:139:40", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "26447:4:40" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_2a2431514317abe5c8b163ccf132d16516b7e676afbb7d1bf5781dba4082d9d5_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "26321:124:40" + }, + "nodeType": "YulFunctionCall", + "src": "26321:131:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "26313:4:40" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_2a2431514317abe5c8b163ccf132d16516b7e676afbb7d1bf5781dba4082d9d5__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "26191:9:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "26206:4:40", + "type": "" + } + ], + "src": "26040:419:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "26571:76:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "26593:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26601:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26589:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "26589:14:40" + }, + { + "hexValue": "7265736f757263654944206e6f74206d617070656420746f2068616e646c6572", + "kind": "string", + "nodeType": "YulLiteral", + "src": "26605:34:40", + "type": "", + "value": "resourceID not mapped to handler" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26582:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "26582:58:40" + }, + "nodeType": "YulExpressionStatement", + "src": "26582:58:40" + } + ] + }, + "name": "store_literal_in_memory_542d0c0b50539d1853c947fb8449b05e8626e9928b1fbf8fb55da8a4976aae52", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "26563:6:40", + "type": "" + } + ], + "src": "26465:182:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "26799:220:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "26809:74:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "26875:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26880:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "26816:58:40" + }, + "nodeType": "YulFunctionCall", + "src": "26816:67:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "26809:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "26981:3:40" + } + ], + "functionName": { + "name": "store_literal_in_memory_542d0c0b50539d1853c947fb8449b05e8626e9928b1fbf8fb55da8a4976aae52", + "nodeType": "YulIdentifier", + "src": "26892:88:40" + }, + "nodeType": "YulFunctionCall", + "src": "26892:93:40" + }, + "nodeType": "YulExpressionStatement", + "src": "26892:93:40" + }, + { + "nodeType": "YulAssignment", + "src": "26994:19:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "27005:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27010:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27001:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "27001:12:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "26994:3:40" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_542d0c0b50539d1853c947fb8449b05e8626e9928b1fbf8fb55da8a4976aae52_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "26787:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "26795:3:40", + "type": "" + } + ], + "src": "26653:366:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "27196:248:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "27206:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27218:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27229:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27214:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "27214:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "27206:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27253:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27264:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27249:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "27249:17:40" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "27272:4:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27278:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "27268:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "27268:20:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27242:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "27242:47:40" + }, + "nodeType": "YulExpressionStatement", + "src": "27242:47:40" + }, + { + "nodeType": "YulAssignment", + "src": "27298:139:40", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "27432:4:40" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_542d0c0b50539d1853c947fb8449b05e8626e9928b1fbf8fb55da8a4976aae52_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "27306:124:40" + }, + "nodeType": "YulFunctionCall", + "src": "27306:131:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "27298:4:40" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_542d0c0b50539d1853c947fb8449b05e8626e9928b1fbf8fb55da8a4976aae52__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "27176:9:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "27191:4:40", + "type": "" + } + ], + "src": "27025:419:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "27478:152:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27495:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27498:77:40", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27488:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "27488:88:40" + }, + "nodeType": "YulExpressionStatement", + "src": "27488:88:40" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27592:1:40", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27595:4:40", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27585:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "27585:15:40" + }, + "nodeType": "YulExpressionStatement", + "src": "27585:15:40" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27616:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27619:4:40", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "27609:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "27609:15:40" + }, + "nodeType": "YulExpressionStatement", + "src": "27609:15:40" + } + ] + }, + "name": "panic_error_0x11", + "nodeType": "YulFunctionDefinition", + "src": "27450:180:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "27678:141:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "27688:32:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "27714:5:40" + } + ], + "functionName": { + "name": "cleanup_t_uint64", + "nodeType": "YulIdentifier", + "src": "27697:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "27697:23:40" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "27688:5:40" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "27762:22:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "27764:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "27764:18:40" + }, + "nodeType": "YulExpressionStatement", + "src": "27764:18:40" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "27735:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27742:18:40", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "27732:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "27732:29:40" + }, + "nodeType": "YulIf", + "src": "27729:55:40" + }, + { + "nodeType": "YulAssignment", + "src": "27793:20:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "27804:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27811:1:40", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27800:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "27800:13:40" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "27793:3:40" + } + ] + } + ] + }, + "name": "increment_t_uint64", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "27664:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nodeType": "YulTypedName", + "src": "27674:3:40", + "type": "" + } + ], + "src": "27636:183:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "27890:31:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "27901:13:40", + "value": { + "name": "len", + "nodeType": "YulIdentifier", + "src": "27911:3:40" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "27901:6:40" + } + ] + } + ] + }, + "name": "array_length_t_bytes_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "27868:5:40", + "type": "" + }, + { + "name": "len", + "nodeType": "YulTypedName", + "src": "27875:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "27883:6:40", + "type": "" + } + ], + "src": "27825:96:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "27955:152:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27972:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27975:77:40", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27965:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "27965:88:40" + }, + "nodeType": "YulExpressionStatement", + "src": "27965:88:40" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28069:1:40", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28072:4:40", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28062:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "28062:15:40" + }, + "nodeType": "YulExpressionStatement", + "src": "28062:15:40" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28093:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28096:4:40", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "28086:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "28086:15:40" + }, + "nodeType": "YulExpressionStatement", + "src": "28086:15:40" + } + ] + }, + "name": "panic_error_0x41", + "nodeType": "YulFunctionDefinition", + "src": "27927:180:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "28141:152:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28158:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28161:77:40", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28151:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "28151:88:40" + }, + "nodeType": "YulExpressionStatement", + "src": "28151:88:40" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28255:1:40", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28258:4:40", + "type": "", + "value": "0x22" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28248:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "28248:15:40" + }, + "nodeType": "YulExpressionStatement", + "src": "28248:15:40" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28279:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28282:4:40", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "28272:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "28272:15:40" + }, + "nodeType": "YulExpressionStatement", + "src": "28272:15:40" + } + ] + }, + "name": "panic_error_0x22", + "nodeType": "YulFunctionDefinition", + "src": "28113:180:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "28350:269:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "28360:22:40", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "28374:4:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28380:1:40", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "28370:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "28370:12:40" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "28360:6:40" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "28391:38:40", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "28421:4:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28427:1:40", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "28417:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "28417:12:40" + }, + "variables": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulTypedName", + "src": "28395:18:40", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "28468:51:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "28482:27:40", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "28496:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28504:4:40", + "type": "", + "value": "0x7f" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "28492:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "28492:17:40" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "28482:6:40" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "28448:18:40" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "28441:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "28441:26:40" + }, + "nodeType": "YulIf", + "src": "28438:81:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "28571:42:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x22", + "nodeType": "YulIdentifier", + "src": "28585:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "28585:18:40" + }, + "nodeType": "YulExpressionStatement", + "src": "28585:18:40" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "28535:18:40" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "28558:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28566:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "28555:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "28555:14:40" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "28532:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "28532:38:40" + }, + "nodeType": "YulIf", + "src": "28529:84:40" + } + ] + }, + "name": "extract_byte_array_length", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nodeType": "YulTypedName", + "src": "28334:4:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "28343:6:40", + "type": "" + } + ], + "src": "28299:320:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "28678:87:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "28688:11:40", + "value": { + "name": "ptr", + "nodeType": "YulIdentifier", + "src": "28696:3:40" + }, + "variableNames": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "28688:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28716:1:40", + "type": "", + "value": "0" + }, + { + "name": "ptr", + "nodeType": "YulIdentifier", + "src": "28719:3:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28709:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "28709:14:40" + }, + "nodeType": "YulExpressionStatement", + "src": "28709:14:40" + }, + { + "nodeType": "YulAssignment", + "src": "28732:26:40", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28750:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28753:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "keccak256", + "nodeType": "YulIdentifier", + "src": "28740:9:40" + }, + "nodeType": "YulFunctionCall", + "src": "28740:18:40" + }, + "variableNames": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "28732:4:40" + } + ] + } + ] + }, + "name": "array_dataslot_t_bytes_storage", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "ptr", + "nodeType": "YulTypedName", + "src": "28665:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "data", + "nodeType": "YulTypedName", + "src": "28673:4:40", + "type": "" + } + ], + "src": "28625:140:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "28815:49:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "28825:33:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "28843:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28850:2:40", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28839:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "28839:14:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28855:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "28835:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "28835:23:40" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "28825:6:40" + } + ] + } + ] + }, + "name": "divide_by_32_ceil", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "28798:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "result", + "nodeType": "YulTypedName", + "src": "28808:6:40", + "type": "" + } + ], + "src": "28771:93:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "28923:54:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "28933:37:40", + "value": { + "arguments": [ + { + "name": "bits", + "nodeType": "YulIdentifier", + "src": "28958:4:40" + }, + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "28964:5:40" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "28954:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "28954:16:40" + }, + "variableNames": [ + { + "name": "newValue", + "nodeType": "YulIdentifier", + "src": "28933:8:40" + } + ] + } + ] + }, + "name": "shift_left_dynamic", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "bits", + "nodeType": "YulTypedName", + "src": "28898:4:40", + "type": "" + }, + { + "name": "value", + "nodeType": "YulTypedName", + "src": "28904:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "newValue", + "nodeType": "YulTypedName", + "src": "28914:8:40", + "type": "" + } + ], + "src": "28870:107:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "29059:317:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "29069:35:40", + "value": { + "arguments": [ + { + "name": "shiftBytes", + "nodeType": "YulIdentifier", + "src": "29090:10:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29102:1:40", + "type": "", + "value": "8" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "29086:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "29086:18:40" + }, + "variables": [ + { + "name": "shiftBits", + "nodeType": "YulTypedName", + "src": "29073:9:40", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "29113:109:40", + "value": { + "arguments": [ + { + "name": "shiftBits", + "nodeType": "YulIdentifier", + "src": "29144:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29155:66:40", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "shift_left_dynamic", + "nodeType": "YulIdentifier", + "src": "29125:18:40" + }, + "nodeType": "YulFunctionCall", + "src": "29125:97:40" + }, + "variables": [ + { + "name": "mask", + "nodeType": "YulTypedName", + "src": "29117:4:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "29231:51:40", + "value": { + "arguments": [ + { + "name": "shiftBits", + "nodeType": "YulIdentifier", + "src": "29262:9:40" + }, + { + "name": "toInsert", + "nodeType": "YulIdentifier", + "src": "29273:8:40" + } + ], + "functionName": { + "name": "shift_left_dynamic", + "nodeType": "YulIdentifier", + "src": "29243:18:40" + }, + "nodeType": "YulFunctionCall", + "src": "29243:39:40" + }, + "variableNames": [ + { + "name": "toInsert", + "nodeType": "YulIdentifier", + "src": "29231:8:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "29291:30:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "29304:5:40" + }, + { + "arguments": [ + { + "name": "mask", + "nodeType": "YulIdentifier", + "src": "29315:4:40" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "29311:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "29311:9:40" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "29300:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "29300:21:40" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "29291:5:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "29330:40:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "29343:5:40" + }, + { + "arguments": [ + { + "name": "toInsert", + "nodeType": "YulIdentifier", + "src": "29354:8:40" + }, + { + "name": "mask", + "nodeType": "YulIdentifier", + "src": "29364:4:40" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "29350:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "29350:19:40" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "29340:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "29340:30:40" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "29330:6:40" + } + ] + } + ] + }, + "name": "update_byte_slice_dynamic32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "29020:5:40", + "type": "" + }, + { + "name": "shiftBytes", + "nodeType": "YulTypedName", + "src": "29027:10:40", + "type": "" + }, + { + "name": "toInsert", + "nodeType": "YulTypedName", + "src": "29039:8:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "result", + "nodeType": "YulTypedName", + "src": "29052:6:40", + "type": "" + } + ], + "src": "28983:393:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "29414:28:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "29424:12:40", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "29431:5:40" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "29424:3:40" + } + ] + } + ] + }, + "name": "identity", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "29400:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nodeType": "YulTypedName", + "src": "29410:3:40", + "type": "" + } + ], + "src": "29382:60:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "29508:82:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "29518:66:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "29576:5:40" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "29558:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "29558:24:40" + } + ], + "functionName": { + "name": "identity", + "nodeType": "YulIdentifier", + "src": "29549:8:40" + }, + "nodeType": "YulFunctionCall", + "src": "29549:34:40" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "29531:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "29531:53:40" + }, + "variableNames": [ + { + "name": "converted", + "nodeType": "YulIdentifier", + "src": "29518:9:40" + } + ] + } + ] + }, + "name": "convert_t_uint256_to_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "29488:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "converted", + "nodeType": "YulTypedName", + "src": "29498:9:40", + "type": "" + } + ], + "src": "29448:142:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "29643:28:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "29653:12:40", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "29660:5:40" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "29653:3:40" + } + ] + } + ] + }, + "name": "prepare_store_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "29629:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nodeType": "YulTypedName", + "src": "29639:3:40", + "type": "" + } + ], + "src": "29596:75:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "29753:193:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "29763:63:40", + "value": { + "arguments": [ + { + "name": "value_0", + "nodeType": "YulIdentifier", + "src": "29818:7:40" + } + ], + "functionName": { + "name": "convert_t_uint256_to_t_uint256", + "nodeType": "YulIdentifier", + "src": "29787:30:40" + }, + "nodeType": "YulFunctionCall", + "src": "29787:39:40" + }, + "variables": [ + { + "name": "convertedValue_0", + "nodeType": "YulTypedName", + "src": "29767:16:40", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "29842:4:40" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "29882:4:40" + } + ], + "functionName": { + "name": "sload", + "nodeType": "YulIdentifier", + "src": "29876:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "29876:11:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "29889:6:40" + }, + { + "arguments": [ + { + "name": "convertedValue_0", + "nodeType": "YulIdentifier", + "src": "29921:16:40" + } + ], + "functionName": { + "name": "prepare_store_t_uint256", + "nodeType": "YulIdentifier", + "src": "29897:23:40" + }, + "nodeType": "YulFunctionCall", + "src": "29897:41:40" + } + ], + "functionName": { + "name": "update_byte_slice_dynamic32", + "nodeType": "YulIdentifier", + "src": "29848:27:40" + }, + "nodeType": "YulFunctionCall", + "src": "29848:91:40" + } + ], + "functionName": { + "name": "sstore", + "nodeType": "YulIdentifier", + "src": "29835:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "29835:105:40" + }, + "nodeType": "YulExpressionStatement", + "src": "29835:105:40" + } + ] + }, + "name": "update_storage_value_t_uint256_to_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "slot", + "nodeType": "YulTypedName", + "src": "29730:4:40", + "type": "" + }, + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "29736:6:40", + "type": "" + }, + { + "name": "value_0", + "nodeType": "YulTypedName", + "src": "29744:7:40", + "type": "" + } + ], + "src": "29677:269:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "30001:24:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "30011:8:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30018:1:40", + "type": "", + "value": "0" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "30011:3:40" + } + ] + } + ] + }, + "name": "zero_value_for_split_t_uint256", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "ret", + "nodeType": "YulTypedName", + "src": "29997:3:40", + "type": "" + } + ], + "src": "29952:73:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "30084:136:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "30094:46:40", + "value": { + "arguments": [], + "functionName": { + "name": "zero_value_for_split_t_uint256", + "nodeType": "YulIdentifier", + "src": "30108:30:40" + }, + "nodeType": "YulFunctionCall", + "src": "30108:32:40" + }, + "variables": [ + { + "name": "zero_0", + "nodeType": "YulTypedName", + "src": "30098:6:40", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "30193:4:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "30199:6:40" + }, + { + "name": "zero_0", + "nodeType": "YulIdentifier", + "src": "30207:6:40" + } + ], + "functionName": { + "name": "update_storage_value_t_uint256_to_t_uint256", + "nodeType": "YulIdentifier", + "src": "30149:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "30149:65:40" + }, + "nodeType": "YulExpressionStatement", + "src": "30149:65:40" + } + ] + }, + "name": "storage_set_to_zero_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "slot", + "nodeType": "YulTypedName", + "src": "30070:4:40", + "type": "" + }, + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "30076:6:40", + "type": "" + } + ], + "src": "30031:189:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "30276:136:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "30343:63:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "start", + "nodeType": "YulIdentifier", + "src": "30387:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30394:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "storage_set_to_zero_t_uint256", + "nodeType": "YulIdentifier", + "src": "30357:29:40" + }, + "nodeType": "YulFunctionCall", + "src": "30357:39:40" + }, + "nodeType": "YulExpressionStatement", + "src": "30357:39:40" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "start", + "nodeType": "YulIdentifier", + "src": "30296:5:40" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "30303:3:40" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "30293:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "30293:14:40" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "30308:26:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "30310:22:40", + "value": { + "arguments": [ + { + "name": "start", + "nodeType": "YulIdentifier", + "src": "30323:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30330:1:40", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30319:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "30319:13:40" + }, + "variableNames": [ + { + "name": "start", + "nodeType": "YulIdentifier", + "src": "30310:5:40" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "30290:2:40", + "statements": [] + }, + "src": "30286:120:40" + } + ] + }, + "name": "clear_storage_range_t_bytes1", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "start", + "nodeType": "YulTypedName", + "src": "30264:5:40", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "30271:3:40", + "type": "" + } + ], + "src": "30226:186:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "30496:463:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "30522:430:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "30536:53:40", + "value": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "30583:5:40" + } + ], + "functionName": { + "name": "array_dataslot_t_bytes_storage", + "nodeType": "YulIdentifier", + "src": "30552:30:40" + }, + "nodeType": "YulFunctionCall", + "src": "30552:37:40" + }, + "variables": [ + { + "name": "dataArea", + "nodeType": "YulTypedName", + "src": "30540:8:40", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "30602:63:40", + "value": { + "arguments": [ + { + "name": "dataArea", + "nodeType": "YulIdentifier", + "src": "30625:8:40" + }, + { + "arguments": [ + { + "name": "startIndex", + "nodeType": "YulIdentifier", + "src": "30653:10:40" + } + ], + "functionName": { + "name": "divide_by_32_ceil", + "nodeType": "YulIdentifier", + "src": "30635:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "30635:29:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30621:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "30621:44:40" + }, + "variables": [ + { + "name": "deleteStart", + "nodeType": "YulTypedName", + "src": "30606:11:40", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "30822:27:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "30824:23:40", + "value": { + "name": "dataArea", + "nodeType": "YulIdentifier", + "src": "30839:8:40" + }, + "variableNames": [ + { + "name": "deleteStart", + "nodeType": "YulIdentifier", + "src": "30824:11:40" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "startIndex", + "nodeType": "YulIdentifier", + "src": "30806:10:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30818:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "30803:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "30803:18:40" + }, + "nodeType": "YulIf", + "src": "30800:49:40" + }, + { + "expression": { + "arguments": [ + { + "name": "deleteStart", + "nodeType": "YulIdentifier", + "src": "30891:11:40" + }, + { + "arguments": [ + { + "name": "dataArea", + "nodeType": "YulIdentifier", + "src": "30908:8:40" + }, + { + "arguments": [ + { + "name": "len", + "nodeType": "YulIdentifier", + "src": "30936:3:40" + } + ], + "functionName": { + "name": "divide_by_32_ceil", + "nodeType": "YulIdentifier", + "src": "30918:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "30918:22:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "30904:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "30904:37:40" + } + ], + "functionName": { + "name": "clear_storage_range_t_bytes1", + "nodeType": "YulIdentifier", + "src": "30862:28:40" + }, + "nodeType": "YulFunctionCall", + "src": "30862:80:40" + }, + "nodeType": "YulExpressionStatement", + "src": "30862:80:40" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "len", + "nodeType": "YulIdentifier", + "src": "30513:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "30518:2:40", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "30510:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "30510:11:40" + }, + "nodeType": "YulIf", + "src": "30507:445:40" + } + ] + }, + "name": "clean_up_bytearray_end_slots_t_bytes_storage", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "30472:5:40", + "type": "" + }, + { + "name": "len", + "nodeType": "YulTypedName", + "src": "30479:3:40", + "type": "" + }, + { + "name": "startIndex", + "nodeType": "YulTypedName", + "src": "30484:10:40", + "type": "" + } + ], + "src": "30418:541:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "31028:54:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "31038:37:40", + "value": { + "arguments": [ + { + "name": "bits", + "nodeType": "YulIdentifier", + "src": "31063:4:40" + }, + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "31069:5:40" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "31059:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "31059:16:40" + }, + "variableNames": [ + { + "name": "newValue", + "nodeType": "YulIdentifier", + "src": "31038:8:40" + } + ] + } + ] + }, + "name": "shift_right_unsigned_dynamic", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "bits", + "nodeType": "YulTypedName", + "src": "31003:4:40", + "type": "" + }, + { + "name": "value", + "nodeType": "YulTypedName", + "src": "31009:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "newValue", + "nodeType": "YulTypedName", + "src": "31019:8:40", + "type": "" + } + ], + "src": "30965:117:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "31139:118:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "31149:68:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31198:1:40", + "type": "", + "value": "8" + }, + { + "name": "bytes", + "nodeType": "YulIdentifier", + "src": "31201:5:40" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "31194:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "31194:13:40" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31213:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "31209:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "31209:6:40" + } + ], + "functionName": { + "name": "shift_right_unsigned_dynamic", + "nodeType": "YulIdentifier", + "src": "31165:28:40" + }, + "nodeType": "YulFunctionCall", + "src": "31165:51:40" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "31161:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "31161:56:40" + }, + "variables": [ + { + "name": "mask", + "nodeType": "YulTypedName", + "src": "31153:4:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "31226:25:40", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "31240:4:40" + }, + { + "name": "mask", + "nodeType": "YulIdentifier", + "src": "31246:4:40" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "31236:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "31236:15:40" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "31226:6:40" + } + ] + } + ] + }, + "name": "mask_bytes_dynamic", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nodeType": "YulTypedName", + "src": "31116:4:40", + "type": "" + }, + { + "name": "bytes", + "nodeType": "YulTypedName", + "src": "31122:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "result", + "nodeType": "YulTypedName", + "src": "31132:6:40", + "type": "" + } + ], + "src": "31088:169:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "31343:214:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "31476:37:40", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "31503:4:40" + }, + { + "name": "len", + "nodeType": "YulIdentifier", + "src": "31509:3:40" + } + ], + "functionName": { + "name": "mask_bytes_dynamic", + "nodeType": "YulIdentifier", + "src": "31484:18:40" + }, + "nodeType": "YulFunctionCall", + "src": "31484:29:40" + }, + "variableNames": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "31476:4:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "31522:29:40", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "31533:4:40" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31543:1:40", + "type": "", + "value": "2" + }, + { + "name": "len", + "nodeType": "YulIdentifier", + "src": "31546:3:40" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "31539:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "31539:11:40" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "31530:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "31530:21:40" + }, + "variableNames": [ + { + "name": "used", + "nodeType": "YulIdentifier", + "src": "31522:4:40" + } + ] + } + ] + }, + "name": "extract_used_part_and_set_length_of_short_byte_array", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nodeType": "YulTypedName", + "src": "31324:4:40", + "type": "" + }, + { + "name": "len", + "nodeType": "YulTypedName", + "src": "31330:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "used", + "nodeType": "YulTypedName", + "src": "31338:4:40", + "type": "" + } + ], + "src": "31262:295:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "31659:1301:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "31670:57:40", + "value": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "31718:3:40" + }, + { + "name": "len", + "nodeType": "YulIdentifier", + "src": "31723:3:40" + } + ], + "functionName": { + "name": "array_length_t_bytes_calldata_ptr", + "nodeType": "YulIdentifier", + "src": "31684:33:40" + }, + "nodeType": "YulFunctionCall", + "src": "31684:43:40" + }, + "variables": [ + { + "name": "newLen", + "nodeType": "YulTypedName", + "src": "31674:6:40", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "31812:22:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "31814:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "31814:18:40" + }, + "nodeType": "YulExpressionStatement", + "src": "31814:18:40" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "31784:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "31792:18:40", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "31781:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "31781:30:40" + }, + "nodeType": "YulIf", + "src": "31778:56:40" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "31844:52:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "31890:4:40" + } + ], + "functionName": { + "name": "sload", + "nodeType": "YulIdentifier", + "src": "31884:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "31884:11:40" + } + ], + "functionName": { + "name": "extract_byte_array_length", + "nodeType": "YulIdentifier", + "src": "31858:25:40" + }, + "nodeType": "YulFunctionCall", + "src": "31858:38:40" + }, + "variables": [ + { + "name": "oldLen", + "nodeType": "YulTypedName", + "src": "31848:6:40", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "31988:4:40" + }, + { + "name": "oldLen", + "nodeType": "YulIdentifier", + "src": "31994:6:40" + }, + { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "32002:6:40" + } + ], + "functionName": { + "name": "clean_up_bytearray_end_slots_t_bytes_storage", + "nodeType": "YulIdentifier", + "src": "31943:44:40" + }, + "nodeType": "YulFunctionCall", + "src": "31943:66:40" + }, + "nodeType": "YulExpressionStatement", + "src": "31943:66:40" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "32019:18:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32036:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "srcOffset", + "nodeType": "YulTypedName", + "src": "32023:9:40", + "type": "" + } + ] + }, + { + "cases": [ + { + "body": { + "nodeType": "YulBlock", + "src": "32084:624:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "32098:37:40", + "value": { + "arguments": [ + { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "32117:6:40" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32129:4:40", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "32125:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "32125:9:40" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "32113:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "32113:22:40" + }, + "variables": [ + { + "name": "loopEnd", + "nodeType": "YulTypedName", + "src": "32102:7:40", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "32149:50:40", + "value": { + "arguments": [ + { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "32194:4:40" + } + ], + "functionName": { + "name": "array_dataslot_t_bytes_storage", + "nodeType": "YulIdentifier", + "src": "32163:30:40" + }, + "nodeType": "YulFunctionCall", + "src": "32163:36:40" + }, + "variables": [ + { + "name": "dstPtr", + "nodeType": "YulTypedName", + "src": "32153:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "32212:10:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32221:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "32216:1:40", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "32280:170:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nodeType": "YulIdentifier", + "src": "32305:6:40" + }, + { + "arguments": [ + { "arguments": [ - { - "argumentTypes": null, - "id": 2120, - "name": "chainID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2090, - "src": "18563:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "32330:3:40" + }, + { + "name": "srcOffset", + "nodeType": "YulIdentifier", + "src": "32335:9:40" + } ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "id": 2119, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "18556:6:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint72_$", - "typeString": "type(uint72)" - }, - "typeName": { - "id": 2118, - "name": "uint72", - "nodeType": "ElementaryTypeName", - "src": "18556:6:4", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32326:3:40" }, - "id": 2121, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "18556:15:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - } + "nodeType": "YulFunctionCall", + "src": "32326:19:40" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "32313:12:40" }, - "src": "18526:45:4", - "typeDescriptions": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "18506:65:4" + "nodeType": "YulFunctionCall", + "src": "32313:33:40" + } + ], + "functionName": { + "name": "sstore", + "nodeType": "YulIdentifier", + "src": "32298:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "32298:49:40" + }, + "nodeType": "YulExpressionStatement", + "src": "32298:49:40" }, { - "assignments": [2125], - "declarations": [ - { - "constant": false, - "id": 2125, - "mutability": "mutable", - "name": "dataHash", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 2194, - "src": "18581:16:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 2124, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "18581:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } + "nodeType": "YulAssignment", + "src": "32364:24:40", + "value": { + "arguments": [ + { + "name": "dstPtr", + "nodeType": "YulIdentifier", + "src": "32378:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32386:1:40", + "type": "", + "value": "1" + } ], - "id": 2133, - "initialValue": { - "argumentTypes": null, + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32374:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "32374:14:40" + }, + "variableNames": [ + { + "name": "dstPtr", + "nodeType": "YulIdentifier", + "src": "32364:6:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "32405:31:40", + "value": { + "arguments": [ + { + "name": "srcOffset", + "nodeType": "YulIdentifier", + "src": "32422:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32433:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32418:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "32418:18:40" + }, + "variableNames": [ + { + "name": "srcOffset", + "nodeType": "YulIdentifier", + "src": "32405:9:40" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "32246:1:40" + }, + { + "name": "loopEnd", + "nodeType": "YulIdentifier", + "src": "32249:7:40" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "32243:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "32243:14:40" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "32258:21:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "32260:17:40", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "32269:1:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32272:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32265:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "32265:12:40" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "32260:1:40" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "32239:3:40", + "statements": [] + }, + "src": "32235:215:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "32486:163:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "32504:50:40", + "value": { + "arguments": [ + { "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 2129, - "name": "handler", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2104, - "src": "18627:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 2130, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2094, - "src": "18636:4:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - ], - "expression": { - "argumentTypes": null, - "id": 2127, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "18610:3:4", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 2128, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "encodePacked", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "18610:16:4", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" - } - }, - "id": 2131, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "18610:31:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "32538:3:40" + }, + { + "name": "srcOffset", + "nodeType": "YulIdentifier", + "src": "32543:9:40" + } ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 2126, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -8, - "src": "18600:9:4", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32534:3:40" }, - "id": 2132, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "18600:42:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "18581:61:4" + "nodeType": "YulFunctionCall", + "src": "32534:19:40" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "32521:12:40" + }, + "nodeType": "YulFunctionCall", + "src": "32521:33:40" + }, + "variables": [ + { + "name": "lastValue", + "nodeType": "YulTypedName", + "src": "32508:9:40", + "type": "" + } + ] }, { - "assignments": [2135], - "declarations": [ - { - "constant": false, - "id": 2135, - "mutability": "mutable", - "name": "proposal", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 2194, - "src": "18652:25:4", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Proposal_$1146_storage_ptr", - "typeString": "struct Bridge.Proposal" - }, - "typeName": { - "contractScope": null, - "id": 2134, - "name": "Proposal", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1146, - "src": "18652:8:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Proposal_$1146_storage_ptr", - "typeString": "struct Bridge.Proposal" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 2141, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 2136, - "name": "_proposals", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1166, - "src": "18680:10:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint72_$_t_mapping$_t_bytes32_$_t_struct$_Proposal_$1146_storage_$_$", - "typeString": "mapping(uint72 => mapping(bytes32 => struct Bridge.Proposal storage ref))" - } - }, - "id": 2138, - "indexExpression": { - "argumentTypes": null, - "id": 2137, - "name": "nonceAndID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2110, - "src": "18691:10:4", - "typeDescriptions": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - } + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nodeType": "YulIdentifier", + "src": "32578:6:40" + }, + { + "arguments": [ + { + "name": "lastValue", + "nodeType": "YulIdentifier", + "src": "32605:9:40" + }, + { + "arguments": [ + { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "32620:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32628:4:40", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "32616:3:40" }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "18680:22:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$1146_storage_$", - "typeString": "mapping(bytes32 => struct Bridge.Proposal storage ref)" - } + "nodeType": "YulFunctionCall", + "src": "32616:17:40" + } + ], + "functionName": { + "name": "mask_bytes_dynamic", + "nodeType": "YulIdentifier", + "src": "32586:18:40" }, - "id": 2140, - "indexExpression": { - "argumentTypes": null, - "id": 2139, - "name": "dataHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2125, - "src": "18703:8:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } + "nodeType": "YulFunctionCall", + "src": "32586:48:40" + } + ], + "functionName": { + "name": "sstore", + "nodeType": "YulIdentifier", + "src": "32571:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "32571:64:40" + }, + "nodeType": "YulExpressionStatement", + "src": "32571:64:40" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "loopEnd", + "nodeType": "YulIdentifier", + "src": "32469:7:40" + }, + { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "32478:6:40" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "32466:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "32466:19:40" + }, + "nodeType": "YulIf", + "src": "32463:186:40" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "32669:4:40" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "32683:6:40" }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "18680:32:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Proposal_$1146_storage", - "typeString": "struct Bridge.Proposal storage ref" + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32691:1:40", + "type": "", + "value": "2" } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "32679:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "32679:14:40" }, - "nodeType": "VariableDeclarationStatement", - "src": "18652:60:4" - }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32695:1:40", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32675:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "32675:22:40" + } + ], + "functionName": { + "name": "sstore", + "nodeType": "YulIdentifier", + "src": "32662:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "32662:36:40" + }, + "nodeType": "YulExpressionStatement", + "src": "32662:36:40" + } + ] + }, + "nodeType": "YulCase", + "src": "32077:631:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32082:1:40", + "type": "", + "value": "1" + } + }, + { + "body": { + "nodeType": "YulBlock", + "src": "32725:229:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "32739:14:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32752:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "32743:5:40", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "32776:74:40", + "statements": [ { - "expression": { - "argumentTypes": null, + "nodeType": "YulAssignment", + "src": "32794:42:40", + "value": { + "arguments": [ + { "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - }, - "id": 2147, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 2143, - "name": "proposal", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2135, - "src": "18731:8:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Proposal_$1146_storage_ptr", - "typeString": "struct Bridge.Proposal storage pointer" - } - }, - "id": 2144, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "_status", - "nodeType": "MemberAccess", - "referencedDeclaration": 1143, - "src": "18731:16:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 2145, - "name": "ProposalStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1131, - "src": "18751:14:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$1131_$", - "typeString": "type(enum Bridge.ProposalStatus)" - } - }, - "id": 2146, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Passed", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "18751:21:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - } - }, - "src": "18731:41:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "70726f706f73616c20616c7265616479207472616e73666572726564", - "id": 2148, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "18774:30:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_00b04c534306f551d2ead1f9f63f0158b74c6c6e51741a5b803ded09eea1e088", - "typeString": "literal_string \"proposal already transferred\"" - }, - "value": "proposal already transferred" - } + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "32820:3:40" + }, + { + "name": "srcOffset", + "nodeType": "YulIdentifier", + "src": "32825:9:40" + } ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_00b04c534306f551d2ead1f9f63f0158b74c6c6e51741a5b803ded09eea1e088", - "typeString": "literal_string \"proposal already transferred\"" - } - ], - "id": 2142, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "18723:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "32816:3:40" }, - "id": 2149, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "18723:82:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } + "nodeType": "YulFunctionCall", + "src": "32816:19:40" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "32803:12:40" + }, + "nodeType": "YulFunctionCall", + "src": "32803:33:40" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "32794:5:40" + } + ] + } + ] + }, + "condition": { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "32769:6:40" + }, + "nodeType": "YulIf", + "src": "32766:84:40" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "32870:4:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "32929:5:40" }, - "id": 2150, - "nodeType": "ExpressionStatement", - "src": "18723:82:4" + { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "32936:6:40" + } + ], + "functionName": { + "name": "extract_used_part_and_set_length_of_short_byte_array", + "nodeType": "YulIdentifier", + "src": "32876:52:40" + }, + "nodeType": "YulFunctionCall", + "src": "32876:67:40" + } + ], + "functionName": { + "name": "sstore", + "nodeType": "YulIdentifier", + "src": "32863:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "32863:81:40" + }, + "nodeType": "YulExpressionStatement", + "src": "32863:81:40" + } + ] + }, + "nodeType": "YulCase", + "src": "32717:237:40", + "value": "default" + } + ], + "expression": { + "arguments": [ + { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "32057:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "32065:2:40", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "32054:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "32054:14:40" + }, + "nodeType": "YulSwitch", + "src": "32047:907:40" + } + ] + }, + "name": "copy_byte_array_to_storage_from_t_bytes_calldata_ptr_to_t_bytes_storage", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "slot", + "nodeType": "YulTypedName", + "src": "31643:4:40", + "type": "" + }, + { + "name": "src", + "nodeType": "YulTypedName", + "src": "31649:3:40", + "type": "" + }, + { + "name": "len", + "nodeType": "YulTypedName", + "src": "31654:3:40", + "type": "" + } + ], + "src": "31562:1398:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "33030:82:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "33053:3:40" + }, + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "33058:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "33063:6:40" + } + ], + "functionName": { + "name": "calldatacopy", + "nodeType": "YulIdentifier", + "src": "33040:12:40" + }, + "nodeType": "YulFunctionCall", + "src": "33040:30:40" + }, + "nodeType": "YulExpressionStatement", + "src": "33040:30:40" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "33090:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "33095:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33086:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "33086:16:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33104:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "33079:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "33079:27:40" + }, + "nodeType": "YulExpressionStatement", + "src": "33079:27:40" + } + ] + }, + "name": "copy_calldata_to_memory_with_cleanup", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "33012:3:40", + "type": "" + }, + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "33017:3:40", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "33022:6:40", + "type": "" + } + ], + "src": "32966:146:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "33240:214:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "33250:77:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "33315:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "33320:6:40" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "33257:57:40" + }, + "nodeType": "YulFunctionCall", + "src": "33257:70:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "33250:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "start", + "nodeType": "YulIdentifier", + "src": "33374:5:40" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "33381:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "33386:6:40" + } + ], + "functionName": { + "name": "copy_calldata_to_memory_with_cleanup", + "nodeType": "YulIdentifier", + "src": "33337:36:40" + }, + "nodeType": "YulFunctionCall", + "src": "33337:56:40" + }, + "nodeType": "YulExpressionStatement", + "src": "33337:56:40" + }, + { + "nodeType": "YulAssignment", + "src": "33402:46:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "33413:3:40" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "33440:6:40" + } + ], + "functionName": { + "name": "round_up_to_mul_of_32", + "nodeType": "YulIdentifier", + "src": "33418:21:40" + }, + "nodeType": "YulFunctionCall", + "src": "33418:29:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33409:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "33409:39:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "33402:3:40" + } + ] + } + ] + }, + "name": "abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "start", + "nodeType": "YulTypedName", + "src": "33213:5:40", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "33220:6:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "33228:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "33236:3:40", + "type": "" + } + ], + "src": "33140:314:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "33692:527:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "33702:27:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33714:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33725:3:40", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33710:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "33710:19:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "33702:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "33783:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33796:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33807:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33792:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "33792:17:40" + } + ], + "functionName": { + "name": "abi_encode_t_bytes32_to_t_bytes32_fromStack", + "nodeType": "YulIdentifier", + "src": "33739:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "33739:71:40" + }, + "nodeType": "YulExpressionStatement", + "src": "33739:71:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "33860:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33873:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33884:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33869:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "33869:18:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint8_to_t_uint8_fromStack", + "nodeType": "YulIdentifier", + "src": "33820:39:40" + }, + "nodeType": "YulFunctionCall", + "src": "33820:68:40" + }, + "nodeType": "YulExpressionStatement", + "src": "33820:68:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "33940:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "33953:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "33964:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "33949:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "33949:18:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint64_to_t_uint64_fromStack", + "nodeType": "YulIdentifier", + "src": "33898:41:40" + }, + "nodeType": "YulFunctionCall", + "src": "33898:70:40" + }, + "nodeType": "YulExpressionStatement", + "src": "33898:70:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "34022:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34035:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34046:2:40", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "34031:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "34031:18:40" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "33978:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "33978:72:40" + }, + "nodeType": "YulExpressionStatement", + "src": "33978:72:40" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34071:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34082:3:40", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "34067:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "34067:19:40" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "34092:4:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34098:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "34088:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "34088:20:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "34060:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "34060:49:40" + }, + "nodeType": "YulExpressionStatement", + "src": "34060:49:40" + }, + { + "nodeType": "YulAssignment", + "src": "34118:94:40", + "value": { + "arguments": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "34190:6:40" + }, + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "34198:6:40" + }, + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "34207:4:40" + } + ], + "functionName": { + "name": "abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "34126:63:40" + }, + "nodeType": "YulFunctionCall", + "src": "34126:86:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "34118:4:40" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_bytes32_t_uint8_t_uint64_t_address_t_bytes_calldata_ptr__to_t_bytes32_t_uint8_t_uint64_t_address_t_bytes_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "33624:9:40", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "33636:6:40", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "33644:6:40", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "33652:6:40", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "33660:6:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "33668:6:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "33676:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "33687:4:40", + "type": "" + } + ], + "src": "33460:759:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "34331:76:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "34353:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34361:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "34349:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "34349:14:40" + }, + { + "hexValue": "73656e64657220646f65736e277420686176652072656c6179657220726f6c65", + "kind": "string", + "nodeType": "YulLiteral", + "src": "34365:34:40", + "type": "", + "value": "sender doesn't have relayer role" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "34342:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "34342:58:40" + }, + "nodeType": "YulExpressionStatement", + "src": "34342:58:40" + } + ] + }, + "name": "store_literal_in_memory_c5edc249083609d56bd00194353566fb7b8c09e436c3268ab57a56188319b6d4", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "34323:6:40", + "type": "" + } + ], + "src": "34225:182:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "34559:220:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "34569:74:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "34635:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34640:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "34576:58:40" + }, + "nodeType": "YulFunctionCall", + "src": "34576:67:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "34569:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "34741:3:40" + } + ], + "functionName": { + "name": "store_literal_in_memory_c5edc249083609d56bd00194353566fb7b8c09e436c3268ab57a56188319b6d4", + "nodeType": "YulIdentifier", + "src": "34652:88:40" + }, + "nodeType": "YulFunctionCall", + "src": "34652:93:40" + }, + "nodeType": "YulExpressionStatement", + "src": "34652:93:40" + }, + { + "nodeType": "YulAssignment", + "src": "34754:19:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "34765:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34770:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "34761:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "34761:12:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "34754:3:40" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_c5edc249083609d56bd00194353566fb7b8c09e436c3268ab57a56188319b6d4_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "34547:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "34555:3:40", + "type": "" + } + ], + "src": "34413:366:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "34956:248:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "34966:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "34978:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "34989:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "34974:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "34974:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "34966:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35013:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35024:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35009:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "35009:17:40" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "35032:4:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35038:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "35028:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "35028:20:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "35002:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "35002:47:40" + }, + "nodeType": "YulExpressionStatement", + "src": "35002:47:40" + }, + { + "nodeType": "YulAssignment", + "src": "35058:139:40", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "35192:4:40" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_c5edc249083609d56bd00194353566fb7b8c09e436c3268ab57a56188319b6d4_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "35066:124:40" + }, + "nodeType": "YulFunctionCall", + "src": "35066:131:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "35058:4:40" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_c5edc249083609d56bd00194353566fb7b8c09e436c3268ab57a56188319b6d4__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "34936:9:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "34951:4:40", + "type": "" + } + ], + "src": "34785:419:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "35316:76:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "35338:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35346:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35334:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "35334:14:40" + }, + { + "hexValue": "6164647220646f65736e27742068617665206578656375746f7220726f6c6521", + "kind": "string", + "nodeType": "YulLiteral", + "src": "35350:34:40", + "type": "", + "value": "addr doesn't have executor role!" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "35327:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "35327:58:40" + }, + "nodeType": "YulExpressionStatement", + "src": "35327:58:40" + } + ] + }, + "name": "store_literal_in_memory_db96155e06efa3a864b08f57f36b8a9b6799a3e5b3483adbbc51a7b859825cad", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "35308:6:40", + "type": "" + } + ], + "src": "35210:182:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "35544:220:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "35554:74:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "35620:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35625:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "35561:58:40" + }, + "nodeType": "YulFunctionCall", + "src": "35561:67:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "35554:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "35726:3:40" + } + ], + "functionName": { + "name": "store_literal_in_memory_db96155e06efa3a864b08f57f36b8a9b6799a3e5b3483adbbc51a7b859825cad", + "nodeType": "YulIdentifier", + "src": "35637:88:40" + }, + "nodeType": "YulFunctionCall", + "src": "35637:93:40" + }, + "nodeType": "YulExpressionStatement", + "src": "35637:93:40" + }, + { + "nodeType": "YulAssignment", + "src": "35739:19:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "35750:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35755:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35746:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "35746:12:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "35739:3:40" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_db96155e06efa3a864b08f57f36b8a9b6799a3e5b3483adbbc51a7b859825cad_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "35532:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "35540:3:40", + "type": "" + } + ], + "src": "35398:366:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "35941:248:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "35951:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35963:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "35974:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35959:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "35959:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "35951:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "35998:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36009:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "35994:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "35994:17:40" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "36017:4:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36023:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "36013:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "36013:20:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "35987:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "35987:47:40" + }, + "nodeType": "YulExpressionStatement", + "src": "35987:47:40" + }, + { + "nodeType": "YulAssignment", + "src": "36043:139:40", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "36177:4:40" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_db96155e06efa3a864b08f57f36b8a9b6799a3e5b3483adbbc51a7b859825cad_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "36051:124:40" + }, + "nodeType": "YulFunctionCall", + "src": "36051:131:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "36043:4:40" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_db96155e06efa3a864b08f57f36b8a9b6799a3e5b3483adbbc51a7b859825cad__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "35921:9:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "35936:4:40", + "type": "" + } + ], + "src": "35770:419:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "36301:74:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "36323:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36331:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36319:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "36319:14:40" + }, + { + "hexValue": "73656e646572206973206e6f742072656c61796572206f722061646d696e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "36335:32:40", + "type": "", + "value": "sender is not relayer or admin" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "36312:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "36312:56:40" + }, + "nodeType": "YulExpressionStatement", + "src": "36312:56:40" + } + ] + }, + "name": "store_literal_in_memory_060530e99bec4f476b8f8f370f65f741cac486899cd6c35c4dd2e82720711afe", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "36293:6:40", + "type": "" + } + ], + "src": "36195:180:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "36527:220:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "36537:74:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "36603:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36608:2:40", + "type": "", + "value": "30" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "36544:58:40" + }, + "nodeType": "YulFunctionCall", + "src": "36544:67:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "36537:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "36709:3:40" + } + ], + "functionName": { + "name": "store_literal_in_memory_060530e99bec4f476b8f8f370f65f741cac486899cd6c35c4dd2e82720711afe", + "nodeType": "YulIdentifier", + "src": "36620:88:40" + }, + "nodeType": "YulFunctionCall", + "src": "36620:93:40" + }, + "nodeType": "YulExpressionStatement", + "src": "36620:93:40" + }, + { + "nodeType": "YulAssignment", + "src": "36722:19:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "36733:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36738:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36729:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "36729:12:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "36722:3:40" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_060530e99bec4f476b8f8f370f65f741cac486899cd6c35c4dd2e82720711afe_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "36515:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "36523:3:40", + "type": "" + } + ], + "src": "36381:366:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "36924:248:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "36934:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36946:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36957:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36942:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "36942:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "36934:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "36981:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "36992:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "36977:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "36977:17:40" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "37000:4:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37006:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "36996:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "36996:20:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "36970:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "36970:47:40" + }, + "nodeType": "YulExpressionStatement", + "src": "36970:47:40" + }, + { + "nodeType": "YulAssignment", + "src": "37026:139:40", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "37160:4:40" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_060530e99bec4f476b8f8f370f65f741cac486899cd6c35c4dd2e82720711afe_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "37034:124:40" + }, + "nodeType": "YulFunctionCall", + "src": "37034:131:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "37026:4:40" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_060530e99bec4f476b8f8f370f65f741cac486899cd6c35c4dd2e82720711afe__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "36904:9:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "36919:4:40", + "type": "" + } + ], + "src": "36753:419:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "37284:70:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "37306:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37314:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "37302:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "37302:14:40" + }, + { + "hexValue": "50726f706f73616c20616c72656164792063616e63656c6c6564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "37318:28:40", + "type": "", + "value": "Proposal already cancelled" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "37295:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "37295:52:40" + }, + "nodeType": "YulExpressionStatement", + "src": "37295:52:40" + } + ] + }, + "name": "store_literal_in_memory_3e17bfcd355060e4798c0d940327e9e82091039c8817e9bd1bb8653b1bc06f8f", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "37276:6:40", + "type": "" + } + ], + "src": "37178:176:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "37506:220:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "37516:74:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "37582:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37587:2:40", + "type": "", + "value": "26" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "37523:58:40" + }, + "nodeType": "YulFunctionCall", + "src": "37523:67:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "37516:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "37688:3:40" + } + ], + "functionName": { + "name": "store_literal_in_memory_3e17bfcd355060e4798c0d940327e9e82091039c8817e9bd1bb8653b1bc06f8f", + "nodeType": "YulIdentifier", + "src": "37599:88:40" + }, + "nodeType": "YulFunctionCall", + "src": "37599:93:40" + }, + "nodeType": "YulExpressionStatement", + "src": "37599:93:40" + }, + { + "nodeType": "YulAssignment", + "src": "37701:19:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "37712:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37717:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "37708:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "37708:12:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "37701:3:40" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_3e17bfcd355060e4798c0d940327e9e82091039c8817e9bd1bb8653b1bc06f8f_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "37494:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "37502:3:40", + "type": "" + } + ], + "src": "37360:366:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "37903:248:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "37913:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37925:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37936:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "37921:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "37921:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "37913:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37960:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "37971:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "37956:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "37956:17:40" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "37979:4:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "37985:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "37975:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "37975:20:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "37949:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "37949:47:40" + }, + "nodeType": "YulExpressionStatement", + "src": "37949:47:40" + }, + { + "nodeType": "YulAssignment", + "src": "38005:139:40", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "38139:4:40" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_3e17bfcd355060e4798c0d940327e9e82091039c8817e9bd1bb8653b1bc06f8f_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "38013:124:40" + }, + "nodeType": "YulFunctionCall", + "src": "38013:131:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "38005:4:40" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_3e17bfcd355060e4798c0d940327e9e82091039c8817e9bd1bb8653b1bc06f8f__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "37883:9:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "37898:4:40", + "type": "" + } + ], + "src": "37732:419:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "38202:149:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "38212:25:40", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "38235:1:40" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "38217:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "38217:20:40" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "38212:1:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "38246:25:40", + "value": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "38269:1:40" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "38251:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "38251:20:40" + }, + "variableNames": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "38246:1:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "38280:17:40", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "38292:1:40" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "38295:1:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "38288:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "38288:9:40" + }, + "variableNames": [ + { + "name": "diff", + "nodeType": "YulIdentifier", + "src": "38280:4:40" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "38322:22:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "38324:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "38324:18:40" + }, + "nodeType": "YulExpressionStatement", + "src": "38324:18:40" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "diff", + "nodeType": "YulIdentifier", + "src": "38313:4:40" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "38319:1:40" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "38310:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "38310:11:40" + }, + "nodeType": "YulIf", + "src": "38307:37:40" + } + ] + }, + "name": "checked_sub_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "38188:1:40", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "38191:1:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "diff", + "nodeType": "YulTypedName", + "src": "38197:4:40", + "type": "" + } + ], + "src": "38157:194:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "38463:76:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "38485:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38493:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38481:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "38481:14:40" + }, + { + "hexValue": "50726f706f73616c206e6f7420617420657870697279207468726573686f6c64", + "kind": "string", + "nodeType": "YulLiteral", + "src": "38497:34:40", + "type": "", + "value": "Proposal not at expiry threshold" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "38474:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "38474:58:40" + }, + "nodeType": "YulExpressionStatement", + "src": "38474:58:40" + } + ] + }, + "name": "store_literal_in_memory_683f5cd388e83d1592bd1ca665f25f51ebccd4deed2b3fc92e3fe6b96cb47225", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "38455:6:40", + "type": "" + } + ], + "src": "38357:182:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "38691:220:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "38701:74:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "38767:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38772:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "38708:58:40" + }, + "nodeType": "YulFunctionCall", + "src": "38708:67:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "38701:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "38873:3:40" + } + ], + "functionName": { + "name": "store_literal_in_memory_683f5cd388e83d1592bd1ca665f25f51ebccd4deed2b3fc92e3fe6b96cb47225", + "nodeType": "YulIdentifier", + "src": "38784:88:40" + }, + "nodeType": "YulFunctionCall", + "src": "38784:93:40" + }, + "nodeType": "YulExpressionStatement", + "src": "38784:93:40" + }, + { + "nodeType": "YulAssignment", + "src": "38886:19:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "38897:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "38902:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "38893:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "38893:12:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "38886:3:40" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_683f5cd388e83d1592bd1ca665f25f51ebccd4deed2b3fc92e3fe6b96cb47225_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "38679:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "38687:3:40", + "type": "" + } + ], + "src": "38545:366:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "39088:248:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "39098:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39110:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39121:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "39106:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "39106:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "39098:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39145:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39156:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "39141:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "39141:17:40" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "39164:4:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39170:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "39160:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "39160:20:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "39134:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "39134:47:40" + }, + "nodeType": "YulExpressionStatement", + "src": "39134:47:40" + }, + { + "nodeType": "YulAssignment", + "src": "39190:139:40", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "39324:4:40" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_683f5cd388e83d1592bd1ca665f25f51ebccd4deed2b3fc92e3fe6b96cb47225_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "39198:124:40" + }, + "nodeType": "YulFunctionCall", + "src": "39198:131:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "39190:4:40" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_683f5cd388e83d1592bd1ca665f25f51ebccd4deed2b3fc92e3fe6b96cb47225__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "39068:9:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "39083:4:40", + "type": "" + } + ], + "src": "38917:419:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "39468:206:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "39478:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39490:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39501:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "39486:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "39486:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "39478:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "39558:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39571:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39582:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "39567:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "39567:17:40" + } + ], + "functionName": { + "name": "abi_encode_t_bytes32_to_t_bytes32_fromStack", + "nodeType": "YulIdentifier", + "src": "39514:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "39514:71:40" + }, + "nodeType": "YulExpressionStatement", + "src": "39514:71:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "39639:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "39652:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39663:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "39648:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "39648:18:40" + } + ], + "functionName": { + "name": "abi_encode_t_bytes32_to_t_bytes32_fromStack", + "nodeType": "YulIdentifier", + "src": "39595:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "39595:72:40" + }, + "nodeType": "YulExpressionStatement", + "src": "39595:72:40" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "39432:9:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "39444:6:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "39452:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "39463:4:40", + "type": "" + } + ], + "src": "39342:332:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "39786:128:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "39808:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39816:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "39804:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "39804:14:40" + }, + { + "hexValue": "416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e6365", + "kind": "string", + "nodeType": "YulLiteral", + "src": "39820:34:40", + "type": "", + "value": "AccessControl: can only renounce" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "39797:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "39797:58:40" + }, + "nodeType": "YulExpressionStatement", + "src": "39797:58:40" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "39876:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "39884:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "39872:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "39872:15:40" + }, + { + "hexValue": "20726f6c657320666f722073656c66", + "kind": "string", + "nodeType": "YulLiteral", + "src": "39889:17:40", + "type": "", + "value": " roles for self" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "39865:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "39865:42:40" + }, + "nodeType": "YulExpressionStatement", + "src": "39865:42:40" + } + ] + }, + "name": "store_literal_in_memory_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "39778:6:40", + "type": "" + } + ], + "src": "39680:234:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "40066:220:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "40076:74:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "40142:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "40147:2:40", + "type": "", + "value": "47" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "40083:58:40" + }, + "nodeType": "YulFunctionCall", + "src": "40083:67:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "40076:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "40248:3:40" + } + ], + "functionName": { + "name": "store_literal_in_memory_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b", + "nodeType": "YulIdentifier", + "src": "40159:88:40" + }, + "nodeType": "YulFunctionCall", + "src": "40159:93:40" + }, + "nodeType": "YulExpressionStatement", + "src": "40159:93:40" + }, + { + "nodeType": "YulAssignment", + "src": "40261:19:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "40272:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "40277:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "40268:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "40268:12:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "40261:3:40" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "40054:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "40062:3:40", + "type": "" + } + ], + "src": "39920:366:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "40463:248:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "40473:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "40485:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "40496:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "40481:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "40481:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "40473:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "40520:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "40531:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "40516:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "40516:17:40" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "40539:4:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "40545:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "40535:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "40535:20:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "40509:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "40509:47:40" + }, + "nodeType": "YulExpressionStatement", + "src": "40509:47:40" + }, + { + "nodeType": "YulAssignment", + "src": "40565:139:40", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "40699:4:40" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "40573:124:40" + }, + "nodeType": "YulFunctionCall", + "src": "40573:131:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "40565:4:40" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "40443:9:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "40458:4:40", + "type": "" + } + ], + "src": "40292:419:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "40823:74:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "40845:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "40853:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "40841:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "40841:14:40" + }, + { + "hexValue": "73656e64657220646f65736e277420686176652061646d696e20726f6c65", + "kind": "string", + "nodeType": "YulLiteral", + "src": "40857:32:40", + "type": "", + "value": "sender doesn't have admin role" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "40834:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "40834:56:40" + }, + "nodeType": "YulExpressionStatement", + "src": "40834:56:40" + } + ] + }, + "name": "store_literal_in_memory_cccb3b305edc7308d7027b1001041a46b235f7d3213d690bb469676069d9b205", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "40815:6:40", + "type": "" + } + ], + "src": "40717:180:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "41049:220:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "41059:74:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "41125:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "41130:2:40", + "type": "", + "value": "30" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "41066:58:40" + }, + "nodeType": "YulFunctionCall", + "src": "41066:67:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "41059:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "41231:3:40" + } + ], + "functionName": { + "name": "store_literal_in_memory_cccb3b305edc7308d7027b1001041a46b235f7d3213d690bb469676069d9b205", + "nodeType": "YulIdentifier", + "src": "41142:88:40" + }, + "nodeType": "YulFunctionCall", + "src": "41142:93:40" + }, + "nodeType": "YulExpressionStatement", + "src": "41142:93:40" + }, + { + "nodeType": "YulAssignment", + "src": "41244:19:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "41255:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "41260:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "41251:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "41251:12:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "41244:3:40" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_cccb3b305edc7308d7027b1001041a46b235f7d3213d690bb469676069d9b205_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "41037:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "41045:3:40", + "type": "" + } + ], + "src": "40903:366:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "41446:248:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "41456:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "41468:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "41479:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "41464:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "41464:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "41456:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "41503:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "41514:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "41499:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "41499:17:40" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "41522:4:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "41528:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "41518:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "41518:20:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "41492:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "41492:47:40" + }, + "nodeType": "YulExpressionStatement", + "src": "41492:47:40" + }, + { + "nodeType": "YulAssignment", + "src": "41548:139:40", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "41682:4:40" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_cccb3b305edc7308d7027b1001041a46b235f7d3213d690bb469676069d9b205_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "41556:124:40" + }, + "nodeType": "YulFunctionCall", + "src": "41556:131:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "41548:4:40" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_cccb3b305edc7308d7027b1001041a46b235f7d3213d690bb469676069d9b205__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "41426:9:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "41441:4:40", + "type": "" + } + ], + "src": "41275:419:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "41806:114:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "41828:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "41836:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "41824:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "41824:14:40" + }, + { + "hexValue": "73656e64657220646f65736e27742068617665206578656375746f7220726f6c", + "kind": "string", + "nodeType": "YulLiteral", + "src": "41840:34:40", + "type": "", + "value": "sender doesn't have executor rol" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "41817:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "41817:58:40" + }, + "nodeType": "YulExpressionStatement", + "src": "41817:58:40" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "41896:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "41904:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "41892:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "41892:15:40" + }, + { + "hexValue": "65", + "kind": "string", + "nodeType": "YulLiteral", + "src": "41909:3:40", + "type": "", + "value": "e" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "41885:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "41885:28:40" + }, + "nodeType": "YulExpressionStatement", + "src": "41885:28:40" + } + ] + }, + "name": "store_literal_in_memory_6b0d25b2bc527bc6f95ae29b783be3a899152e11d3bc0d29d07090dd4e4bb2b5", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "41798:6:40", + "type": "" + } + ], + "src": "41700:220:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "42072:220:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "42082:74:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "42148:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "42153:2:40", + "type": "", + "value": "33" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "42089:58:40" + }, + "nodeType": "YulFunctionCall", + "src": "42089:67:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "42082:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "42254:3:40" + } + ], + "functionName": { + "name": "store_literal_in_memory_6b0d25b2bc527bc6f95ae29b783be3a899152e11d3bc0d29d07090dd4e4bb2b5", + "nodeType": "YulIdentifier", + "src": "42165:88:40" + }, + "nodeType": "YulFunctionCall", + "src": "42165:93:40" + }, + "nodeType": "YulExpressionStatement", + "src": "42165:93:40" + }, + { + "nodeType": "YulAssignment", + "src": "42267:19:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "42278:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "42283:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "42274:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "42274:12:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "42267:3:40" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_6b0d25b2bc527bc6f95ae29b783be3a899152e11d3bc0d29d07090dd4e4bb2b5_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "42060:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "42068:3:40", + "type": "" + } + ], + "src": "41926:366:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "42469:248:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "42479:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "42491:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "42502:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "42487:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "42487:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "42479:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "42526:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "42537:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "42522:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "42522:17:40" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "42545:4:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "42551:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "42541:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "42541:20:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "42515:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "42515:47:40" + }, + "nodeType": "YulExpressionStatement", + "src": "42515:47:40" + }, + { + "nodeType": "YulAssignment", + "src": "42571:139:40", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "42705:4:40" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_6b0d25b2bc527bc6f95ae29b783be3a899152e11d3bc0d29d07090dd4e4bb2b5_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "42579:124:40" + }, + "nodeType": "YulFunctionCall", + "src": "42579:131:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "42571:4:40" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_6b0d25b2bc527bc6f95ae29b783be3a899152e11d3bc0d29d07090dd4e4bb2b5__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "42449:9:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "42464:4:40", + "type": "" + } + ], + "src": "42298:419:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "42765:52:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "42775:35:40", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "42800:2:40", + "type": "", + "value": "96" + }, + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "42804:5:40" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "42796:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "42796:14:40" + }, + "variableNames": [ + { + "name": "newValue", + "nodeType": "YulIdentifier", + "src": "42775:8:40" + } + ] + } + ] + }, + "name": "shift_left_96", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "42746:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "newValue", + "nodeType": "YulTypedName", + "src": "42756:8:40", + "type": "" + } + ], + "src": "42723:94:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "42870:47:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "42880:31:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "42905:5:40" + } + ], + "functionName": { + "name": "shift_left_96", + "nodeType": "YulIdentifier", + "src": "42891:13:40" + }, + "nodeType": "YulFunctionCall", + "src": "42891:20:40" + }, + "variableNames": [ + { + "name": "aligned", + "nodeType": "YulIdentifier", + "src": "42880:7:40" + } + ] + } + ] + }, + "name": "leftAlign_t_uint160", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "42852:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "aligned", + "nodeType": "YulTypedName", + "src": "42862:7:40", + "type": "" + } + ], + "src": "42823:94:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "42970:53:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "42980:37:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "43011:5:40" + } + ], + "functionName": { + "name": "leftAlign_t_uint160", + "nodeType": "YulIdentifier", + "src": "42991:19:40" + }, + "nodeType": "YulFunctionCall", + "src": "42991:26:40" + }, + "variableNames": [ + { + "name": "aligned", + "nodeType": "YulIdentifier", + "src": "42980:7:40" + } + ] + } + ] + }, + "name": "leftAlign_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "42952:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "aligned", + "nodeType": "YulTypedName", + "src": "42962:7:40", + "type": "" + } + ], + "src": "42923:100:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "43112:74:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "43129:3:40" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "43172:5:40" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "43154:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "43154:24:40" + } + ], + "functionName": { + "name": "leftAlign_t_address", + "nodeType": "YulIdentifier", + "src": "43134:19:40" + }, + "nodeType": "YulFunctionCall", + "src": "43134:45:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "43122:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "43122:58:40" + }, + "nodeType": "YulExpressionStatement", + "src": "43122:58:40" + } + ] + }, + "name": "abi_encode_t_address_to_t_address_nonPadded_inplace_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "43100:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "43107:3:40", + "type": "" + } + ], + "src": "43029:157:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "43305:34:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "43315:18:40", + "value": { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "43330:3:40" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "43315:11:40" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "43277:3:40", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "43282:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "43293:11:40", + "type": "" + } + ], + "src": "43192:147:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "43485:209:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "43495:95:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "43578:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "43583:6:40" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "43502:75:40" + }, + "nodeType": "YulFunctionCall", + "src": "43502:88:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "43495:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "start", + "nodeType": "YulIdentifier", + "src": "43637:5:40" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "43644:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "43649:6:40" + } + ], + "functionName": { + "name": "copy_calldata_to_memory_with_cleanup", + "nodeType": "YulIdentifier", + "src": "43600:36:40" + }, + "nodeType": "YulFunctionCall", + "src": "43600:56:40" + }, + "nodeType": "YulExpressionStatement", + "src": "43600:56:40" + }, + { + "nodeType": "YulAssignment", + "src": "43665:23:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "43676:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "43681:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "43672:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "43672:16:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "43665:3:40" + } + ] + } + ] + }, + "name": "abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "start", + "nodeType": "YulTypedName", + "src": "43458:5:40", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "43465:6:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "43473:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "43481:3:40", + "type": "" + } + ], + "src": "43367:327:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "43872:260:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "43945:6:40" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "43954:3:40" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "43883:61:40" + }, + "nodeType": "YulFunctionCall", + "src": "43883:75:40" + }, + "nodeType": "YulExpressionStatement", + "src": "43883:75:40" + }, + { + "nodeType": "YulAssignment", + "src": "43967:19:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "43978:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "43983:2:40", + "type": "", + "value": "20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "43974:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "43974:12:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "43967:3:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "43996:110:40", + "value": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "44085:6:40" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "44093:6:40" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "44102:3:40" + } + ], + "functionName": { + "name": "abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "44003:81:40" + }, + "nodeType": "YulFunctionCall", + "src": "44003:103:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "43996:3:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "44116:10:40", + "value": { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "44123:3:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "44116:3:40" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_address_t_bytes_calldata_ptr__to_t_address_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "43835:3:40", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "43841:6:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "43849:6:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "43857:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "43868:3:40", + "type": "" + } + ], + "src": "43700:432:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "44244:61:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "44266:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "44274:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "44262:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "44262:14:40" + }, + { + "hexValue": "77726f6e67207265736f75726365206964", + "kind": "string", + "nodeType": "YulLiteral", + "src": "44278:19:40", + "type": "", + "value": "wrong resource id" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "44255:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "44255:43:40" + }, + "nodeType": "YulExpressionStatement", + "src": "44255:43:40" + } + ] + }, + "name": "store_literal_in_memory_6f5f0c76e88f1c140f3e9c711e5c310ff25b0603c6ab9a22a7e2208facd52f66", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "44236:6:40", + "type": "" + } + ], + "src": "44138:167:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "44457:220:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "44467:74:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "44533:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "44538:2:40", + "type": "", + "value": "17" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "44474:58:40" + }, + "nodeType": "YulFunctionCall", + "src": "44474:67:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "44467:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "44639:3:40" + } + ], + "functionName": { + "name": "store_literal_in_memory_6f5f0c76e88f1c140f3e9c711e5c310ff25b0603c6ab9a22a7e2208facd52f66", + "nodeType": "YulIdentifier", + "src": "44550:88:40" + }, + "nodeType": "YulFunctionCall", + "src": "44550:93:40" + }, + "nodeType": "YulExpressionStatement", + "src": "44550:93:40" + }, + { + "nodeType": "YulAssignment", + "src": "44652:19:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "44663:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "44668:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "44659:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "44659:12:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "44652:3:40" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_6f5f0c76e88f1c140f3e9c711e5c310ff25b0603c6ab9a22a7e2208facd52f66_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "44445:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "44453:3:40", + "type": "" + } + ], + "src": "44311:366:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "44854:248:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "44864:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "44876:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "44887:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "44872:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "44872:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "44864:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "44911:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "44922:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "44907:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "44907:17:40" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "44930:4:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "44936:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "44926:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "44926:20:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "44900:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "44900:47:40" + }, + "nodeType": "YulExpressionStatement", + "src": "44900:47:40" + }, + { + "nodeType": "YulAssignment", + "src": "44956:139:40", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "45090:4:40" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_6f5f0c76e88f1c140f3e9c711e5c310ff25b0603c6ab9a22a7e2208facd52f66_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "44964:124:40" + }, + "nodeType": "YulFunctionCall", + "src": "44964:131:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "44956:4:40" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_6f5f0c76e88f1c140f3e9c711e5c310ff25b0603c6ab9a22a7e2208facd52f66__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "44834:9:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "44849:4:40", + "type": "" + } + ], + "src": "44683:419:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "45214:127:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "45236:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "45244:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "45232:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "45232:14:40" + }, + { + "hexValue": "70726f706f73616c20616c7265616479207472616e736665727265642f6e6f74", + "kind": "string", + "nodeType": "YulLiteral", + "src": "45248:34:40", + "type": "", + "value": "proposal already transferred/not" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "45225:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "45225:58:40" + }, + "nodeType": "YulExpressionStatement", + "src": "45225:58:40" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "45304:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "45312:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "45300:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "45300:15:40" + }, + { + "hexValue": "2066696e616c697a656420796574", + "kind": "string", + "nodeType": "YulLiteral", + "src": "45317:16:40", + "type": "", + "value": " finalized yet" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "45293:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "45293:41:40" + }, + "nodeType": "YulExpressionStatement", + "src": "45293:41:40" + } + ] + }, + "name": "store_literal_in_memory_99947723bb2aab9f1adafa6512ffb2988cfd5728a2666cb670b21fa44ce4eb80", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "45206:6:40", + "type": "" + } + ], + "src": "45108:233:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "45493:220:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "45503:74:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "45569:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "45574:2:40", + "type": "", + "value": "46" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "45510:58:40" + }, + "nodeType": "YulFunctionCall", + "src": "45510:67:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "45503:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "45675:3:40" + } + ], + "functionName": { + "name": "store_literal_in_memory_99947723bb2aab9f1adafa6512ffb2988cfd5728a2666cb670b21fa44ce4eb80", + "nodeType": "YulIdentifier", + "src": "45586:88:40" + }, + "nodeType": "YulFunctionCall", + "src": "45586:93:40" + }, + "nodeType": "YulExpressionStatement", + "src": "45586:93:40" + }, + { + "nodeType": "YulAssignment", + "src": "45688:19:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "45699:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "45704:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "45695:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "45695:12:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "45688:3:40" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_99947723bb2aab9f1adafa6512ffb2988cfd5728a2666cb670b21fa44ce4eb80_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "45481:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "45489:3:40", + "type": "" + } + ], + "src": "45347:366:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "45890:248:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "45900:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "45912:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "45923:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "45908:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "45908:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "45900:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "45947:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "45958:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "45943:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "45943:17:40" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "45966:4:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "45972:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "45962:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "45962:20:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "45936:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "45936:47:40" + }, + "nodeType": "YulExpressionStatement", + "src": "45936:47:40" + }, + { + "nodeType": "YulAssignment", + "src": "45992:139:40", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "46126:4:40" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_99947723bb2aab9f1adafa6512ffb2988cfd5728a2666cb670b21fa44ce4eb80_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "46000:124:40" + }, + "nodeType": "YulFunctionCall", + "src": "46000:131:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "45992:4:40" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_99947723bb2aab9f1adafa6512ffb2988cfd5728a2666cb670b21fa44ce4eb80__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "45870:9:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "45885:4:40", + "type": "" + } + ], + "src": "45719:419:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "46250:68:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "46272:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "46280:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "46268:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "46268:14:40" + }, + { + "hexValue": "457865637574696f6e206e6f74207375636365737366756c", + "kind": "string", + "nodeType": "YulLiteral", + "src": "46284:26:40", + "type": "", + "value": "Execution not successful" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "46261:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "46261:50:40" + }, + "nodeType": "YulExpressionStatement", + "src": "46261:50:40" + } + ] + }, + "name": "store_literal_in_memory_35c2d882454253e6997a6106044c4f379bd2b80e16b0fad01935e624ef5bb69d", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "46242:6:40", + "type": "" + } + ], + "src": "46144:174:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "46470:220:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "46480:74:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "46546:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "46551:2:40", + "type": "", + "value": "24" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "46487:58:40" + }, + "nodeType": "YulFunctionCall", + "src": "46487:67:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "46480:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "46652:3:40" + } + ], + "functionName": { + "name": "store_literal_in_memory_35c2d882454253e6997a6106044c4f379bd2b80e16b0fad01935e624ef5bb69d", + "nodeType": "YulIdentifier", + "src": "46563:88:40" + }, + "nodeType": "YulFunctionCall", + "src": "46563:93:40" + }, + "nodeType": "YulExpressionStatement", + "src": "46563:93:40" + }, + { + "nodeType": "YulAssignment", + "src": "46665:19:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "46676:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "46681:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "46672:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "46672:12:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "46665:3:40" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_35c2d882454253e6997a6106044c4f379bd2b80e16b0fad01935e624ef5bb69d_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "46458:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "46466:3:40", + "type": "" + } + ], + "src": "46324:366:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "46867:248:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "46877:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "46889:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "46900:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "46885:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "46885:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "46877:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "46924:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "46935:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "46920:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "46920:17:40" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "46943:4:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "46949:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "46939:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "46939:20:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "46913:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "46913:47:40" + }, + "nodeType": "YulExpressionStatement", + "src": "46913:47:40" + }, + { + "nodeType": "YulAssignment", + "src": "46969:139:40", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "47103:4:40" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_35c2d882454253e6997a6106044c4f379bd2b80e16b0fad01935e624ef5bb69d_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "46977:124:40" + }, + "nodeType": "YulFunctionCall", + "src": "46977:131:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "46969:4:40" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_35c2d882454253e6997a6106044c4f379bd2b80e16b0fad01935e624ef5bb69d__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "46847:9:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "46862:4:40", + "type": "" + } + ], + "src": "46696:419:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "47227:119:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "47249:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "47257:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "47245:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "47245:14:40" + }, + { + "hexValue": "6c656e677468206f66206164647265737320616e6420616d6f756e7473206469", + "kind": "string", + "nodeType": "YulLiteral", + "src": "47261:34:40", + "type": "", + "value": "length of address and amounts di" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "47238:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "47238:58:40" + }, + "nodeType": "YulExpressionStatement", + "src": "47238:58:40" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "47317:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "47325:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "47313:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "47313:15:40" + }, + { + "hexValue": "736d61746368", + "kind": "string", + "nodeType": "YulLiteral", + "src": "47330:8:40", + "type": "", + "value": "smatch" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "47306:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "47306:33:40" + }, + "nodeType": "YulExpressionStatement", + "src": "47306:33:40" + } + ] + }, + "name": "store_literal_in_memory_073bceac60cfe31ff4e1652a9ed1958ffac9b37b9b2d1e976a3ea18c79e0f6fb", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "47219:6:40", + "type": "" + } + ], + "src": "47121:225:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "47498:220:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "47508:74:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "47574:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "47579:2:40", + "type": "", + "value": "38" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "47515:58:40" + }, + "nodeType": "YulFunctionCall", + "src": "47515:67:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "47508:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "47680:3:40" + } + ], + "functionName": { + "name": "store_literal_in_memory_073bceac60cfe31ff4e1652a9ed1958ffac9b37b9b2d1e976a3ea18c79e0f6fb", + "nodeType": "YulIdentifier", + "src": "47591:88:40" + }, + "nodeType": "YulFunctionCall", + "src": "47591:93:40" + }, + "nodeType": "YulExpressionStatement", + "src": "47591:93:40" + }, + { + "nodeType": "YulAssignment", + "src": "47693:19:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "47704:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "47709:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "47700:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "47700:12:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "47693:3:40" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_073bceac60cfe31ff4e1652a9ed1958ffac9b37b9b2d1e976a3ea18c79e0f6fb_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "47486:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "47494:3:40", + "type": "" + } + ], + "src": "47352:366:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "47895:248:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "47905:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "47917:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "47928:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "47913:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "47913:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "47905:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "47952:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "47963:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "47948:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "47948:17:40" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "47971:4:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "47977:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "47967:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "47967:20:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "47941:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "47941:47:40" + }, + "nodeType": "YulExpressionStatement", + "src": "47941:47:40" + }, + { + "nodeType": "YulAssignment", + "src": "47997:139:40", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "48131:4:40" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_073bceac60cfe31ff4e1652a9ed1958ffac9b37b9b2d1e976a3ea18c79e0f6fb_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "48005:124:40" + }, + "nodeType": "YulFunctionCall", + "src": "48005:131:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "47997:4:40" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_073bceac60cfe31ff4e1652a9ed1958ffac9b37b9b2d1e976a3ea18c79e0f6fb__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "47875:9:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "47890:4:40", + "type": "" + } + ], + "src": "47724:419:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "48177:152:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "48194:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "48197:77:40", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "48187:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "48187:88:40" + }, + "nodeType": "YulExpressionStatement", + "src": "48187:88:40" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "48291:1:40", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "48294:4:40", + "type": "", + "value": "0x32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "48284:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "48284:15:40" + }, + "nodeType": "YulExpressionStatement", + "src": "48284:15:40" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "48315:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "48318:4:40", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "48308:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "48308:15:40" + }, + "nodeType": "YulExpressionStatement", + "src": "48308:15:40" + } + ] + }, + "name": "panic_error_0x32", + "nodeType": "YulFunctionDefinition", + "src": "48149:180:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "48388:51:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "48398:35:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "48427:5:40" + } + ], + "functionName": { + "name": "cleanup_t_uint160", + "nodeType": "YulIdentifier", + "src": "48409:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "48409:24:40" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "48398:7:40" + } + ] + } + ] + }, + "name": "cleanup_t_address_payable", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "48370:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "48380:7:40", + "type": "" + } + ], + "src": "48335:104:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "48496:87:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "48561:16:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "48570:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "48573:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "48563:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "48563:12:40" + }, + "nodeType": "YulExpressionStatement", + "src": "48563:12:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "48519:5:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "48552:5:40" + } + ], + "functionName": { + "name": "cleanup_t_address_payable", + "nodeType": "YulIdentifier", + "src": "48526:25:40" + }, + "nodeType": "YulFunctionCall", + "src": "48526:32:40" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "48516:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "48516:43:40" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "48509:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "48509:51:40" + }, + "nodeType": "YulIf", + "src": "48506:71:40" + } + ] + }, + "name": "validator_revert_t_address_payable", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "48489:5:40", + "type": "" + } + ], + "src": "48445:138:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "48649:95:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "48659:29:40", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "48681:6:40" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "48668:12:40" + }, + "nodeType": "YulFunctionCall", + "src": "48668:20:40" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "48659:5:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "48732:5:40" + } + ], + "functionName": { + "name": "validator_revert_t_address_payable", + "nodeType": "YulIdentifier", + "src": "48697:34:40" + }, + "nodeType": "YulFunctionCall", + "src": "48697:41:40" + }, + "nodeType": "YulExpressionStatement", + "src": "48697:41:40" + } + ] + }, + "name": "abi_decode_t_address_payable", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "48627:6:40", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "48635:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "48643:5:40", + "type": "" + } + ], + "src": "48589:155:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "48824:271:40", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "48870:83:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "48872:77:40" + }, + "nodeType": "YulFunctionCall", + "src": "48872:79:40" + }, + "nodeType": "YulExpressionStatement", + "src": "48872:79:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "48845:7:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "48854:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "48841:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "48841:23:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "48866:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "48837:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "48837:32:40" + }, + "nodeType": "YulIf", + "src": "48834:119:40" + }, + { + "nodeType": "YulBlock", + "src": "48963:125:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "48978:15:40", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "48992:1:40", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "48982:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "49007:71:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "49050:9:40" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "49061:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "49046:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "49046:22:40" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "49070:7:40" + } + ], + "functionName": { + "name": "abi_decode_t_address_payable", + "nodeType": "YulIdentifier", + "src": "49017:28:40" + }, + "nodeType": "YulFunctionCall", + "src": "49017:61:40" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "49007:6:40" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address_payable", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "48794:9:40", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "48805:7:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "48817:6:40", + "type": "" + } + ], + "src": "48750:345:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "49144:190:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "49154:33:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "49181:5:40" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "49163:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "49163:24:40" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "49154:5:40" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "49277:22:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "49279:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "49279:18:40" + }, + "nodeType": "YulExpressionStatement", + "src": "49279:18:40" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "49202:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "49209:66:40", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "49199:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "49199:77:40" + }, + "nodeType": "YulIf", + "src": "49196:103:40" + }, + { + "nodeType": "YulAssignment", + "src": "49308:20:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "49319:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "49326:1:40", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "49315:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "49315:13:40" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "49308:3:40" + } + ] + } + ] + }, + "name": "increment_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "49130:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nodeType": "YulTypedName", + "src": "49140:3:40", + "type": "" + } + ], + "src": "49101:233:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "49494:288:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "49504:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "49516:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "49527:2:40", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "49512:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "49512:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "49504:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "49584:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "49597:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "49608:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "49593:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "49593:17:40" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "49540:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "49540:71:40" + }, + "nodeType": "YulExpressionStatement", + "src": "49540:71:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "49665:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "49678:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "49689:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "49674:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "49674:18:40" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "49621:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "49621:72:40" + }, + "nodeType": "YulExpressionStatement", + "src": "49621:72:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "49747:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "49760:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "49771:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "49756:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "49756:18:40" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "49703:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "49703:72:40" + }, + "nodeType": "YulExpressionStatement", + "src": "49703:72:40" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "49450:9:40", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "49462:6:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "49470:6:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "49478:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "49489:4:40", + "type": "" + } + ], + "src": "49340:442:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "49894:75:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "49916:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "49924:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "49912:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "49912:14:40" + }, + { + "hexValue": "43757272656e742066656520697320657175616c20746f206e657720666565", + "kind": "string", + "nodeType": "YulLiteral", + "src": "49928:33:40", + "type": "", + "value": "Current fee is equal to new fee" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "49905:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "49905:57:40" + }, + "nodeType": "YulExpressionStatement", + "src": "49905:57:40" + } + ] + }, + "name": "store_literal_in_memory_db095f13e245243418ee9a5b7ae0408e2f6a2092be336cf2ec7b5f2ae85b9133", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "49886:6:40", + "type": "" + } + ], + "src": "49788:181:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "50121:220:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "50131:74:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "50197:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "50202:2:40", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "50138:58:40" + }, + "nodeType": "YulFunctionCall", + "src": "50138:67:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "50131:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "50303:3:40" + } + ], + "functionName": { + "name": "store_literal_in_memory_db095f13e245243418ee9a5b7ae0408e2f6a2092be336cf2ec7b5f2ae85b9133", + "nodeType": "YulIdentifier", + "src": "50214:88:40" + }, + "nodeType": "YulFunctionCall", + "src": "50214:93:40" + }, + "nodeType": "YulExpressionStatement", + "src": "50214:93:40" + }, + { + "nodeType": "YulAssignment", + "src": "50316:19:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "50327:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "50332:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "50323:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "50323:12:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "50316:3:40" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_db095f13e245243418ee9a5b7ae0408e2f6a2092be336cf2ec7b5f2ae85b9133_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "50109:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "50117:3:40", + "type": "" + } + ], + "src": "49975:366:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "50518:248:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "50528:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "50540:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "50551:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "50536:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "50536:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "50528:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "50575:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "50586:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "50571:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "50571:17:40" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "50594:4:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "50600:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "50590:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "50590:20:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "50564:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "50564:47:40" + }, + "nodeType": "YulExpressionStatement", + "src": "50564:47:40" + }, + { + "nodeType": "YulAssignment", + "src": "50620:139:40", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "50754:4:40" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_db095f13e245243418ee9a5b7ae0408e2f6a2092be336cf2ec7b5f2ae85b9133_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "50628:124:40" + }, + "nodeType": "YulFunctionCall", + "src": "50628:131:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "50620:4:40" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_db095f13e245243418ee9a5b7ae0408e2f6a2092be336cf2ec7b5f2ae85b9133__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "50498:9:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "50513:4:40", + "type": "" + } + ], + "src": "50347:419:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "50878:75:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "50900:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "50908:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "50896:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "50896:14:40" + }, + { + "hexValue": "6164647220646f65736e277420686176652072656c6179657220726f6c6521", + "kind": "string", + "nodeType": "YulLiteral", + "src": "50912:33:40", + "type": "", + "value": "addr doesn't have relayer role!" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "50889:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "50889:57:40" + }, + "nodeType": "YulExpressionStatement", + "src": "50889:57:40" + } + ] + }, + "name": "store_literal_in_memory_1399520dec2ce6448b61ea4bb9d4980c6bfff25cd5836058c07edd3d56f94864", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "50870:6:40", + "type": "" + } + ], + "src": "50772:181:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "51105:220:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "51115:74:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "51181:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "51186:2:40", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "51122:58:40" + }, + "nodeType": "YulFunctionCall", + "src": "51122:67:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "51115:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "51287:3:40" + } + ], + "functionName": { + "name": "store_literal_in_memory_1399520dec2ce6448b61ea4bb9d4980c6bfff25cd5836058c07edd3d56f94864", + "nodeType": "YulIdentifier", + "src": "51198:88:40" + }, + "nodeType": "YulFunctionCall", + "src": "51198:93:40" + }, + "nodeType": "YulExpressionStatement", + "src": "51198:93:40" + }, + { + "nodeType": "YulAssignment", + "src": "51300:19:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "51311:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "51316:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "51307:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "51307:12:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "51300:3:40" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_1399520dec2ce6448b61ea4bb9d4980c6bfff25cd5836058c07edd3d56f94864_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "51093:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "51101:3:40", + "type": "" + } + ], + "src": "50959:366:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "51502:248:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "51512:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "51524:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "51535:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "51520:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "51520:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "51512:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "51559:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "51570:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "51555:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "51555:17:40" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "51578:4:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "51584:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "51574:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "51574:20:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "51548:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "51548:47:40" + }, + "nodeType": "YulExpressionStatement", + "src": "51548:47:40" + }, + { + "nodeType": "YulAssignment", + "src": "51604:139:40", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "51738:4:40" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_1399520dec2ce6448b61ea4bb9d4980c6bfff25cd5836058c07edd3d56f94864_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "51612:124:40" + }, + "nodeType": "YulFunctionCall", + "src": "51612:131:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "51604:4:40" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_1399520dec2ce6448b61ea4bb9d4980c6bfff25cd5836058c07edd3d56f94864__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "51482:9:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "51497:4:40", + "type": "" + } + ], + "src": "51331:419:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "51862:75:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "51884:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "51892:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "51880:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "51880:14:40" + }, + { + "hexValue": "6164647220616c726561647920686173206578656375746f7220726f6c6521", + "kind": "string", + "nodeType": "YulLiteral", + "src": "51896:33:40", + "type": "", + "value": "addr already has executor role!" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "51873:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "51873:57:40" + }, + "nodeType": "YulExpressionStatement", + "src": "51873:57:40" + } + ] + }, + "name": "store_literal_in_memory_17505cadfef6950655e77b3a6cee1f047e0d156f50464790c284ae45de718085", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "51854:6:40", + "type": "" + } + ], + "src": "51756:181:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "52089:220:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "52099:74:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "52165:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "52170:2:40", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "52106:58:40" + }, + "nodeType": "YulFunctionCall", + "src": "52106:67:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "52099:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "52271:3:40" + } + ], + "functionName": { + "name": "store_literal_in_memory_17505cadfef6950655e77b3a6cee1f047e0d156f50464790c284ae45de718085", + "nodeType": "YulIdentifier", + "src": "52182:88:40" + }, + "nodeType": "YulFunctionCall", + "src": "52182:93:40" + }, + "nodeType": "YulExpressionStatement", + "src": "52182:93:40" + }, + { + "nodeType": "YulAssignment", + "src": "52284:19:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "52295:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "52300:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "52291:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "52291:12:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "52284:3:40" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_17505cadfef6950655e77b3a6cee1f047e0d156f50464790c284ae45de718085_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "52077:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "52085:3:40", + "type": "" + } + ], + "src": "51943:366:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "52486:248:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "52496:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "52508:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "52519:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "52504:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "52504:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "52496:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "52543:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "52554:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "52539:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "52539:17:40" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "52562:4:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "52568:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "52558:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "52558:20:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "52532:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "52532:47:40" + }, + "nodeType": "YulExpressionStatement", + "src": "52532:47:40" + }, + { + "nodeType": "YulAssignment", + "src": "52588:139:40", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "52722:4:40" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_17505cadfef6950655e77b3a6cee1f047e0d156f50464790c284ae45de718085_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "52596:124:40" + }, + "nodeType": "YulFunctionCall", + "src": "52596:131:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "52588:4:40" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_17505cadfef6950655e77b3a6cee1f047e0d156f50464790c284ae45de718085__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "52466:9:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "52481:4:40", + "type": "" + } + ], + "src": "52315:419:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "52846:69:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "52868:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "52876:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "52864:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "52864:14:40" + }, + { + "hexValue": "6e6f2068616e646c657220666f72207265736f757263654944", + "kind": "string", + "nodeType": "YulLiteral", + "src": "52880:27:40", + "type": "", + "value": "no handler for resourceID" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "52857:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "52857:51:40" + }, + "nodeType": "YulExpressionStatement", + "src": "52857:51:40" + } + ] + }, + "name": "store_literal_in_memory_e9d3c8def96ec5b61b3d5e8e38d358587f69ed955aa1f36ba2f95c28a40ffe20", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "52838:6:40", + "type": "" + } + ], + "src": "52740:175:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "53067:220:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "53077:74:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "53143:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "53148:2:40", + "type": "", + "value": "25" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "53084:58:40" + }, + "nodeType": "YulFunctionCall", + "src": "53084:67:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "53077:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "53249:3:40" + } + ], + "functionName": { + "name": "store_literal_in_memory_e9d3c8def96ec5b61b3d5e8e38d358587f69ed955aa1f36ba2f95c28a40ffe20", + "nodeType": "YulIdentifier", + "src": "53160:88:40" + }, + "nodeType": "YulFunctionCall", + "src": "53160:93:40" + }, + "nodeType": "YulExpressionStatement", + "src": "53160:93:40" + }, + { + "nodeType": "YulAssignment", + "src": "53262:19:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "53273:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "53278:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "53269:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "53269:12:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "53262:3:40" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_e9d3c8def96ec5b61b3d5e8e38d358587f69ed955aa1f36ba2f95c28a40ffe20_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "53055:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "53063:3:40", + "type": "" + } + ], + "src": "52921:366:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "53464:248:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "53474:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "53486:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "53497:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "53482:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "53482:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "53474:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "53521:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "53532:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "53517:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "53517:17:40" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "53540:4:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "53546:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "53536:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "53536:20:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "53510:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "53510:47:40" + }, + "nodeType": "YulExpressionStatement", + "src": "53510:47:40" + }, + { + "nodeType": "YulAssignment", + "src": "53566:139:40", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "53700:4:40" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_e9d3c8def96ec5b61b3d5e8e38d358587f69ed955aa1f36ba2f95c28a40ffe20_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "53574:124:40" + }, + "nodeType": "YulFunctionCall", + "src": "53574:131:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "53566:4:40" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_e9d3c8def96ec5b61b3d5e8e38d358587f69ed955aa1f36ba2f95c28a40ffe20__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "53444:9:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "53459:4:40", + "type": "" + } + ], + "src": "53293:419:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "53824:123:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "53846:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "53854:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "53842:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "53842:14:40" + }, + { + "hexValue": "70726f706f73616c20616c7265616479207061737365642f6578656375746564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "53858:34:40", + "type": "", + "value": "proposal already passed/executed" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "53835:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "53835:58:40" + }, + "nodeType": "YulExpressionStatement", + "src": "53835:58:40" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "53914:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "53922:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "53910:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "53910:15:40" + }, + { + "hexValue": "2f63616e63656c6c6564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "53927:12:40", + "type": "", + "value": "/cancelled" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "53903:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "53903:37:40" + }, + "nodeType": "YulExpressionStatement", + "src": "53903:37:40" + } + ] + }, + "name": "store_literal_in_memory_c48a67927cb12b6986df316341a7e026082eb20c4db86a85c59231eb345d8194", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "53816:6:40", + "type": "" + } + ], + "src": "53718:229:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "54099:220:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "54109:74:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "54175:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "54180:2:40", + "type": "", + "value": "42" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "54116:58:40" + }, + "nodeType": "YulFunctionCall", + "src": "54116:67:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "54109:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "54281:3:40" + } + ], + "functionName": { + "name": "store_literal_in_memory_c48a67927cb12b6986df316341a7e026082eb20c4db86a85c59231eb345d8194", + "nodeType": "YulIdentifier", + "src": "54192:88:40" + }, + "nodeType": "YulFunctionCall", + "src": "54192:93:40" + }, + "nodeType": "YulExpressionStatement", + "src": "54192:93:40" + }, + { + "nodeType": "YulAssignment", + "src": "54294:19:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "54305:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "54310:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "54301:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "54301:12:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "54294:3:40" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_c48a67927cb12b6986df316341a7e026082eb20c4db86a85c59231eb345d8194_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "54087:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "54095:3:40", + "type": "" + } + ], + "src": "53953:366:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "54496:248:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "54506:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "54518:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "54529:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "54514:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "54514:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "54506:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "54553:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "54564:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "54549:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "54549:17:40" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "54572:4:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "54578:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "54568:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "54568:20:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "54542:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "54542:47:40" + }, + "nodeType": "YulExpressionStatement", + "src": "54542:47:40" + }, + { + "nodeType": "YulAssignment", + "src": "54598:139:40", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "54732:4:40" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_c48a67927cb12b6986df316341a7e026082eb20c4db86a85c59231eb345d8194_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "54606:124:40" + }, + "nodeType": "YulFunctionCall", + "src": "54606:131:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "54598:4:40" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_c48a67927cb12b6986df316341a7e026082eb20c4db86a85c59231eb345d8194__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "54476:9:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "54491:4:40", + "type": "" + } + ], + "src": "54325:419:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "54856:65:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "54878:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "54886:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "54874:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "54874:14:40" + }, + { + "hexValue": "72656c6179657220616c726561647920766f746564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "54890:23:40", + "type": "", + "value": "relayer already voted" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "54867:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "54867:47:40" + }, + "nodeType": "YulExpressionStatement", + "src": "54867:47:40" + } + ] + }, + "name": "store_literal_in_memory_0bc9c5100729666c219a147072032fe3fda273fedfa160b31a35f38bd9d0632b", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "54848:6:40", + "type": "" + } + ], + "src": "54750:171:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "55073:220:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "55083:74:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "55149:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "55154:2:40", + "type": "", + "value": "21" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "55090:58:40" + }, + "nodeType": "YulFunctionCall", + "src": "55090:67:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "55083:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "55255:3:40" + } + ], + "functionName": { + "name": "store_literal_in_memory_0bc9c5100729666c219a147072032fe3fda273fedfa160b31a35f38bd9d0632b", + "nodeType": "YulIdentifier", + "src": "55166:88:40" + }, + "nodeType": "YulFunctionCall", + "src": "55166:93:40" + }, + "nodeType": "YulExpressionStatement", + "src": "55166:93:40" + }, + { + "nodeType": "YulAssignment", + "src": "55268:19:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "55279:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "55284:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "55275:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "55275:12:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "55268:3:40" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_0bc9c5100729666c219a147072032fe3fda273fedfa160b31a35f38bd9d0632b_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "55061:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "55069:3:40", + "type": "" + } + ], + "src": "54927:366:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "55470:248:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "55480:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "55492:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "55503:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "55488:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "55488:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "55480:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "55527:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "55538:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "55523:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "55523:17:40" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "55546:4:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "55552:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "55542:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "55542:20:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "55516:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "55516:47:40" + }, + "nodeType": "YulExpressionStatement", + "src": "55516:47:40" + }, + { + "nodeType": "YulAssignment", + "src": "55572:139:40", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "55706:4:40" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_0bc9c5100729666c219a147072032fe3fda273fedfa160b31a35f38bd9d0632b_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "55580:124:40" + }, + "nodeType": "YulFunctionCall", + "src": "55580:131:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "55572:4:40" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_0bc9c5100729666c219a147072032fe3fda273fedfa160b31a35f38bd9d0632b__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "55450:9:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "55465:4:40", + "type": "" + } + ], + "src": "55299:419:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "55830:130:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "55852:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "55860:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "55848:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "55848:14:40" + }, + { + "hexValue": "4368656174696e67205269736b3b2052656c6179657220766f74652077697468", + "kind": "string", + "nodeType": "YulLiteral", + "src": "55864:34:40", + "type": "", + "value": "Cheating Risk; Relayer vote with" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "55841:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "55841:58:40" + }, + "nodeType": "YulExpressionStatement", + "src": "55841:58:40" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "55920:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "55928:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "55916:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "55916:15:40" + }, + { + "hexValue": "2077726f6e67207265736f757263654944", + "kind": "string", + "nodeType": "YulLiteral", + "src": "55933:19:40", + "type": "", + "value": " wrong resourceID" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "55909:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "55909:44:40" + }, + "nodeType": "YulExpressionStatement", + "src": "55909:44:40" + } + ] + }, + "name": "store_literal_in_memory_3ca28279e933d133e5e14119fc1dd87d7dc7c6fddf46d790067cbb252463d448", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "55822:6:40", + "type": "" + } + ], + "src": "55724:236:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "56112:220:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "56122:74:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "56188:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "56193:2:40", + "type": "", + "value": "49" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "56129:58:40" + }, + "nodeType": "YulFunctionCall", + "src": "56129:67:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "56122:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "56294:3:40" + } + ], + "functionName": { + "name": "store_literal_in_memory_3ca28279e933d133e5e14119fc1dd87d7dc7c6fddf46d790067cbb252463d448", + "nodeType": "YulIdentifier", + "src": "56205:88:40" + }, + "nodeType": "YulFunctionCall", + "src": "56205:93:40" + }, + "nodeType": "YulExpressionStatement", + "src": "56205:93:40" + }, + { + "nodeType": "YulAssignment", + "src": "56307:19:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "56318:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "56323:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "56314:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "56314:12:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "56307:3:40" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_3ca28279e933d133e5e14119fc1dd87d7dc7c6fddf46d790067cbb252463d448_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "56100:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "56108:3:40", + "type": "" + } + ], + "src": "55966:366:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "56509:248:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "56519:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "56531:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "56542:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "56527:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "56527:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "56519:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "56566:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "56577:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "56562:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "56562:17:40" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "56585:4:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "56591:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "56581:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "56581:20:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "56555:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "56555:47:40" + }, + "nodeType": "YulExpressionStatement", + "src": "56555:47:40" + }, + { + "nodeType": "YulAssignment", + "src": "56611:139:40", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "56745:4:40" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_3ca28279e933d133e5e14119fc1dd87d7dc7c6fddf46d790067cbb252463d448_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "56619:124:40" + }, + "nodeType": "YulFunctionCall", + "src": "56619:131:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "56611:4:40" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_3ca28279e933d133e5e14119fc1dd87d7dc7c6fddf46d790067cbb252463d448__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "56489:9:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "56504:4:40", + "type": "" + } + ], + "src": "56338:419:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "56889:206:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "56899:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "56911:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "56922:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "56907:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "56907:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "56899:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "56979:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "56992:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "57003:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "56988:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "56988:17:40" + } + ], + "functionName": { + "name": "abi_encode_t_bytes32_to_t_bytes32_fromStack", + "nodeType": "YulIdentifier", + "src": "56935:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "56935:71:40" + }, + "nodeType": "YulExpressionStatement", + "src": "56935:71:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "57060:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "57073:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "57084:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "57069:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "57069:18:40" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "57016:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "57016:72:40" + }, + "nodeType": "YulExpressionStatement", + "src": "57016:72:40" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "56853:9:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "56865:6:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "56873:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "56884:4:40", + "type": "" + } + ], + "src": "56763:332:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "57207:74:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "57229:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "57237:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "57225:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "57225:14:40" + }, + { + "hexValue": "6164647220616c7265616479206861732072656c6179657220726f6c6521", + "kind": "string", + "nodeType": "YulLiteral", + "src": "57241:32:40", + "type": "", + "value": "addr already has relayer role!" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "57218:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "57218:56:40" + }, + "nodeType": "YulExpressionStatement", + "src": "57218:56:40" + } + ] + }, + "name": "store_literal_in_memory_8513154392cb347d26f1716c23a55342a9b762f4522b7062343455b658c92c85", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "57199:6:40", + "type": "" + } + ], + "src": "57101:180:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "57433:220:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "57443:74:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "57509:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "57514:2:40", + "type": "", + "value": "30" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "57450:58:40" + }, + "nodeType": "YulFunctionCall", + "src": "57450:67:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "57443:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "57615:3:40" + } + ], + "functionName": { + "name": "store_literal_in_memory_8513154392cb347d26f1716c23a55342a9b762f4522b7062343455b658c92c85", + "nodeType": "YulIdentifier", + "src": "57526:88:40" + }, + "nodeType": "YulFunctionCall", + "src": "57526:93:40" + }, + "nodeType": "YulExpressionStatement", + "src": "57526:93:40" + }, + { + "nodeType": "YulAssignment", + "src": "57628:19:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "57639:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "57644:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "57635:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "57635:12:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "57628:3:40" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_8513154392cb347d26f1716c23a55342a9b762f4522b7062343455b658c92c85_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "57421:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "57429:3:40", + "type": "" + } + ], + "src": "57287:366:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "57830:248:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "57840:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "57852:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "57863:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "57848:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "57848:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "57840:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "57887:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "57898:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "57883:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "57883:17:40" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "57906:4:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "57912:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "57902:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "57902:20:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "57876:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "57876:47:40" + }, + "nodeType": "YulExpressionStatement", + "src": "57876:47:40" + }, + { + "nodeType": "YulAssignment", + "src": "57932:139:40", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "58066:4:40" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_8513154392cb347d26f1716c23a55342a9b762f4522b7062343455b658c92c85_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "57940:124:40" + }, + "nodeType": "YulFunctionCall", + "src": "57940:131:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "57932:4:40" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_8513154392cb347d26f1716c23a55342a9b762f4522b7062343455b658c92c85__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "57810:9:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "57825:4:40", + "type": "" + } + ], + "src": "57659:419:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "58147:52:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "58164:3:40" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "58186:5:40" + } + ], + "functionName": { + "name": "cleanup_t_bytes4", + "nodeType": "YulIdentifier", + "src": "58169:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "58169:23:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "58157:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "58157:36:40" + }, + "nodeType": "YulExpressionStatement", + "src": "58157:36:40" + } + ] + }, + "name": "abi_encode_t_bytes4_to_t_bytes4_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "58135:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "58142:3:40", + "type": "" + } + ], + "src": "58084:115:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "58383:367:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "58393:27:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "58405:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "58416:3:40", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "58401:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "58401:19:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "58393:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "58474:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "58487:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "58498:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "58483:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "58483:17:40" + } + ], + "functionName": { + "name": "abi_encode_t_bytes32_to_t_bytes32_fromStack", + "nodeType": "YulIdentifier", + "src": "58430:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "58430:71:40" + }, + "nodeType": "YulExpressionStatement", + "src": "58430:71:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "58555:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "58568:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "58579:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "58564:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "58564:18:40" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "58511:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "58511:72:40" + }, + "nodeType": "YulExpressionStatement", + "src": "58511:72:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "58635:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "58648:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "58659:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "58644:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "58644:18:40" + } + ], + "functionName": { + "name": "abi_encode_t_bytes4_to_t_bytes4_fromStack", + "nodeType": "YulIdentifier", + "src": "58593:41:40" + }, + "nodeType": "YulFunctionCall", + "src": "58593:70:40" + }, + "nodeType": "YulExpressionStatement", + "src": "58593:70:40" + }, + { + "expression": { + "arguments": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "58715:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "58728:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "58739:2:40", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "58724:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "58724:18:40" + } + ], + "functionName": { + "name": "abi_encode_t_bytes4_to_t_bytes4_fromStack", + "nodeType": "YulIdentifier", + "src": "58673:41:40" + }, + "nodeType": "YulFunctionCall", + "src": "58673:70:40" + }, + "nodeType": "YulExpressionStatement", + "src": "58673:70:40" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32_t_address_t_bytes4_t_bytes4__to_t_bytes32_t_address_t_bytes4_t_bytes4__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "58331:9:40", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "58343:6:40", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "58351:6:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "58359:6:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "58367:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "58378:4:40", + "type": "" + } + ], + "src": "58205:545:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "58862:60:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "58884:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "58892:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "58880:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "58880:14:40" + }, + { + "hexValue": "5061757361626c653a20706175736564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "58896:18:40", + "type": "", + "value": "Pausable: paused" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "58873:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "58873:42:40" + }, + "nodeType": "YulExpressionStatement", + "src": "58873:42:40" + } + ] + }, + "name": "store_literal_in_memory_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "58854:6:40", + "type": "" + } + ], + "src": "58756:166:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "59074:220:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "59084:74:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "59150:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "59155:2:40", + "type": "", + "value": "16" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "59091:58:40" + }, + "nodeType": "YulFunctionCall", + "src": "59091:67:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "59084:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "59256:3:40" + } + ], + "functionName": { + "name": "store_literal_in_memory_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a", + "nodeType": "YulIdentifier", + "src": "59167:88:40" + }, + "nodeType": "YulFunctionCall", + "src": "59167:93:40" + }, + "nodeType": "YulExpressionStatement", + "src": "59167:93:40" + }, + { + "nodeType": "YulAssignment", + "src": "59269:19:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "59280:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "59285:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "59276:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "59276:12:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "59269:3:40" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "59062:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "59070:3:40", + "type": "" + } + ], + "src": "58928:366:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "59471:248:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "59481:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "59493:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "59504:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "59489:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "59489:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "59481:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "59528:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "59539:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "59524:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "59524:17:40" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "59547:4:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "59553:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "59543:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "59543:20:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "59517:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "59517:47:40" + }, + "nodeType": "YulExpressionStatement", + "src": "59517:47:40" + }, + { + "nodeType": "YulAssignment", + "src": "59573:139:40", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "59707:4:40" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "59581:124:40" + }, + "nodeType": "YulFunctionCall", + "src": "59581:131:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "59573:4:40" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "59451:9:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "59466:4:40", + "type": "" + } + ], + "src": "59300:419:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "59879:285:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "59889:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "59901:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "59912:2:40", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "59897:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "59897:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "59889:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "59969:6:40" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "59982:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "59993:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "59978:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "59978:17:40" + } + ], + "functionName": { + "name": "abi_encode_t_bytes32_to_t_bytes32_fromStack", + "nodeType": "YulIdentifier", + "src": "59925:43:40" + }, + "nodeType": "YulFunctionCall", + "src": "59925:71:40" + }, + "nodeType": "YulExpressionStatement", + "src": "59925:71:40" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "60017:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "60028:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "60013:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "60013:18:40" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "60037:4:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "60043:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "60033:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "60033:20:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "60006:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "60006:48:40" + }, + "nodeType": "YulExpressionStatement", + "src": "60006:48:40" + }, + { + "nodeType": "YulAssignment", + "src": "60063:94:40", + "value": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "60135:6:40" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "60143:6:40" + }, + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "60152:4:40" + } + ], + "functionName": { + "name": "abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "60071:63:40" + }, + "nodeType": "YulFunctionCall", + "src": "60071:86:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "60063:4:40" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_bytes32_t_bytes_calldata_ptr__to_t_bytes32_t_bytes_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "59835:9:40", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "59847:6:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "59855:6:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "59863:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "59874:4:40", + "type": "" + } + ], + "src": "59725:439:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "60284:34:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "60294:18:40", + "value": { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "60309:3:40" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "60294:11:40" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "60256:3:40", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "60261:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "60272:11:40", + "type": "" + } + ], + "src": "60170:148:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "60430:67:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "60452:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "60460:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "60448:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "60448:14:40" + }, + { + "hexValue": "416363657373436f6e74726f6c3a206163636f756e7420", + "kind": "string", + "nodeType": "YulLiteral", + "src": "60464:25:40", + "type": "", + "value": "AccessControl: account " + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "60441:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "60441:49:40" + }, + "nodeType": "YulExpressionStatement", + "src": "60441:49:40" + } + ] + }, + "name": "store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "60422:6:40", + "type": "" + } + ], + "src": "60324:173:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "60667:238:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "60677:92:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "60761:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "60766:2:40", + "type": "", + "value": "23" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "60684:76:40" + }, + "nodeType": "YulFunctionCall", + "src": "60684:85:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "60677:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "60867:3:40" + } + ], + "functionName": { + "name": "store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874", + "nodeType": "YulIdentifier", + "src": "60778:88:40" + }, + "nodeType": "YulFunctionCall", + "src": "60778:93:40" + }, + "nodeType": "YulExpressionStatement", + "src": "60778:93:40" + }, + { + "nodeType": "YulAssignment", + "src": "60880:19:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "60891:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "60896:2:40", + "type": "", + "value": "23" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "60887:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "60887:12:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "60880:3:40" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "60655:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "60663:3:40", + "type": "" + } + ], + "src": "60503:402:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "60970:40:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "60981:22:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "60997:5:40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "60991:5:40" + }, + "nodeType": "YulFunctionCall", + "src": "60991:12:40" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "60981:6:40" + } + ] + } + ] + }, + "name": "array_length_t_string_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "60953:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "60963:6:40", + "type": "" + } + ], + "src": "60911:99:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "61126:280:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "61136:53:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "61183:5:40" + } + ], + "functionName": { + "name": "array_length_t_string_memory_ptr", + "nodeType": "YulIdentifier", + "src": "61150:32:40" + }, + "nodeType": "YulFunctionCall", + "src": "61150:39:40" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "61140:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "61198:96:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "61282:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "61287:6:40" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "61205:76:40" + }, + "nodeType": "YulFunctionCall", + "src": "61205:89:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "61198:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "61342:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "61349:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "61338:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "61338:16:40" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "61356:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "61361:6:40" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nodeType": "YulIdentifier", + "src": "61303:34:40" + }, + "nodeType": "YulFunctionCall", + "src": "61303:65:40" + }, + "nodeType": "YulExpressionStatement", + "src": "61303:65:40" + }, + { + "nodeType": "YulAssignment", + "src": "61377:23:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "61388:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "61393:6:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "61384:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "61384:16:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "61377:3:40" + } + ] + } + ] + }, + "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "61107:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "61114:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "61122:3:40", + "type": "" + } + ], + "src": "61016:390:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "61518:61:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "61540:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "61548:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "61536:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "61536:14:40" + }, + { + "hexValue": "206973206d697373696e6720726f6c6520", + "kind": "string", + "nodeType": "YulLiteral", + "src": "61552:19:40", + "type": "", + "value": " is missing role " + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "61529:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "61529:43:40" + }, + "nodeType": "YulExpressionStatement", + "src": "61529:43:40" + } + ] + }, + "name": "store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "61510:6:40", + "type": "" + } + ], + "src": "61412:167:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "61749:238:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "61759:92:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "61843:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "61848:2:40", + "type": "", + "value": "17" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "61766:76:40" + }, + "nodeType": "YulFunctionCall", + "src": "61766:85:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "61759:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "61949:3:40" + } + ], + "functionName": { + "name": "store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69", + "nodeType": "YulIdentifier", + "src": "61860:88:40" + }, + "nodeType": "YulFunctionCall", + "src": "61860:93:40" + }, + "nodeType": "YulExpressionStatement", + "src": "61860:93:40" + }, + { + "nodeType": "YulAssignment", + "src": "61962:19:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "61973:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "61978:2:40", + "type": "", + "value": "17" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "61969:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "61969:12:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "61962:3:40" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "61737:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "61745:3:40", + "type": "" + } + ], + "src": "61585:402:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "62379:581:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "62390:155:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "62541:3:40" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "62397:142:40" + }, + "nodeType": "YulFunctionCall", + "src": "62397:148:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "62390:3:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "62555:102:40", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "62644:6:40" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "62653:3:40" + } + ], + "functionName": { + "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "62562:81:40" + }, + "nodeType": "YulFunctionCall", + "src": "62562:95:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "62555:3:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "62667:155:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "62818:3:40" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "62674:142:40" + }, + "nodeType": "YulFunctionCall", + "src": "62674:148:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "62667:3:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "62832:102:40", + "value": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "62921:6:40" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "62930:3:40" + } + ], + "functionName": { + "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "62839:81:40" + }, + "nodeType": "YulFunctionCall", + "src": "62839:95:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "62832:3:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "62944:10:40", + "value": { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "62951:3:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "62944:3:40" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_t_string_memory_ptr_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "62350:3:40", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "62356:6:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "62364:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "62375:3:40", + "type": "" + } + ], + "src": "61993:967:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "63058:285:40", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "63068:53:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "63115:5:40" + } + ], + "functionName": { + "name": "array_length_t_string_memory_ptr", + "nodeType": "YulIdentifier", + "src": "63082:32:40" + }, + "nodeType": "YulFunctionCall", + "src": "63082:39:40" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "63072:6:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "63130:78:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "63196:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "63201:6:40" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "63137:58:40" + }, + "nodeType": "YulFunctionCall", + "src": "63137:71:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "63130:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "63256:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "63263:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "63252:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "63252:16:40" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "63270:3:40" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "63275:6:40" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nodeType": "YulIdentifier", + "src": "63217:34:40" + }, + "nodeType": "YulFunctionCall", + "src": "63217:65:40" + }, + "nodeType": "YulExpressionStatement", + "src": "63217:65:40" + }, + { + "nodeType": "YulAssignment", + "src": "63291:46:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "63302:3:40" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "63329:6:40" + } + ], + "functionName": { + "name": "round_up_to_mul_of_32", + "nodeType": "YulIdentifier", + "src": "63307:21:40" + }, + "nodeType": "YulFunctionCall", + "src": "63307:29:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "63298:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "63298:39:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "63291:3:40" + } + ] + } + ] + }, + "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "63039:5:40", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "63046:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "63054:3:40", + "type": "" + } + ], + "src": "62966:377:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "63467:195:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "63477:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "63489:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "63500:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "63485:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "63485:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "63477:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "63524:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "63535:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "63520:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "63520:17:40" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "63543:4:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "63549:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "63539:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "63539:20:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "63513:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "63513:47:40" + }, + "nodeType": "YulExpressionStatement", + "src": "63513:47:40" + }, + { + "nodeType": "YulAssignment", + "src": "63569:86:40", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "63641:6:40" + }, + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "63650:4:40" + } + ], + "functionName": { + "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "63577:63:40" + }, + "nodeType": "YulFunctionCall", + "src": "63577:78:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "63569:4:40" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "63439:9:40", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "63451:6:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "63462:4:40", + "type": "" + } + ], + "src": "63349:313:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "63774:64:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "63796:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "63804:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "63792:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "63792:14:40" + }, + { + "hexValue": "5061757361626c653a206e6f7420706175736564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "63808:22:40", + "type": "", + "value": "Pausable: not paused" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "63785:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "63785:46:40" + }, + "nodeType": "YulExpressionStatement", + "src": "63785:46:40" + } + ] + }, + "name": "store_literal_in_memory_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "63766:6:40", + "type": "" + } + ], + "src": "63668:170:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "63990:220:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "64000:74:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "64066:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "64071:2:40", + "type": "", + "value": "20" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "64007:58:40" + }, + "nodeType": "YulFunctionCall", + "src": "64007:67:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "64000:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "64172:3:40" + } + ], + "functionName": { + "name": "store_literal_in_memory_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a", + "nodeType": "YulIdentifier", + "src": "64083:88:40" + }, + "nodeType": "YulFunctionCall", + "src": "64083:93:40" + }, + "nodeType": "YulExpressionStatement", + "src": "64083:93:40" + }, + { + "nodeType": "YulAssignment", + "src": "64185:19:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "64196:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "64201:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "64192:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "64192:12:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "64185:3:40" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "63978:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "63986:3:40", + "type": "" + } + ], + "src": "63844:366:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "64387:248:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "64397:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "64409:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "64420:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "64405:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "64405:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "64397:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "64444:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "64455:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "64440:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "64440:17:40" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "64463:4:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "64469:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "64459:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "64459:20:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "64433:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "64433:47:40" + }, + "nodeType": "YulExpressionStatement", + "src": "64433:47:40" + }, + { + "nodeType": "YulAssignment", + "src": "64489:139:40", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "64623:4:40" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "64497:124:40" + }, + "nodeType": "YulFunctionCall", + "src": "64497:131:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "64489:4:40" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "64367:9:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "64382:4:40", + "type": "" + } + ], + "src": "64216:419:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "64689:362:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "64699:25:40", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "64722:1:40" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "64704:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "64704:20:40" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "64699:1:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "64733:25:40", + "value": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "64756:1:40" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "64738:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "64738:20:40" + }, + "variableNames": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "64733:1:40" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "64767:28:40", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "64790:1:40" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "64793:1:40" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "64786:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "64786:9:40" + }, + "variables": [ + { + "name": "product_raw", + "nodeType": "YulTypedName", + "src": "64771:11:40", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "64804:41:40", + "value": { + "arguments": [ + { + "name": "product_raw", + "nodeType": "YulIdentifier", + "src": "64833:11:40" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "64815:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "64815:30:40" + }, + "variableNames": [ + { + "name": "product", + "nodeType": "YulIdentifier", + "src": "64804:7:40" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "65022:22:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "65024:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "65024:18:40" + }, + "nodeType": "YulExpressionStatement", + "src": "65024:18:40" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "64955:1:40" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "64948:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "64948:9:40" + }, + { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "64978:1:40" + }, + { + "arguments": [ + { + "name": "product", + "nodeType": "YulIdentifier", + "src": "64985:7:40" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "64994:1:40" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "64981:3:40" }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "id": 2155, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 2152, - "name": "dataHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2125, - "src": "18823:8:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 2153, - "name": "proposal", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2135, - "src": "18835:8:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Proposal_$1146_storage_ptr", - "typeString": "struct Bridge.Proposal storage pointer" - } - }, - "id": 2154, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "_dataHash", - "nodeType": "MemberAccess", - "referencedDeclaration": 1135, - "src": "18835:18:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "18823:30:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "6461746120646f65736e2774206d61746368206461746168617368", - "id": 2156, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "18855:29:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_37d86f109f909109dc6877be2d485881af52bdb007799914a63fc66c911a84aa", - "typeString": "literal_string \"data doesn't match datahash\"" - }, - "value": "data doesn't match datahash" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_37d86f109f909109dc6877be2d485881af52bdb007799914a63fc66c911a84aa", - "typeString": "literal_string \"data doesn't match datahash\"" - } - ], - "id": 2151, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "18815:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 2157, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "18815:70:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2158, - "nodeType": "ExpressionStatement", - "src": "18815:70:4" + "nodeType": "YulFunctionCall", + "src": "64981:15:40" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "64975:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "64975:22:40" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "64928:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "64928:83:40" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "64908:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "64908:113:40" + }, + "nodeType": "YulIf", + "src": "64905:139:40" + } + ] + }, + "name": "checked_mul_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "64672:1:40", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "64675:1:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "product", + "nodeType": "YulTypedName", + "src": "64681:7:40", + "type": "" + } + ], + "src": "64641:410:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "65101:147:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "65111:25:40", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "65134:1:40" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "65116:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "65116:20:40" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "65111:1:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "65145:25:40", + "value": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "65168:1:40" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "65150:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "65150:20:40" + }, + "variableNames": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "65145:1:40" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "65179:16:40", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "65190:1:40" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "65193:1:40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "65186:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "65186:9:40" + }, + "variableNames": [ + { + "name": "sum", + "nodeType": "YulIdentifier", + "src": "65179:3:40" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "65219:22:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "65221:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "65221:18:40" + }, + "nodeType": "YulExpressionStatement", + "src": "65221:18:40" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "65211:1:40" + }, + { + "name": "sum", + "nodeType": "YulIdentifier", + "src": "65214:3:40" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "65208:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "65208:10:40" + }, + "nodeType": "YulIf", + "src": "65205:36:40" + } + ] + }, + "name": "checked_add_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "65088:1:40", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "65091:1:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "sum", + "nodeType": "YulTypedName", + "src": "65097:3:40", + "type": "" + } + ], + "src": "65057:191:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "65297:128:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "65307:33:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "65334:5:40" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "65316:17:40" + }, + "nodeType": "YulFunctionCall", + "src": "65316:24:40" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "65307:5:40" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "65368:22:40", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "65370:16:40" + }, + "nodeType": "YulFunctionCall", + "src": "65370:18:40" + }, + "nodeType": "YulExpressionStatement", + "src": "65370:18:40" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "65355:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "65362:4:40", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "65352:2:40" + }, + "nodeType": "YulFunctionCall", + "src": "65352:15:40" + }, + "nodeType": "YulIf", + "src": "65349:41:40" + }, + { + "nodeType": "YulAssignment", + "src": "65399:20:40", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "65410:5:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "65417:1:40", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "65406:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "65406:13:40" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "65399:3:40" + } + ] + } + ] + }, + "name": "decrement_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "65283:5:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nodeType": "YulTypedName", + "src": "65293:3:40", + "type": "" + } + ], + "src": "65254:171:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "65537:76:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "65559:6:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "65567:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "65555:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "65555:14:40" + }, + { + "hexValue": "537472696e67733a20686578206c656e67746820696e73756666696369656e74", + "kind": "string", + "nodeType": "YulLiteral", + "src": "65571:34:40", + "type": "", + "value": "Strings: hex length insufficient" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "65548:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "65548:58:40" + }, + "nodeType": "YulExpressionStatement", + "src": "65548:58:40" + } + ] + }, + "name": "store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "65529:6:40", + "type": "" + } + ], + "src": "65431:182:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "65765:220:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "65775:74:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "65841:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "65846:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "65782:58:40" + }, + "nodeType": "YulFunctionCall", + "src": "65782:67:40" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "65775:3:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "65947:3:40" + } + ], + "functionName": { + "name": "store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2", + "nodeType": "YulIdentifier", + "src": "65858:88:40" + }, + "nodeType": "YulFunctionCall", + "src": "65858:93:40" + }, + "nodeType": "YulExpressionStatement", + "src": "65858:93:40" + }, + { + "nodeType": "YulAssignment", + "src": "65960:19:40", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "65971:3:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "65976:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "65967:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "65967:12:40" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "65960:3:40" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "65753:3:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "65761:3:40", + "type": "" + } + ], + "src": "65619:366:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "66162:248:40", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "66172:26:40", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "66184:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "66195:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "66180:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "66180:18:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "66172:4:40" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "66219:9:40" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "66230:1:40", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "66215:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "66215:17:40" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "66238:4:40" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "66244:9:40" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "66234:3:40" + }, + "nodeType": "YulFunctionCall", + "src": "66234:20:40" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "66208:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "66208:47:40" + }, + "nodeType": "YulExpressionStatement", + "src": "66208:47:40" + }, + { + "nodeType": "YulAssignment", + "src": "66264:139:40", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "66398:4:40" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "66272:124:40" + }, + "nodeType": "YulFunctionCall", + "src": "66272:131:40" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "66264:4:40" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "66142:9:40", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "66157:4:40", + "type": "" + } + ], + "src": "65991:419:40" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "66444:152:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "66461:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "66464:77:40", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "66454:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "66454:88:40" + }, + "nodeType": "YulExpressionStatement", + "src": "66454:88:40" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "66558:1:40", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "66561:4:40", + "type": "", + "value": "0x31" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "66551:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "66551:15:40" + }, + "nodeType": "YulExpressionStatement", + "src": "66551:15:40" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "66582:1:40", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "66585:4:40", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "66575:6:40" + }, + "nodeType": "YulFunctionCall", + "src": "66575:15:40" + }, + "nodeType": "YulExpressionStatement", + "src": "66575:15:40" + } + ] + }, + "name": "panic_error_0x31", + "nodeType": "YulFunctionDefinition", + "src": "66416:180:40" + } + ] + }, + "contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_bytes4(value) -> cleaned {\n cleaned := and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000)\n }\n\n function validator_revert_t_bytes4(value) {\n if iszero(eq(value, cleanup_t_bytes4(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes4(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes4(value)\n }\n\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes4(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n function cleanup_t_uint8(value) -> cleaned {\n cleaned := and(value, 0xff)\n }\n\n function validator_revert_t_uint8(value) {\n if iszero(eq(value, cleanup_t_uint8(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint8(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint8(value)\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_bytes32(value) {\n if iszero(eq(value, cleanup_t_bytes32(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes32(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes32(value)\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() {\n revert(0, 0)\n }\n\n function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n revert(0, 0)\n }\n\n // bytes\n function abi_decode_t_bytes_calldata_ptr(offset, end) -> arrayPos, length {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n arrayPos := add(offset, 0x20)\n if gt(add(arrayPos, mul(length, 0x01)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n }\n\n function abi_decode_tuple_t_uint8t_bytes32t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint8(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value2, value3 := abi_decode_t_bytes_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_bytes32_to_t_bytes32_fromStack(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint64(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffff)\n }\n\n function validator_revert_t_uint64(value) {\n if iszero(eq(value, cleanup_t_uint64(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint64(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint64(value)\n }\n\n function abi_decode_tuple_t_uint8t_uint64t_bytes32(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint8(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint64(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint64t_uint8(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint64(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint8(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_length_t_bytes_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function copy_memory_to_memory_with_cleanup(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value0, tail)\n\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint8t_uint64t_bytes_calldata_ptrt_bytes32(headStart, dataEnd) -> value0, value1, value2, value3, value4 {\n if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint8(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint64(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value2, value3 := abi_decode_t_bytes_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value4 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n }\n\n // address payable[]\n function abi_decode_t_array$_t_address_payable_$dyn_calldata_ptr(offset, end) -> arrayPos, length {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n arrayPos := add(offset, 0x20)\n if gt(add(arrayPos, mul(length, 0x20)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n }\n\n // uint256[]\n function abi_decode_t_array$_t_uint256_$dyn_calldata_ptr(offset, end) -> arrayPos, length {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n arrayPos := add(offset, 0x20)\n if gt(add(arrayPos, mul(length, 0x20)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n }\n\n function abi_decode_tuple_t_array$_t_address_payable_$dyn_calldata_ptrt_array$_t_uint256_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := calldataload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0, value1 := abi_decode_t_array$_t_address_payable_$dyn_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value2, value3 := abi_decode_t_array$_t_uint256_$dyn_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint8(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint8(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_uint64_to_t_uint64_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint64(value))\n }\n\n function abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint64_to_t_uint64_fromStack(value0, add(headStart, 0))\n\n }\n\n function cleanup_t_uint72(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffff)\n }\n\n function validator_revert_t_uint72(value) {\n if iszero(eq(value, cleanup_t_uint72(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint72(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint72(value)\n }\n\n function abi_decode_tuple_t_uint72t_bytes32(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint72(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x21() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n\n function validator_assert_t_enum$_ProposalStatus_$31(value) {\n if iszero(lt(value, 5)) { panic_error_0x21() }\n }\n\n function cleanup_t_enum$_ProposalStatus_$31(value) -> cleaned {\n cleaned := value validator_assert_t_enum$_ProposalStatus_$31(value)\n }\n\n function convert_t_enum$_ProposalStatus_$31_to_t_uint8(value) -> converted {\n converted := cleanup_t_enum$_ProposalStatus_$31(value)\n }\n\n function abi_encode_t_enum$_ProposalStatus_$31_to_t_uint8_fromStack(value, pos) {\n mstore(pos, convert_t_enum$_ProposalStatus_$31_to_t_uint8(value))\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_bytes32_t_bytes32_t_enum$_ProposalStatus_$31_t_uint256__to_t_bytes32_t_bytes32_t_uint8_t_uint256__fromStack_reversed(headStart , value3, value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_enum$_ProposalStatus_$31_to_t_uint8_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value3, add(headStart, 96))\n\n }\n\n function abi_decode_tuple_t_addresst_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2, value3 {\n if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint72t_bytes32t_address(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint72(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_bytes32t_uint256(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_t_bytes32_to_t_bytes32(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function array_length_t_array$_t_address_$dyn_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_array$_t_address_$dyn_memory_ptr(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_dataslot_t_array$_t_address_$dyn_memory_ptr(ptr) -> data {\n data := ptr\n\n data := add(ptr, 0x20)\n\n }\n\n function abi_encode_t_address_to_t_address(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encodeUpdatedPos_t_address_to_t_address(value0, pos) -> updatedPos {\n abi_encode_t_address_to_t_address(value0, pos)\n updatedPos := add(pos, 0x20)\n }\n\n function array_nextElement_t_array$_t_address_$dyn_memory_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n // address[] -> address[]\n function abi_encode_t_array$_t_address_$dyn_memory_ptr_to_t_array$_t_address_$dyn_memory_ptr(value, pos) -> end {\n let length := array_length_t_array$_t_address_$dyn_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_address_$dyn_memory_ptr(pos, length)\n let baseRef := array_dataslot_t_array$_t_address_$dyn_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n let elementValue0 := mload(srcPtr)\n pos := abi_encodeUpdatedPos_t_address_to_t_address(elementValue0, pos)\n srcPtr := array_nextElement_t_array$_t_address_$dyn_memory_ptr(srcPtr)\n }\n end := pos\n }\n\n function abi_encode_t_enum$_ProposalStatus_$31_to_t_uint8(value, pos) {\n mstore(pos, convert_t_enum$_ProposalStatus_$31_to_t_uint8(value))\n }\n\n function abi_encode_t_uint256_to_t_uint256(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n // struct Bridge.Proposal -> struct Bridge.Proposal\n function abi_encode_t_struct$_Proposal_$47_memory_ptr_to_t_struct$_Proposal_$47_memory_ptr_fromStack(value, pos) -> end {\n let tail := add(pos, 0xc0)\n\n {\n // _resourceID\n\n let memberValue0 := mload(add(value, 0x00))\n abi_encode_t_bytes32_to_t_bytes32(memberValue0, add(pos, 0x00))\n }\n\n {\n // _dataHash\n\n let memberValue0 := mload(add(value, 0x20))\n abi_encode_t_bytes32_to_t_bytes32(memberValue0, add(pos, 0x20))\n }\n\n {\n // _yesVotes\n\n let memberValue0 := mload(add(value, 0x40))\n\n mstore(add(pos, 0x40), sub(tail, pos))\n tail := abi_encode_t_array$_t_address_$dyn_memory_ptr_to_t_array$_t_address_$dyn_memory_ptr(memberValue0, tail)\n\n }\n\n {\n // _noVotes\n\n let memberValue0 := mload(add(value, 0x60))\n\n mstore(add(pos, 0x60), sub(tail, pos))\n tail := abi_encode_t_array$_t_address_$dyn_memory_ptr_to_t_array$_t_address_$dyn_memory_ptr(memberValue0, tail)\n\n }\n\n {\n // _status\n\n let memberValue0 := mload(add(value, 0x80))\n abi_encode_t_enum$_ProposalStatus_$31_to_t_uint8(memberValue0, add(pos, 0x80))\n }\n\n {\n // _proposedBlock\n\n let memberValue0 := mload(add(value, 0xa0))\n abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0xa0))\n }\n\n end := tail\n }\n\n function abi_encode_tuple_t_struct$_Proposal_$47_memory_ptr__to_t_struct$_Proposal_$47_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_struct$_Proposal_$47_memory_ptr_to_t_struct$_Proposal_$47_memory_ptr_fromStack(value0, tail)\n\n }\n\n function abi_encode_t_uint8_to_t_uint8_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint8(value))\n }\n\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint8_to_t_uint8_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_uint8t_uint64t_bytes32t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4 {\n if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint8(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint64(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 96))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value3, value4 := abi_decode_t_bytes_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_bytes32t_address(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_bytes32t_addresst_bytes4t_bytes4(headStart, dataEnd) -> value0, value1, value2, value3, value4 {\n if slt(sub(dataEnd, headStart), 160) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_bytes4(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 128\n\n value4 := abi_decode_t_bytes4(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function store_literal_in_memory_2a2431514317abe5c8b163ccf132d16516b7e676afbb7d1bf5781dba4082d9d5(memPtr) {\n\n mstore(add(memPtr, 0), \"Incorrect fee supplied\")\n\n }\n\n function abi_encode_t_stringliteral_2a2431514317abe5c8b163ccf132d16516b7e676afbb7d1bf5781dba4082d9d5_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 22)\n store_literal_in_memory_2a2431514317abe5c8b163ccf132d16516b7e676afbb7d1bf5781dba4082d9d5(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_2a2431514317abe5c8b163ccf132d16516b7e676afbb7d1bf5781dba4082d9d5__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_2a2431514317abe5c8b163ccf132d16516b7e676afbb7d1bf5781dba4082d9d5_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_542d0c0b50539d1853c947fb8449b05e8626e9928b1fbf8fb55da8a4976aae52(memPtr) {\n\n mstore(add(memPtr, 0), \"resourceID not mapped to handler\")\n\n }\n\n function abi_encode_t_stringliteral_542d0c0b50539d1853c947fb8449b05e8626e9928b1fbf8fb55da8a4976aae52_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 32)\n store_literal_in_memory_542d0c0b50539d1853c947fb8449b05e8626e9928b1fbf8fb55da8a4976aae52(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_542d0c0b50539d1853c947fb8449b05e8626e9928b1fbf8fb55da8a4976aae52__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_542d0c0b50539d1853c947fb8449b05e8626e9928b1fbf8fb55da8a4976aae52_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function increment_t_uint64(value) -> ret {\n value := cleanup_t_uint64(value)\n if eq(value, 0xffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n\n function array_length_t_bytes_calldata_ptr(value, len) -> length {\n\n length := len\n\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function array_dataslot_t_bytes_storage(ptr) -> data {\n data := ptr\n\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n\n }\n\n function divide_by_32_ceil(value) -> result {\n result := div(add(value, 31), 32)\n }\n\n function shift_left_dynamic(bits, value) -> newValue {\n newValue :=\n\n shl(bits, value)\n\n }\n\n function update_byte_slice_dynamic32(value, shiftBytes, toInsert) -> result {\n let shiftBits := mul(shiftBytes, 8)\n let mask := shift_left_dynamic(shiftBits, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n toInsert := shift_left_dynamic(shiftBits, toInsert)\n value := and(value, not(mask))\n result := or(value, and(toInsert, mask))\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint256_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_uint256(value)))\n }\n\n function prepare_store_t_uint256(value) -> ret {\n ret := value\n }\n\n function update_storage_value_t_uint256_to_t_uint256(slot, offset, value_0) {\n let convertedValue_0 := convert_t_uint256_to_t_uint256(value_0)\n sstore(slot, update_byte_slice_dynamic32(sload(slot), offset, prepare_store_t_uint256(convertedValue_0)))\n }\n\n function zero_value_for_split_t_uint256() -> ret {\n ret := 0\n }\n\n function storage_set_to_zero_t_uint256(slot, offset) {\n let zero_0 := zero_value_for_split_t_uint256()\n update_storage_value_t_uint256_to_t_uint256(slot, offset, zero_0)\n }\n\n function clear_storage_range_t_bytes1(start, end) {\n for {} lt(start, end) { start := add(start, 1) }\n {\n storage_set_to_zero_t_uint256(start, 0)\n }\n }\n\n function clean_up_bytearray_end_slots_t_bytes_storage(array, len, startIndex) {\n\n if gt(len, 31) {\n let dataArea := array_dataslot_t_bytes_storage(array)\n let deleteStart := add(dataArea, divide_by_32_ceil(startIndex))\n // If we are clearing array to be short byte array, we want to clear only data starting from array data area.\n if lt(startIndex, 32) { deleteStart := dataArea }\n clear_storage_range_t_bytes1(deleteStart, add(dataArea, divide_by_32_ceil(len)))\n }\n\n }\n\n function shift_right_unsigned_dynamic(bits, value) -> newValue {\n newValue :=\n\n shr(bits, value)\n\n }\n\n function mask_bytes_dynamic(data, bytes) -> result {\n let mask := not(shift_right_unsigned_dynamic(mul(8, bytes), not(0)))\n result := and(data, mask)\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used {\n // we want to save only elements that are part of the array after resizing\n // others should be set to zero\n data := mask_bytes_dynamic(data, len)\n used := or(data, mul(2, len))\n }\n function copy_byte_array_to_storage_from_t_bytes_calldata_ptr_to_t_bytes_storage(slot, src, len) {\n\n let newLen := array_length_t_bytes_calldata_ptr(src, len)\n // Make sure array length is sane\n if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n\n let oldLen := extract_byte_array_length(sload(slot))\n\n // potentially truncate data\n clean_up_bytearray_end_slots_t_bytes_storage(slot, oldLen, newLen)\n\n let srcOffset := 0\n\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(0x1f))\n\n let dstPtr := array_dataslot_t_bytes_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, 0x20) } {\n sstore(dstPtr, calldataload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, 32)\n }\n if lt(loopEnd, newLen) {\n let lastValue := calldataload(add(src, srcOffset))\n sstore(dstPtr, mask_bytes_dynamic(lastValue, and(newLen, 0x1f)))\n }\n sstore(slot, add(mul(newLen, 2), 1))\n }\n default {\n let value := 0\n if newLen {\n value := calldataload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n\n function copy_calldata_to_memory_with_cleanup(src, dst, length) {\n calldatacopy(dst, src, length)\n mstore(add(dst, length), 0)\n }\n\n // bytes -> bytes\n function abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack(start, length, pos) -> end {\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length)\n\n copy_calldata_to_memory_with_cleanup(start, pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_bytes32_t_uint8_t_uint64_t_address_t_bytes_calldata_ptr__to_t_bytes32_t_uint8_t_uint64_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart , value5, value4, value3, value2, value1, value0) -> tail {\n tail := add(headStart, 160)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint8_to_t_uint8_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint64_to_t_uint64_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_address_to_t_address_fromStack(value3, add(headStart, 96))\n\n mstore(add(headStart, 128), sub(tail, headStart))\n tail := abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack(value4, value5, tail)\n\n }\n\n function store_literal_in_memory_c5edc249083609d56bd00194353566fb7b8c09e436c3268ab57a56188319b6d4(memPtr) {\n\n mstore(add(memPtr, 0), \"sender doesn't have relayer role\")\n\n }\n\n function abi_encode_t_stringliteral_c5edc249083609d56bd00194353566fb7b8c09e436c3268ab57a56188319b6d4_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 32)\n store_literal_in_memory_c5edc249083609d56bd00194353566fb7b8c09e436c3268ab57a56188319b6d4(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_c5edc249083609d56bd00194353566fb7b8c09e436c3268ab57a56188319b6d4__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_c5edc249083609d56bd00194353566fb7b8c09e436c3268ab57a56188319b6d4_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_db96155e06efa3a864b08f57f36b8a9b6799a3e5b3483adbbc51a7b859825cad(memPtr) {\n\n mstore(add(memPtr, 0), \"addr doesn't have executor role!\")\n\n }\n\n function abi_encode_t_stringliteral_db96155e06efa3a864b08f57f36b8a9b6799a3e5b3483adbbc51a7b859825cad_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 32)\n store_literal_in_memory_db96155e06efa3a864b08f57f36b8a9b6799a3e5b3483adbbc51a7b859825cad(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_db96155e06efa3a864b08f57f36b8a9b6799a3e5b3483adbbc51a7b859825cad__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_db96155e06efa3a864b08f57f36b8a9b6799a3e5b3483adbbc51a7b859825cad_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_060530e99bec4f476b8f8f370f65f741cac486899cd6c35c4dd2e82720711afe(memPtr) {\n\n mstore(add(memPtr, 0), \"sender is not relayer or admin\")\n\n }\n\n function abi_encode_t_stringliteral_060530e99bec4f476b8f8f370f65f741cac486899cd6c35c4dd2e82720711afe_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 30)\n store_literal_in_memory_060530e99bec4f476b8f8f370f65f741cac486899cd6c35c4dd2e82720711afe(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_060530e99bec4f476b8f8f370f65f741cac486899cd6c35c4dd2e82720711afe__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_060530e99bec4f476b8f8f370f65f741cac486899cd6c35c4dd2e82720711afe_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_3e17bfcd355060e4798c0d940327e9e82091039c8817e9bd1bb8653b1bc06f8f(memPtr) {\n\n mstore(add(memPtr, 0), \"Proposal already cancelled\")\n\n }\n\n function abi_encode_t_stringliteral_3e17bfcd355060e4798c0d940327e9e82091039c8817e9bd1bb8653b1bc06f8f_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 26)\n store_literal_in_memory_3e17bfcd355060e4798c0d940327e9e82091039c8817e9bd1bb8653b1bc06f8f(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_3e17bfcd355060e4798c0d940327e9e82091039c8817e9bd1bb8653b1bc06f8f__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_3e17bfcd355060e4798c0d940327e9e82091039c8817e9bd1bb8653b1bc06f8f_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function checked_sub_t_uint256(x, y) -> diff {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n diff := sub(x, y)\n\n if gt(diff, x) { panic_error_0x11() }\n\n }\n\n function store_literal_in_memory_683f5cd388e83d1592bd1ca665f25f51ebccd4deed2b3fc92e3fe6b96cb47225(memPtr) {\n\n mstore(add(memPtr, 0), \"Proposal not at expiry threshold\")\n\n }\n\n function abi_encode_t_stringliteral_683f5cd388e83d1592bd1ca665f25f51ebccd4deed2b3fc92e3fe6b96cb47225_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 32)\n store_literal_in_memory_683f5cd388e83d1592bd1ca665f25f51ebccd4deed2b3fc92e3fe6b96cb47225(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_683f5cd388e83d1592bd1ca665f25f51ebccd4deed2b3fc92e3fe6b96cb47225__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_683f5cd388e83d1592bd1ca665f25f51ebccd4deed2b3fc92e3fe6b96cb47225_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value1, add(headStart, 32))\n\n }\n\n function store_literal_in_memory_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b(memPtr) {\n\n mstore(add(memPtr, 0), \"AccessControl: can only renounce\")\n\n mstore(add(memPtr, 32), \" roles for self\")\n\n }\n\n function abi_encode_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 47)\n store_literal_in_memory_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_cccb3b305edc7308d7027b1001041a46b235f7d3213d690bb469676069d9b205(memPtr) {\n\n mstore(add(memPtr, 0), \"sender doesn't have admin role\")\n\n }\n\n function abi_encode_t_stringliteral_cccb3b305edc7308d7027b1001041a46b235f7d3213d690bb469676069d9b205_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 30)\n store_literal_in_memory_cccb3b305edc7308d7027b1001041a46b235f7d3213d690bb469676069d9b205(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_cccb3b305edc7308d7027b1001041a46b235f7d3213d690bb469676069d9b205__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_cccb3b305edc7308d7027b1001041a46b235f7d3213d690bb469676069d9b205_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_6b0d25b2bc527bc6f95ae29b783be3a899152e11d3bc0d29d07090dd4e4bb2b5(memPtr) {\n\n mstore(add(memPtr, 0), \"sender doesn't have executor rol\")\n\n mstore(add(memPtr, 32), \"e\")\n\n }\n\n function abi_encode_t_stringliteral_6b0d25b2bc527bc6f95ae29b783be3a899152e11d3bc0d29d07090dd4e4bb2b5_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 33)\n store_literal_in_memory_6b0d25b2bc527bc6f95ae29b783be3a899152e11d3bc0d29d07090dd4e4bb2b5(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_6b0d25b2bc527bc6f95ae29b783be3a899152e11d3bc0d29d07090dd4e4bb2b5__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_6b0d25b2bc527bc6f95ae29b783be3a899152e11d3bc0d29d07090dd4e4bb2b5_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function shift_left_96(value) -> newValue {\n newValue :=\n\n shl(96, value)\n\n }\n\n function leftAlign_t_uint160(value) -> aligned {\n aligned := shift_left_96(value)\n }\n\n function leftAlign_t_address(value) -> aligned {\n aligned := leftAlign_t_uint160(value)\n }\n\n function abi_encode_t_address_to_t_address_nonPadded_inplace_fromStack(value, pos) {\n mstore(pos, leftAlign_t_address(cleanup_t_address(value)))\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n // bytes -> bytes\n function abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(start, length, pos) -> end {\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n\n copy_calldata_to_memory_with_cleanup(start, pos, length)\n end := add(pos, length)\n }\n\n function abi_encode_tuple_packed_t_address_t_bytes_calldata_ptr__to_t_address_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value2, value1, value0) -> end {\n\n abi_encode_t_address_to_t_address_nonPadded_inplace_fromStack(value0, pos)\n pos := add(pos, 20)\n\n pos := abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value1, value2, pos)\n\n end := pos\n }\n\n function store_literal_in_memory_6f5f0c76e88f1c140f3e9c711e5c310ff25b0603c6ab9a22a7e2208facd52f66(memPtr) {\n\n mstore(add(memPtr, 0), \"wrong resource id\")\n\n }\n\n function abi_encode_t_stringliteral_6f5f0c76e88f1c140f3e9c711e5c310ff25b0603c6ab9a22a7e2208facd52f66_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 17)\n store_literal_in_memory_6f5f0c76e88f1c140f3e9c711e5c310ff25b0603c6ab9a22a7e2208facd52f66(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_6f5f0c76e88f1c140f3e9c711e5c310ff25b0603c6ab9a22a7e2208facd52f66__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_6f5f0c76e88f1c140f3e9c711e5c310ff25b0603c6ab9a22a7e2208facd52f66_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_99947723bb2aab9f1adafa6512ffb2988cfd5728a2666cb670b21fa44ce4eb80(memPtr) {\n\n mstore(add(memPtr, 0), \"proposal already transferred/not\")\n\n mstore(add(memPtr, 32), \" finalized yet\")\n\n }\n\n function abi_encode_t_stringliteral_99947723bb2aab9f1adafa6512ffb2988cfd5728a2666cb670b21fa44ce4eb80_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 46)\n store_literal_in_memory_99947723bb2aab9f1adafa6512ffb2988cfd5728a2666cb670b21fa44ce4eb80(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_99947723bb2aab9f1adafa6512ffb2988cfd5728a2666cb670b21fa44ce4eb80__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_99947723bb2aab9f1adafa6512ffb2988cfd5728a2666cb670b21fa44ce4eb80_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_35c2d882454253e6997a6106044c4f379bd2b80e16b0fad01935e624ef5bb69d(memPtr) {\n\n mstore(add(memPtr, 0), \"Execution not successful\")\n\n }\n\n function abi_encode_t_stringliteral_35c2d882454253e6997a6106044c4f379bd2b80e16b0fad01935e624ef5bb69d_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 24)\n store_literal_in_memory_35c2d882454253e6997a6106044c4f379bd2b80e16b0fad01935e624ef5bb69d(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_35c2d882454253e6997a6106044c4f379bd2b80e16b0fad01935e624ef5bb69d__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_35c2d882454253e6997a6106044c4f379bd2b80e16b0fad01935e624ef5bb69d_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_073bceac60cfe31ff4e1652a9ed1958ffac9b37b9b2d1e976a3ea18c79e0f6fb(memPtr) {\n\n mstore(add(memPtr, 0), \"length of address and amounts di\")\n\n mstore(add(memPtr, 32), \"smatch\")\n\n }\n\n function abi_encode_t_stringliteral_073bceac60cfe31ff4e1652a9ed1958ffac9b37b9b2d1e976a3ea18c79e0f6fb_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 38)\n store_literal_in_memory_073bceac60cfe31ff4e1652a9ed1958ffac9b37b9b2d1e976a3ea18c79e0f6fb(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_073bceac60cfe31ff4e1652a9ed1958ffac9b37b9b2d1e976a3ea18c79e0f6fb__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_073bceac60cfe31ff4e1652a9ed1958ffac9b37b9b2d1e976a3ea18c79e0f6fb_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function cleanup_t_address_payable(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address_payable(value) {\n if iszero(eq(value, cleanup_t_address_payable(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address_payable(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address_payable(value)\n }\n\n function abi_decode_tuple_t_address_payable(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address_payable(add(headStart, offset), dataEnd)\n }\n\n }\n\n function increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n\n function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n }\n\n function store_literal_in_memory_db095f13e245243418ee9a5b7ae0408e2f6a2092be336cf2ec7b5f2ae85b9133(memPtr) {\n\n mstore(add(memPtr, 0), \"Current fee is equal to new fee\")\n\n }\n\n function abi_encode_t_stringliteral_db095f13e245243418ee9a5b7ae0408e2f6a2092be336cf2ec7b5f2ae85b9133_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 31)\n store_literal_in_memory_db095f13e245243418ee9a5b7ae0408e2f6a2092be336cf2ec7b5f2ae85b9133(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_db095f13e245243418ee9a5b7ae0408e2f6a2092be336cf2ec7b5f2ae85b9133__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_db095f13e245243418ee9a5b7ae0408e2f6a2092be336cf2ec7b5f2ae85b9133_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_1399520dec2ce6448b61ea4bb9d4980c6bfff25cd5836058c07edd3d56f94864(memPtr) {\n\n mstore(add(memPtr, 0), \"addr doesn't have relayer role!\")\n\n }\n\n function abi_encode_t_stringliteral_1399520dec2ce6448b61ea4bb9d4980c6bfff25cd5836058c07edd3d56f94864_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 31)\n store_literal_in_memory_1399520dec2ce6448b61ea4bb9d4980c6bfff25cd5836058c07edd3d56f94864(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_1399520dec2ce6448b61ea4bb9d4980c6bfff25cd5836058c07edd3d56f94864__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_1399520dec2ce6448b61ea4bb9d4980c6bfff25cd5836058c07edd3d56f94864_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_17505cadfef6950655e77b3a6cee1f047e0d156f50464790c284ae45de718085(memPtr) {\n\n mstore(add(memPtr, 0), \"addr already has executor role!\")\n\n }\n\n function abi_encode_t_stringliteral_17505cadfef6950655e77b3a6cee1f047e0d156f50464790c284ae45de718085_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 31)\n store_literal_in_memory_17505cadfef6950655e77b3a6cee1f047e0d156f50464790c284ae45de718085(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_17505cadfef6950655e77b3a6cee1f047e0d156f50464790c284ae45de718085__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_17505cadfef6950655e77b3a6cee1f047e0d156f50464790c284ae45de718085_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_e9d3c8def96ec5b61b3d5e8e38d358587f69ed955aa1f36ba2f95c28a40ffe20(memPtr) {\n\n mstore(add(memPtr, 0), \"no handler for resourceID\")\n\n }\n\n function abi_encode_t_stringliteral_e9d3c8def96ec5b61b3d5e8e38d358587f69ed955aa1f36ba2f95c28a40ffe20_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 25)\n store_literal_in_memory_e9d3c8def96ec5b61b3d5e8e38d358587f69ed955aa1f36ba2f95c28a40ffe20(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_e9d3c8def96ec5b61b3d5e8e38d358587f69ed955aa1f36ba2f95c28a40ffe20__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_e9d3c8def96ec5b61b3d5e8e38d358587f69ed955aa1f36ba2f95c28a40ffe20_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_c48a67927cb12b6986df316341a7e026082eb20c4db86a85c59231eb345d8194(memPtr) {\n\n mstore(add(memPtr, 0), \"proposal already passed/executed\")\n\n mstore(add(memPtr, 32), \"/cancelled\")\n\n }\n\n function abi_encode_t_stringliteral_c48a67927cb12b6986df316341a7e026082eb20c4db86a85c59231eb345d8194_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 42)\n store_literal_in_memory_c48a67927cb12b6986df316341a7e026082eb20c4db86a85c59231eb345d8194(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_c48a67927cb12b6986df316341a7e026082eb20c4db86a85c59231eb345d8194__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_c48a67927cb12b6986df316341a7e026082eb20c4db86a85c59231eb345d8194_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_0bc9c5100729666c219a147072032fe3fda273fedfa160b31a35f38bd9d0632b(memPtr) {\n\n mstore(add(memPtr, 0), \"relayer already voted\")\n\n }\n\n function abi_encode_t_stringliteral_0bc9c5100729666c219a147072032fe3fda273fedfa160b31a35f38bd9d0632b_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 21)\n store_literal_in_memory_0bc9c5100729666c219a147072032fe3fda273fedfa160b31a35f38bd9d0632b(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_0bc9c5100729666c219a147072032fe3fda273fedfa160b31a35f38bd9d0632b__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_0bc9c5100729666c219a147072032fe3fda273fedfa160b31a35f38bd9d0632b_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_3ca28279e933d133e5e14119fc1dd87d7dc7c6fddf46d790067cbb252463d448(memPtr) {\n\n mstore(add(memPtr, 0), \"Cheating Risk; Relayer vote with\")\n\n mstore(add(memPtr, 32), \" wrong resourceID\")\n\n }\n\n function abi_encode_t_stringliteral_3ca28279e933d133e5e14119fc1dd87d7dc7c6fddf46d790067cbb252463d448_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 49)\n store_literal_in_memory_3ca28279e933d133e5e14119fc1dd87d7dc7c6fddf46d790067cbb252463d448(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_3ca28279e933d133e5e14119fc1dd87d7dc7c6fddf46d790067cbb252463d448__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_3ca28279e933d133e5e14119fc1dd87d7dc7c6fddf46d790067cbb252463d448_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n }\n\n function store_literal_in_memory_8513154392cb347d26f1716c23a55342a9b762f4522b7062343455b658c92c85(memPtr) {\n\n mstore(add(memPtr, 0), \"addr already has relayer role!\")\n\n }\n\n function abi_encode_t_stringliteral_8513154392cb347d26f1716c23a55342a9b762f4522b7062343455b658c92c85_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 30)\n store_literal_in_memory_8513154392cb347d26f1716c23a55342a9b762f4522b7062343455b658c92c85(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_8513154392cb347d26f1716c23a55342a9b762f4522b7062343455b658c92c85__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_8513154392cb347d26f1716c23a55342a9b762f4522b7062343455b658c92c85_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_t_bytes4_to_t_bytes4_fromStack(value, pos) {\n mstore(pos, cleanup_t_bytes4(value))\n }\n\n function abi_encode_tuple_t_bytes32_t_address_t_bytes4_t_bytes4__to_t_bytes32_t_address_t_bytes4_t_bytes4__fromStack_reversed(headStart , value3, value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_bytes4_to_t_bytes4_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_bytes4_to_t_bytes4_fromStack(value3, add(headStart, 96))\n\n }\n\n function store_literal_in_memory_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a(memPtr) {\n\n mstore(add(memPtr, 0), \"Pausable: paused\")\n\n }\n\n function abi_encode_t_stringliteral_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 16)\n store_literal_in_memory_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_bytes32_t_bytes_calldata_ptr__to_t_bytes32_t_bytes_memory_ptr__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n mstore(add(headStart, 32), sub(tail, headStart))\n tail := abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr_fromStack(value1, value2, tail)\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874(memPtr) {\n\n mstore(add(memPtr, 0), \"AccessControl: account \")\n\n }\n\n function abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, 23)\n store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874(pos)\n end := add(pos, 23)\n }\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, length)\n }\n\n function store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69(memPtr) {\n\n mstore(add(memPtr, 0), \" is missing role \")\n\n }\n\n function abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, 17)\n store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69(pos)\n end := add(pos, 17)\n }\n\n function abi_encode_tuple_packed_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_t_string_memory_ptr_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value1, value0) -> end {\n\n pos := abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack( pos)\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value0, pos)\n\n pos := abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack( pos)\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value1, pos)\n\n end := pos\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0, tail)\n\n }\n\n function store_literal_in_memory_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a(memPtr) {\n\n mstore(add(memPtr, 0), \"Pausable: not paused\")\n\n }\n\n function abi_encode_t_stringliteral_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 20)\n store_literal_in_memory_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function checked_mul_t_uint256(x, y) -> product {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n let product_raw := mul(x, y)\n product := cleanup_t_uint256(product_raw)\n\n // overflow, if x != 0 and y != product/x\n if iszero(\n or(\n iszero(x),\n eq(y, div(product, x))\n )\n ) { panic_error_0x11() }\n\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n sum := add(x, y)\n\n if gt(x, sum) { panic_error_0x11() }\n\n }\n\n function decrement_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0x00) { panic_error_0x11() }\n ret := sub(value, 1)\n }\n\n function store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2(memPtr) {\n\n mstore(add(memPtr, 0), \"Strings: hex length insufficient\")\n\n }\n\n function abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 32)\n store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x31() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x31)\n revert(0, 0x24)\n }\n\n}\n", + "id": 40, + "language": "Yul", + "name": "#utility.yul" + } + ], + "sourceMap": "462:21504:0:-:0;;;3392:719;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;999:5:37;989:7;;:15;;;;;;;;;;;;;;;;;;3535:7:0;3524:8;;:18;;;;;;;;;;;;;;;;;;3573:23;3553:17;:43;;;;3614:3;3607:4;:10;;;;3638:6;3628:7;:16;;;;3657:42;2163:4:28;3668:18:0;;3688:10;3657;;;:42;;:::i;:::-;3710:47;2133:25;2163:4:28;3738:18:0;;3710:13;;;:47;;:::i;:::-;3826:37;2205:26;3852:10;3826;;;:37;;:::i;:::-;3874:42;2205:26;2133:25;3874:13;;;:42;;:::i;:::-;3929:24;3956:15;:22;3929:49;;3994:6;3989:113;4006:19;4002:1;:23;3989:113;;;4047:43;2133:25;4071:15;4087:1;4071:18;;;;;;;;:::i;:::-;;;;;;;;4047:9;;;:43;;:::i;:::-;4027:3;;;;;:::i;:::-;;;;3989:113;;;;3513:598;3392:719;;;;;462:21504;;6902:110:28;6980:25;6991:4;6997:7;6980:10;;;:25;;:::i;:::-;6902:110;;:::o;7137:247::-;7220:25;7248:18;7261:4;7248:12;;;:18;;:::i;:::-;7220:46;;7301:9;7276:6;:12;7283:4;7276:12;;;;;;;;;;;:22;;:34;;;;7367:9;7348:17;7342:4;7325:52;;;;;;;;;;7210:174;7137:247;;:::o;4894:145::-;4977:18;4990:4;4977:12;;;:18;;:::i;:::-;2596:16;2607:4;2596:10;;;:16;;:::i;:::-;5007:25:::1;5018:4;5024:7;5007:10;;;:25;;:::i;:::-;4894:145:::0;;;:::o;1963:166:29:-;2050:31;2067:4;2073:7;2050:16;;;:31;;:::i;:::-;2091;2114:7;2091:12;:18;2104:4;2091:18;;;;;;;;;;;:22;;;;:31;;;;:::i;:::-;;1963:166;;:::o;4469:129:28:-;4543:7;4569:6;:12;4576:4;4569:12;;;;;;;;;;;:22;;;4562:29;;4469:129;;;:::o;3425:103::-;3491:30;3502:4;3508:12;:10;;;:12;;:::i;:::-;3491:10;;;:30;;:::i;:::-;3425:103;:::o;7552:233::-;7635:22;7643:4;7649:7;7635;;;:22;;:::i;:::-;7630:149;;7705:4;7673:6;:12;7680:4;7673:12;;;;;;;;;;;:20;;:29;7694:7;7673:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;7755:12;:10;;;:12;;:::i;:::-;7728:40;;7746:7;7728:40;;7740:4;7728:40;;;;;;;;;;7630:149;7552:233;;:::o;8305:150:32:-;8375:4;8398:50;8403:3;:10;;8439:5;8423:23;;8415:32;;8398:4;;;:50;;:::i;:::-;8391:57;;8305:150;;;;:::o;655:96:30:-;708:7;734:10;727:17;;655:96;:::o;3809:479:28:-;3897:22;3905:4;3911:7;3897;;;:22;;:::i;:::-;3892:390;;4080:28;4100:7;4080:19;;;:28;;:::i;:::-;4179:38;4207:4;4199:13;;4214:2;4179:19;;;:38;;:::i;:::-;3987:252;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3935:336;;;;;;;;;;;:::i;:::-;;;;;;;;3892:390;3809:479;;:::o;2986:145::-;3072:4;3095:6;:12;3102:4;3095:12;;;;;;;;;;;:20;;:29;3116:7;3095:29;;;;;;;;;;;;;;;;;;;;;;;;;3088:36;;2986:145;;;;:::o;2214:404:32:-;2277:4;2298:21;2308:3;2313:5;2298:9;;;:21;;:::i;:::-;2293:319;;2335:3;:11;;2352:5;2335:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2515:3;:11;;:18;;;;2493:3;:12;;:19;2506:5;2493:19;;;;;;;;;;;:40;;;;2554:4;2547:11;;;;2293:319;2596:5;2589:12;;2214:404;;;;;:::o;2397:149:39:-;2455:13;2487:52;2515:4;2499:22;;333:2;2487:52;;:11;;;:52;;:::i;:::-;2480:59;;2397:149;;;:::o;1808:437::-;1883:13;1908:19;1953:1;1944:6;1940:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;1930:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1908:47;;1965:15;:6;1972:1;1965:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;1990;:6;1997:1;1990:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;2020:9;2045:1;2036:6;2032:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;2020:26;;2015:128;2052:1;2048;:5;2015:128;;;2086:8;2103:3;2095:5;:11;2086:21;;;;;;;:::i;:::-;;;;;2074:6;2081:1;2074:9;;;;;;;;:::i;:::-;;;;;:33;;;;;;;;;;;2131:1;2121:11;;;;;2055:3;;;;:::i;:::-;;;2015:128;;;;2169:1;2160:5;:10;2152:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;2231:6;2217:21;;;1808:437;;;;:::o;4255:127:32:-;4328:4;4374:1;4351:3;:12;;:19;4364:5;4351:19;;;;;;;;;;;;:24;;4344:31;;4255:127;;;;:::o;7:75:40:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:86;369:7;409:4;402:5;398:16;387:27;;334:86;;;:::o;426:118::-;497:22;513:5;497:22;:::i;:::-;490:5;487:33;477:61;;534:1;531;524:12;477:61;426:118;:::o;550:139::-;605:5;636:6;630:13;621:22;;652:31;677:5;652:31;:::i;:::-;550:139;;;;:::o;695:117::-;804:1;801;794:12;818:102;859:6;910:2;906:7;901:2;894:5;890:14;886:28;876:38;;818:102;;;:::o;926:180::-;974:77;971:1;964:88;1071:4;1068:1;1061:15;1095:4;1092:1;1085:15;1112:281;1195:27;1217:4;1195:27;:::i;:::-;1187:6;1183:40;1325:6;1313:10;1310:22;1289:18;1277:10;1274:34;1271:62;1268:88;;;1336:18;;:::i;:::-;1268:88;1376:10;1372:2;1365:22;1155:238;1112:281;;:::o;1399:129::-;1433:6;1460:20;;:::i;:::-;1450:30;;1489:33;1517:4;1509:6;1489:33;:::i;:::-;1399:129;;;:::o;1534:311::-;1611:4;1701:18;1693:6;1690:30;1687:56;;;1723:18;;:::i;:::-;1687:56;1773:4;1765:6;1761:17;1753:25;;1833:4;1827;1823:15;1815:23;;1534:311;;;:::o;1851:117::-;1960:1;1957;1950:12;1974:126;2011:7;2051:42;2044:5;2040:54;2029:65;;1974:126;;;:::o;2106:96::-;2143:7;2172:24;2190:5;2172:24;:::i;:::-;2161:35;;2106:96;;;:::o;2208:122::-;2281:24;2299:5;2281:24;:::i;:::-;2274:5;2271:35;2261:63;;2320:1;2317;2310:12;2261:63;2208:122;:::o;2336:143::-;2393:5;2424:6;2418:13;2409:22;;2440:33;2467:5;2440:33;:::i;:::-;2336:143;;;;:::o;2502:732::-;2609:5;2634:81;2650:64;2707:6;2650:64;:::i;:::-;2634:81;:::i;:::-;2625:90;;2735:5;2764:6;2757:5;2750:21;2798:4;2791:5;2787:16;2780:23;;2851:4;2843:6;2839:17;2831:6;2827:30;2880:3;2872:6;2869:15;2866:122;;;2899:79;;:::i;:::-;2866:122;3014:6;2997:231;3031:6;3026:3;3023:15;2997:231;;;3106:3;3135:48;3179:3;3167:10;3135:48;:::i;:::-;3130:3;3123:61;3213:4;3208:3;3204:14;3197:21;;3073:155;3057:4;3052:3;3048:14;3041:21;;2997:231;;;3001:21;2615:619;;2502:732;;;;;:::o;3257:385::-;3339:5;3388:3;3381:4;3373:6;3369:17;3365:27;3355:122;;3396:79;;:::i;:::-;3355:122;3506:6;3500:13;3531:105;3632:3;3624:6;3617:4;3609:6;3605:17;3531:105;:::i;:::-;3522:114;;3345:297;3257:385;;;;:::o;3648:77::-;3685:7;3714:5;3703:16;;3648:77;;;:::o;3731:122::-;3804:24;3822:5;3804:24;:::i;:::-;3797:5;3794:35;3784:63;;3843:1;3840;3833:12;3784:63;3731:122;:::o;3859:143::-;3916:5;3947:6;3941:13;3932:22;;3963:33;3990:5;3963:33;:::i;:::-;3859:143;;;;:::o;4008:1176::-;4137:6;4145;4153;4161;4169;4218:3;4206:9;4197:7;4193:23;4189:33;4186:120;;;4225:79;;:::i;:::-;4186:120;4345:1;4370:62;4424:7;4415:6;4404:9;4400:22;4370:62;:::i;:::-;4360:72;;4316:126;4502:2;4491:9;4487:18;4481:25;4533:18;4525:6;4522:30;4519:117;;;4555:79;;:::i;:::-;4519:117;4660:89;4741:7;4732:6;4721:9;4717:22;4660:89;:::i;:::-;4650:99;;4452:307;4798:2;4824:64;4880:7;4871:6;4860:9;4856:22;4824:64;:::i;:::-;4814:74;;4769:129;4937:2;4963:64;5019:7;5010:6;4999:9;4995:22;4963:64;:::i;:::-;4953:74;;4908:129;5076:3;5103:64;5159:7;5150:6;5139:9;5135:22;5103:64;:::i;:::-;5093:74;;5047:130;4008:1176;;;;;;;;:::o;5190:180::-;5238:77;5235:1;5228:88;5335:4;5332:1;5325:15;5359:4;5356:1;5349:15;5376:180;5424:77;5421:1;5414:88;5521:4;5518:1;5511:15;5545:4;5542:1;5535:15;5562:233;5601:3;5624:24;5642:5;5624:24;:::i;:::-;5615:33;;5670:66;5663:5;5660:77;5657:103;;5740:18;;:::i;:::-;5657:103;5787:1;5780:5;5776:13;5769:20;;5562:233;;;:::o;5801:148::-;5903:11;5940:3;5925:18;;5801:148;;;;:::o;5955:173::-;6095:25;6091:1;6083:6;6079:14;6072:49;5955:173;:::o;6134:402::-;6294:3;6315:85;6397:2;6392:3;6315:85;:::i;:::-;6308:92;;6409:93;6498:3;6409:93;:::i;:::-;6527:2;6522:3;6518:12;6511:19;;6134:402;;;:::o;6542:99::-;6594:6;6628:5;6622:12;6612:22;;6542:99;;;:::o;6647:246::-;6728:1;6738:113;6752:6;6749:1;6746:13;6738:113;;;6837:1;6832:3;6828:11;6822:18;6818:1;6813:3;6809:11;6802:39;6774:2;6771:1;6767:10;6762:15;;6738:113;;;6885:1;6876:6;6871:3;6867:16;6860:27;6709:184;6647:246;;;:::o;6899:390::-;7005:3;7033:39;7066:5;7033:39;:::i;:::-;7088:89;7170:6;7165:3;7088:89;:::i;:::-;7081:96;;7186:65;7244:6;7239:3;7232:4;7225:5;7221:16;7186:65;:::i;:::-;7276:6;7271:3;7267:16;7260:23;;7009:280;6899:390;;;;:::o;7295:167::-;7435:19;7431:1;7423:6;7419:14;7412:43;7295:167;:::o;7468:402::-;7628:3;7649:85;7731:2;7726:3;7649:85;:::i;:::-;7642:92;;7743:93;7832:3;7743:93;:::i;:::-;7861:2;7856:3;7852:12;7845:19;;7468:402;;;:::o;7876:967::-;8258:3;8280:148;8424:3;8280:148;:::i;:::-;8273:155;;8445:95;8536:3;8527:6;8445:95;:::i;:::-;8438:102;;8557:148;8701:3;8557:148;:::i;:::-;8550:155;;8722:95;8813:3;8804:6;8722:95;:::i;:::-;8715:102;;8834:3;8827:10;;7876:967;;;;;:::o;8849:169::-;8933:11;8967:6;8962:3;8955:19;9007:4;9002:3;8998:14;8983:29;;8849:169;;;;:::o;9024:377::-;9112:3;9140:39;9173:5;9140:39;:::i;:::-;9195:71;9259:6;9254:3;9195:71;:::i;:::-;9188:78;;9275:65;9333:6;9328:3;9321:4;9314:5;9310:16;9275:65;:::i;:::-;9365:29;9387:6;9365:29;:::i;:::-;9360:3;9356:39;9349:46;;9116:285;9024:377;;;;:::o;9407:313::-;9520:4;9558:2;9547:9;9543:18;9535:26;;9607:9;9601:4;9597:20;9593:1;9582:9;9578:17;9571:47;9635:78;9708:4;9699:6;9635:78;:::i;:::-;9627:86;;9407:313;;;;:::o;9726:410::-;9766:7;9789:20;9807:1;9789:20;:::i;:::-;9784:25;;9823:20;9841:1;9823:20;:::i;:::-;9818:25;;9878:1;9875;9871:9;9900:30;9918:11;9900:30;:::i;:::-;9889:41;;10079:1;10070:7;10066:15;10063:1;10060:22;10040:1;10033:9;10013:83;9990:139;;10109:18;;:::i;:::-;9990:139;9774:362;9726:410;;;;:::o;10142:191::-;10182:3;10201:20;10219:1;10201:20;:::i;:::-;10196:25;;10235:20;10253:1;10235:20;:::i;:::-;10230:25;;10278:1;10275;10271:9;10264:16;;10299:3;10296:1;10293:10;10290:36;;;10306:18;;:::i;:::-;10290:36;10142:191;;;;:::o;10339:171::-;10378:3;10401:24;10419:5;10401:24;:::i;:::-;10392:33;;10447:4;10440:5;10437:15;10434:41;;10455:18;;:::i;:::-;10434:41;10502:1;10495:5;10491:13;10484:20;;10339:171;;;:::o;10516:182::-;10656:34;10652:1;10644:6;10640:14;10633:58;10516:182;:::o;10704:366::-;10846:3;10867:67;10931:2;10926:3;10867:67;:::i;:::-;10860:74;;10943:93;11032:3;10943:93;:::i;:::-;11061:2;11056:3;11052:12;11045:19;;10704:366;;;:::o;11076:419::-;11242:4;11280:2;11269:9;11265:18;11257:26;;11329:9;11323:4;11319:20;11315:1;11304:9;11300:17;11293:47;11357:131;11483:4;11357:131;:::i;:::-;11349:139;;11076:419;;;:::o;462:21504:0:-;;;;;;;", + "deployedSourceMap": "462:21504:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;619:212:29;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12732:709:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2165:66;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7458:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17975:639;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4469:129:28;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4894:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6003:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1267:65:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11510:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19290:967;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21617:344;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1055:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5676:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1405:65;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;4244:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1608:84:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4623:173:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11981:312;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1557:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4990:77;;;;;;;;;;;;;:::i;:::-;;1146:62;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9971:203;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1416:151:29;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11192:157:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2986:145:28;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2094:64:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;595:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6532:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2118:49:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10770:261:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6992:230;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;524:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14061:3360;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;632:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;658:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1735:140:29;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8243:302:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6083:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5319:147:28;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;554:32:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9103:469;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5263:81;;;;;;;;;;;;;:::i;:::-;;619:212:29;704:4;742:42;727:57;;;:11;:57;;;;:97;;;;788:36;812:11;788:23;:36::i;:::-;727:97;720:104;;619:212;;;:::o;12732:709:0:-;1232:19:37;:17;:19::i;:::-;12879:4:0::1;;12866:9;:17;12858:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;12923:15;12941:27;:39;12969:10;12941:39;;;;;;;;;;;;;;;;;;;;;12923:57;;13018:1;12999:21;;:7;:21;;::::0;12991:66:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;13070:19;13094:14;:34;13109:18;13094:34;;;;;;;;;;;;;;;;13092:36;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;13070:58;;13191:4;;13139:15;:29;13155:12;13139:29;;;;;;;;;;;;;;;:49;13169:18;13139:49;;;;;;;;;;;;;;;:56;;;;;;;:::i;:::-;;13208:30;13257:7;13208:57;;13276:14;:22;;;13299:10;13311:18;13331:12;13345:10;13357:4;;13276:86;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13420:12;13380:53;;13408:10;13388:18;13380:53;;;;;;;;;;;;12847:594;;;12732:709:::0;;;;:::o;2165:66::-;2205:26;2165:66;:::o;7458:234::-;2626:33;2133:25;2648:10;2626:7;:33::i;:::-;2618:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;7555:39:::1;2205:26;7578:15;7555:7;:39::i;:::-;7547:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;7642:42;2205:26;7668:15;7642:10;:42::i;:::-;7458:234:::0;:::o;17975:639::-;2431:39;2163:4:28;2439:18:0;;2459:10;2431:7;:39::i;:::-;:76;;;;2474:33;2133:25;2496:10;2474:7;:33::i;:::-;2431:76;2423:132;;;;;;;;;;;;:::i;:::-;;;;;;;;;18090:17:::1;18147:7;18140:15;;18135:1;18118:12;18111:20;;:25;;;;18110:45;18090:65;;18166:25;18194:10;:22;18205:10;18194:22;;;;;;;;;;;;;;;:32;18217:8;18194:32;;;;;;;;;;;18166:60;;18267:24;18247:44:::0;::::1;;;;;;;:::i;:::-;;:8;:16;;;;;;;;;;;;:44;;;;;;;;:::i;:::-;;::::0;18239:83:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18384:7;;18357:8;:23;;;18342:12;:38;;;;:::i;:::-;18341:50;18333:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;18460:24;18441:8;:16;;;:43;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;18537:24;18500:104:::0;::::1;;;;;;;:::i;:::-;;18523:12;18500:104;;18514:7;18500:104;;;18563:8;:20;;;18585:8;:18;;;18500:104;;;;;;;:::i;:::-;;;;;;;;18079:535;;17975:639:::0;;;:::o;4469:129:28:-;4543:7;4569:6;:12;4576:4;4569:12;;;;;;;;;;;:22;;;4562:29;;4469:129;;;:::o;4894:145::-;4977:18;4990:4;4977:12;:18::i;:::-;2596:16;2607:4;2596:10;:16::i;:::-;5007:25:::1;5018:4;5024:7;5007:10;:25::i;:::-;4894:145:::0;;;:::o;6003:214::-;6109:12;:10;:12::i;:::-;6098:23;;:7;:23;;;6090:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;6184:26;6196:4;6202:7;6184:11;:26::i;:::-;6003:214;;:::o;1267:65:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11510:94::-;2280:39;2163:4:28;2288:18:0;;2308:10;2280:7;:39::i;:::-;2272:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;11587:9:::1;11577:7;:19;;;;11510:94:::0;:::o;19290:967::-;2774:33;2133:25;2796:10;2774:7;:33::i;:::-;:71;;;;2811:34;2205:26;2834:10;2811:7;:34::i;:::-;2774:71;:114;;;;2849:39;2163:4:28;2857:18:0;;2877:10;2849:7;:39::i;:::-;2774:114;2766:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;1232:19:37::1;:17;:19::i;:::-;19446:15:0::2;19464:27;:39;19492:10;19464:39;;;;;;;;;;;;;;;;;;;;;19446:57;;19514:17;19571:7;19564:15;;19559:1;19542:12;19535:20;;:25;;;;19534:45;19514:65;;19590:16;19636:7;19645:4;;19619:31;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;19609:42;;;;;;19590:61;;19662:25;19690:10;:22;19701:10;19690:22;;;;;;;;;;;;;;;:32;19713:8;19690:32;;;;;;;;;;;19662:60;;19862:10;19838:8;:20;;;:34;19830:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19933:21;19913:41;;;;;;;;:::i;:::-;;:8;:16;;;;;;;;;;;;:41;;;;;;;;:::i;:::-;;;19905:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;20034:34;20051:4;;20057:10;20034:16;:34::i;:::-;20026:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;20127:23;20108:8;:16;;;:42;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;20203:23;20166:83;;;;;;;;:::i;:::-;;20189:12;20166:83;;20180:7;20166:83;;;20228:10;20240:8;20166:83;;;;;;;:::i;:::-;;;;;;;;19435:822;;;;19290:967:::0;;;;;:::o;21617:344::-;2280:39;2163:4:28;2288:18:0;;2308:10;2280:7;:39::i;:::-;2272:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;21753:7:::1;;:14;;21737:5;;:12;;:30;21729:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;21821:14;21838:5;;:12;;21821:29;;21866:6;21861:93;21882:9;21878:1;:13;21861:93;;;21913:5;;21919:1;21913:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;:17;;:29;21931:7;;21939:1;21931:10;;;;;;;:::i;:::-;;;;;;;;21913:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;21893:3;;;;;:::i;:::-;;;;21861:93;;;;21718:243;21617:344:::0;;;;:::o;1055:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;5676:179::-;2280:39;2163:4:28;2288:18:0;;2308:10;2280:7;:39::i;:::-;2272:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;5782:12:::1;5762:17;:32;;;;5834:12;5810:37;;;;;;;;;;5676:179:::0;:::o;1405:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4244:121::-;4303:4;4327:30;2133:25;4349:7;4327;:30::i;:::-;4320:37;;4244:121;;;:::o;1608:84:37:-;1655:4;1678:7;;;;;;;;;;;1671:14;;1608:84;:::o;4623:173:0:-;2280:39;2163:4:28;2288:18:0;;2308:10;2280:7;:39::i;:::-;2272:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;4694:39:::1;2163:4:28;4704:18:0::0;::::1;4724:8;4694:9;:39::i;:::-;4744:44;2163:4:28;4757:18:0::0;::::1;4777:10;4744:12;:44::i;:::-;4623:173:::0;:::o;11981:312::-;2280:39;2163:4:28;2288:18:0;;2308:10;2280:7;:39::i;:::-;2272:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;12167:19:::1;12201:14;12167:49;;12227:7;:16;;;12244:12;12258:9;12269:15;12227:58;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12156:137;11981:312:::0;;;;:::o;1557:90::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4990:77::-;2280:39;2163:4:28;2288:18:0;;2308:10;2280:7;:39::i;:::-;2272:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;5051:8:::1;:6;:8::i;:::-;4990:77::o:0;1146:62::-;;;;;;;;;;;;;;;;;;;;;;:::o;9971:203::-;2280:39;2163:4:28;2288:18:0;;2308:10;2280:7;:39::i;:::-;2272:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;10073:19:::1;10107:14;10073:49;;10133:7;:19;;;10153:12;10133:33;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10062:112;9971:203:::0;;:::o;1416:151:29:-;1506:7;1532:28;1554:5;1532:12;:18;1545:4;1532:18;;;;;;;;;;;:21;;:28;;;;:::i;:::-;1525:35;;1416:151;;;;:::o;11192:157:0:-;2280:39;2163:4:28;2288:18:0;;2308:10;2280:7;:39::i;:::-;2272:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;11275:6:::1;11267:4;;:14:::0;11259:58:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11335:6;11328:4;:13;;;;11192:157:::0;:::o;2986:145:28:-;3072:4;3095:6;:12;3102:4;3095:12;;;;;;;;;;;:20;;:29;3116:7;3095:29;;;;;;;;;;;;;;;;;;;;;;;;;3088:36;;2986:145;;;;:::o;2094:64:0:-;2133:25;2094:64;:::o;595:30::-;;;;:::o;6532:222::-;2280:39;2163:4:28;2288:18:0;;2308:10;2280:7;:39::i;:::-;2272:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;6622:37:::1;2133:25;6644:14;6622:7;:37::i;:::-;6614:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;6706:40;2133:25;6731:14;6706:10;:40::i;:::-;6532:222:::0;:::o;2118:49:28:-;2163:4;2118:49;;;:::o;10770:261:0:-;10874:15;;:::i;:::-;10902:17;10959:13;10952:21;;10947:1;10930:12;10923:20;;:25;;;;10922:51;10902:71;;10991:10;:22;11002:10;10991:22;;;;;;;;;;;;;;;:32;11014:8;10991:32;;;;;;;;;;;10984:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;10770:261;;;;;:::o;6992:230::-;2626:33;2133:25;2648:10;2626:7;:33::i;:::-;2618:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;7087:39:::1;2205:26;7110:15;7087:7;:39::i;:::-;7086:40;7078:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;7173:41;2205:26;7198:15;7173:9;:41::i;:::-;6992:230:::0;:::o;524:23::-;;;;;;;;;;;;;:::o;14061:3360::-;2626:33;2133:25;2648:10;2626:7;:33::i;:::-;2618:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;1232:19:37::1;:17;:19::i;:::-;14207:15:0::2;14225:27;:39;14253:10;14225:39;;;;;;;;;;;;;;;;;;;;;14207:57;;14275:16;14321:7;14330:4;;14304:31;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;14294:42;;;;;;14275:61;;14347:17;14404:7;14397:15;;14392:1;14375:12;14368:20;;:25;;;;14367:45;14347:65;;14423:25;14451:10;:22;14462:10;14451:22;;;;;;;;;;;;;;;:32;14474:8;14451:32;;;;;;;;;;;14423:60;;14555:1;14504:53;;:27;:39;14532:10;14504:39;;;;;;;;;;;;;;;;;;;;;:53;;::::0;14496:91:::2;;;;;;;;;;;;:::i;:::-;;;;;;;;;14632:1;14611:8;:16;;;;;;;;;;;;14606:22;;;;;;;;:::i;:::-;;:27;;14598:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;14700:19;:31;14720:10;14700:31;;;;;;;;;;;;;;;:41;14732:8;14700:41;;;;;;;;;;;:53;14742:10;14700:53;;;;;;;;;;;;;;;;;;;;;;;;;14699:54;14691:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;14822:1;14801:8;:16;;;;;;;;;;;;14796:22;;;;;;;;:::i;:::-;;:27:::0;14792:1613:::2;;14842:15;;14840:17;;;;;:::i;:::-;;;;;;;;14907:302;;;;;;;;14949:10;14907:302;;;;14990:8;14907:302;;;;15043:1;15029:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14907:302;;;;15089:1;15075:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14907:302;;;;15120:21;14907:302;;;;;;;;:::i;:::-;;;;;;15177:12;14907:302;;::::0;14872:10:::2;:22;14883:10;14872:22;;;;;;;;;;;;;;;:32;14895:8;14872:32;;;;;;;;;;;:337;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;15250:10;15226:8;:18;;15245:1;15226:21;;;;;;;;:::i;:::-;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;15317:21;15280:81;;;;;;;;:::i;:::-;;15303:12;15280:81;;15294:7;15280:81;;;15340:10;15352:8;15280:81;;;;;;;:::i;:::-;;;;;;;;14792:1613;;;15441:7;;15414:8;:23;;;15399:12;:38;;;;:::i;:::-;15398:50;15394:998;;;15656:24;15637:8;:16;;;:43;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;15741:24;15704:84:::0;::::2;;;;;;;:::i;:::-;;15727:12;15704:84;;15718:7;15704:84;;;15767:10;15779:8;15704:84;;;;;;;:::i;:::-;;;;;;;;15394:998;;;16258:10;16234:8;:20;;;:34;16226:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;16341:8;:18;;16365:10;16341:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15394:998;14792:1613;16439:24;16419:44:::0;::::2;;;;;;;:::i;:::-;;:8;:16;;;;;;;;;;;;:44;;;;;;;;:::i;:::-;;;16415:997;;16536:4;16480:19;:31;16500:10;16480:31;;;;;;;;;;;;;;;:41;16512:8;16480:41;;;;;;;;;;;:53;16522:10;16480:53;;;;;;;;;;;;;;;;:60;;;;;;;;;;;;;;;;;;16709:1;16688:17;;:22;;:72;;;;16743:17;;16714:8;:18;;:25;;;;:46;;16688:72;16684:717;;;16785:34;16802:4;;16808:10;16785:16;:34::i;:::-;16781:605;;;16863:23;16844:8;:16;;;:42;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;16951:23;16914:83;;;;;;;;:::i;:::-;;16937:12;16914:83;;16928:7;16914:83;;;16976:10;16988:8;16914:83;;;;;;;:::i;:::-;;;;;;;;17020:7;;;;;;16781:605;17207:21;17188:8;:16;;;:40;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;17293:21;17256:81;;;;;;;;:::i;:::-;;17279:12;17256:81;;17270:7;17256:81;;;17316:10;17328:8;17256:81;;;;;;;:::i;:::-;;;;;;;;17360:7;;;;;;16684:717;16415:997;14196:3225;;;;1261:1:37;14061:3360:0::0;;;;;:::o;632:19::-;;;;:::o;658:22::-;;;;:::o;1735:140:29:-;1815:7;1841:27;:12;:18;1854:4;1841:18;;;;;;;;;;;:25;:27::i;:::-;1834:34;;1735:140;;;:::o;8243:302:0:-;2280:39;2163:4:28;2288:18:0;;2308:10;2280:7;:39::i;:::-;2272:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;8407:14:::1;8365:27;:39;8393:10;8365:39;;;;;;;;;;;;:56;;;;;;;;;;;;;;;;;;8432:19;8466:14;8432:49;;8492:7;:19;;;8512:10;8524:12;8492:45;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;8354:191;8243:302:::0;;;:::o;6083:218::-;2280:39;2163:4:28;2288:18:0;;2308:10;2280:7;:39::i;:::-;2272:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;6171:37:::1;2133:25;6193:14;6171:7;:37::i;:::-;6170:38;6162:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;6254:39;2133:25;6278:14;6254:9;:39::i;:::-;6083:218:::0;:::o;5319:147:28:-;5403:18;5416:4;5403:12;:18::i;:::-;2596:16;2607:4;2596:10;:16::i;:::-;5433:26:::1;5445:4;5451:7;5433:11;:26::i;:::-;5319:147:::0;;;:::o;554:32:0:-;;;;:::o;9103:469::-;2280:39;2163:4:28;2288:18:0;;2308:10;2280:7;:39::i;:::-;2272:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;9383:14:::1;9341:27;:39;9369:10;9341:39;;;;;;;;;;;;:56;;;;;;;;;;;;;;;;;;9408:23;9450:14;9408:57;;9476:7;:19;;;9496:10;9508:15;9525:18;9545;9476:88;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9330:242;9103:469:::0;;;;;:::o;5263:81::-;2280:39;2163:4:28;2288:18:0;;2308:10;2280:7;:39::i;:::-;2272:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;5326:10:::1;:8;:10::i;:::-;5263:81::o:0;2697:202:28:-;2782:4;2820:32;2805:47;;;:11;:47;;;;:87;;;;2856:36;2880:11;2856:23;:36::i;:::-;2805:87;2798:94;;2697:202;;;:::o;1760:106:37:-;1830:8;:6;:8::i;:::-;1829:9;1821:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;1760:106::o;3425:103:28:-;3491:30;3502:4;3508:12;:10;:12::i;:::-;3491:10;:30::i;:::-;3425:103;:::o;1963:166:29:-;2050:31;2067:4;2073:7;2050:16;:31::i;:::-;2091;2114:7;2091:12;:18;2104:4;2091:18;;;;;;;;;;;:22;;:31;;;;:::i;:::-;;1963:166;;:::o;655:96:30:-;708:7;734:10;727:17;;655:96;:::o;2218:171:29:-;2306:32;2324:4;2330:7;2306:17;:32::i;:::-;2348:34;2374:7;2348:12;:18;2361:4;2348:18;;;;;;;;;;;:25;;:34;;;;:::i;:::-;;2218:171;;:::o;20873:346:0:-;20958:4;20975:30;21024:27;:39;21052:10;21024:39;;;;;;;;;;;;;;;;;;;;;20975:89;;21079:14;:30;;;21110:10;21122:4;;21079:48;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21075:137;;21195:5;21188:12;;;;;21075:137;21150:4;21143:11;;;20873:346;;;;;;:::o;2179:115:37:-;1232:19;:17;:19::i;:::-;2248:4:::1;2238:7;::::0;:14:::1;;;;;;;;;;;;;;;;;;2267:20;2274:12;:10;:12::i;:::-;2267:20;;;;;;:::i;:::-;;;;;;;;2179:115::o:0;9563:156:32:-;9637:7;9687:22;9691:3;:10;;9703:5;9687:3;:22::i;:::-;9679:31;;9656:56;;9563:156;;;;:::o;9106:115::-;9169:7;9195:19;9203:3;:10;;9195:7;:19::i;:::-;9188:26;;9106:115;;;:::o;2426:117:37:-;1479:16;:14;:16::i;:::-;2494:5:::1;2484:7:::0;::::1;:15;;;;;;;;;;;;;;;;;;2514:22;2523:12;:10;:12::i;:::-;2514:22;;;;;;:::i;:::-;;;;;;;;2426:117::o:0;829:155:31:-;914:4;952:25;937:40;;;:11;:40;;;;930:47;;829:155;;;:::o;3809:479:28:-;3897:22;3905:4;3911:7;3897;:22::i;:::-;3892:390;;4080:28;4100:7;4080:19;:28::i;:::-;4179:38;4207:4;4199:13;;4214:2;4179:19;:38::i;:::-;3987:252;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3935:336;;;;;;;;;;;:::i;:::-;;;;;;;;3892:390;3809:479;;:::o;7552:233::-;7635:22;7643:4;7649:7;7635;:22::i;:::-;7630:149;;7705:4;7673:6;:12;7680:4;7673:12;;;;;;;;;;;:20;;:29;7694:7;7673:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;7755:12;:10;:12::i;:::-;7728:40;;7746:7;7728:40;;7740:4;7728:40;;;;;;;;;;7630:149;7552:233;;:::o;8305:150:32:-;8375:4;8398:50;8403:3;:10;;8439:5;8423:23;;8415:32;;8398:4;:50::i;:::-;8391:57;;8305:150;;;;:::o;7956:234:28:-;8039:22;8047:4;8053:7;8039;:22::i;:::-;8035:149;;;8109:5;8077:6;:12;8084:4;8077:12;;;;;;;;;;;:20;;:29;8098:7;8077:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;8160:12;:10;:12::i;:::-;8133:40;;8151:7;8133:40;;8145:4;8133:40;;;;;;;;;;8035:149;7956:234;;:::o;8623:156:32:-;8696:4;8719:53;8727:3;:10;;8763:5;8747:23;;8739:32;;8719:7;:53::i;:::-;8712:60;;8623:156;;;;:::o;4912:118::-;4979:7;5005:3;:11;;5017:5;5005:18;;;;;;;;:::i;:::-;;;;;;;;;;4998:25;;4912:118;;;;:::o;4463:107::-;4519:7;4545:3;:11;;:18;;;;4538:25;;4463:107;;;:::o;1938:106:37:-;2004:8;:6;:8::i;:::-;1996:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;1938:106::o;2397:149:39:-;2455:13;2487:52;2515:4;2499:22;;333:2;2487:52;;:11;:52::i;:::-;2480:59;;2397:149;;;:::o;1808:437::-;1883:13;1908:19;1953:1;1944:6;1940:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;1930:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1908:47;;1965:15;:6;1972:1;1965:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;1990;:6;1997:1;1990:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;2020:9;2045:1;2036:6;2032:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;2020:26;;2015:128;2052:1;2048;:5;2015:128;;;2086:8;2103:3;2095:5;:11;2086:21;;;;;;;:::i;:::-;;;;;2074:6;2081:1;2074:9;;;;;;;;:::i;:::-;;;;;:33;;;;;;;;;;;2131:1;2121:11;;;;;2055:3;;;;:::i;:::-;;;2015:128;;;;2169:1;2160:5;:10;2152:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;2231:6;2217:21;;;1808:437;;;;:::o;2214:404:32:-;2277:4;2298:21;2308:3;2313:5;2298:9;:21::i;:::-;2293:319;;2335:3;:11;;2352:5;2335:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2515:3;:11;;:18;;;;2493:3;:12;;:19;2506:5;2493:19;;;;;;;;;;;:40;;;;2554:4;2547:11;;;;2293:319;2596:5;2589:12;;2214:404;;;;;:::o;2786:1388::-;2852:4;2968:18;2989:3;:12;;:19;3002:5;2989:19;;;;;;;;;;;;2968:40;;3037:1;3023:10;:15;3019:1149;;3392:21;3429:1;3416:10;:14;;;;:::i;:::-;3392:38;;3444:17;3485:1;3464:3;:11;;:18;;;;:22;;;;:::i;:::-;3444:42;;3518:13;3505:9;:26;3501:398;;3551:17;3571:3;:11;;3583:9;3571:22;;;;;;;;:::i;:::-;;;;;;;;;;3551:42;;3722:9;3693:3;:11;;3705:13;3693:26;;;;;;;;:::i;:::-;;;;;;;;;:38;;;;3831:10;3805:3;:12;;:23;3818:9;3805:23;;;;;;;;;;;:36;;;;3533:366;3501:398;3977:3;:11;;:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4069:3;:12;;:19;4082:5;4069:19;;;;;;;;;;;4062:26;;;4110:4;4103:11;;;;;;;3019:1149;4152:5;4145:12;;;2786:1388;;;;;:::o;4255:127::-;4328:4;4374:1;4351:3;:12;;:19;4364:5;4351:19;;;;;;;;;;;;:24;;4344:31;;4255:127;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;88:117:40:-;197:1;194;187:12;211:117;320:1;317;310:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:86::-;1553:7;1593:4;1586:5;1582:16;1571:27;;1518:86;;;:::o;1610:118::-;1681:22;1697:5;1681:22;:::i;:::-;1674:5;1671:33;1661:61;;1718:1;1715;1708:12;1661:61;1610:118;:::o;1734:135::-;1778:5;1816:6;1803:20;1794:29;;1832:31;1857:5;1832:31;:::i;:::-;1734:135;;;;:::o;1875:77::-;1912:7;1941:5;1930:16;;1875:77;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:117::-;2340:1;2337;2330:12;2354:117;2463:1;2460;2453:12;2477:117;2586:1;2583;2576:12;2613:552;2670:8;2680:6;2730:3;2723:4;2715:6;2711:17;2707:27;2697:122;;2738:79;;:::i;:::-;2697:122;2851:6;2838:20;2828:30;;2881:18;2873:6;2870:30;2867:117;;;2903:79;;:::i;:::-;2867:117;3017:4;3009:6;3005:17;2993:29;;3071:3;3063:4;3055:6;3051:17;3041:8;3037:32;3034:41;3031:128;;;3078:79;;:::i;:::-;3031:128;2613:552;;;;;:::o;3171:813::-;3257:6;3265;3273;3281;3330:2;3318:9;3309:7;3305:23;3301:32;3298:119;;;3336:79;;:::i;:::-;3298:119;3456:1;3481:51;3524:7;3515:6;3504:9;3500:22;3481:51;:::i;:::-;3471:61;;3427:115;3581:2;3607:53;3652:7;3643:6;3632:9;3628:22;3607:53;:::i;:::-;3597:63;;3552:118;3737:2;3726:9;3722:18;3709:32;3768:18;3760:6;3757:30;3754:117;;;3790:79;;:::i;:::-;3754:117;3903:64;3959:7;3950:6;3939:9;3935:22;3903:64;:::i;:::-;3885:82;;;;3680:297;3171:813;;;;;;;:::o;3990:118::-;4077:24;4095:5;4077:24;:::i;:::-;4072:3;4065:37;3990:118;;:::o;4114:222::-;4207:4;4245:2;4234:9;4230:18;4222:26;;4258:71;4326:1;4315:9;4311:17;4302:6;4258:71;:::i;:::-;4114:222;;;;:::o;4342:126::-;4379:7;4419:42;4412:5;4408:54;4397:65;;4342:126;;;:::o;4474:96::-;4511:7;4540:24;4558:5;4540:24;:::i;:::-;4529:35;;4474:96;;;:::o;4576:122::-;4649:24;4667:5;4649:24;:::i;:::-;4642:5;4639:35;4629:63;;4688:1;4685;4678:12;4629:63;4576:122;:::o;4704:139::-;4750:5;4788:6;4775:20;4766:29;;4804:33;4831:5;4804:33;:::i;:::-;4704:139;;;;:::o;4849:329::-;4908:6;4957:2;4945:9;4936:7;4932:23;4928:32;4925:119;;;4963:79;;:::i;:::-;4925:119;5083:1;5108:53;5153:7;5144:6;5133:9;5129:22;5108:53;:::i;:::-;5098:63;;5054:117;4849:329;;;;:::o;5184:101::-;5220:7;5260:18;5253:5;5249:30;5238:41;;5184:101;;;:::o;5291:120::-;5363:23;5380:5;5363:23;:::i;:::-;5356:5;5353:34;5343:62;;5401:1;5398;5391:12;5343:62;5291:120;:::o;5417:137::-;5462:5;5500:6;5487:20;5478:29;;5516:32;5542:5;5516:32;:::i;:::-;5417:137;;;;:::o;5560:613::-;5634:6;5642;5650;5699:2;5687:9;5678:7;5674:23;5670:32;5667:119;;;5705:79;;:::i;:::-;5667:119;5825:1;5850:51;5893:7;5884:6;5873:9;5869:22;5850:51;:::i;:::-;5840:61;;5796:115;5950:2;5976:52;6020:7;6011:6;6000:9;5996:22;5976:52;:::i;:::-;5966:62;;5921:117;6077:2;6103:53;6148:7;6139:6;6128:9;6124:22;6103:53;:::i;:::-;6093:63;;6048:118;5560:613;;;;;:::o;6179:329::-;6238:6;6287:2;6275:9;6266:7;6262:23;6258:32;6255:119;;;6293:79;;:::i;:::-;6255:119;6413:1;6438:53;6483:7;6474:6;6463:9;6459:22;6438:53;:::i;:::-;6428:63;;6384:117;6179:329;;;;:::o;6514:474::-;6582:6;6590;6639:2;6627:9;6618:7;6614:23;6610:32;6607:119;;;6645:79;;:::i;:::-;6607:119;6765:1;6790:53;6835:7;6826:6;6815:9;6811:22;6790:53;:::i;:::-;6780:63;;6736:117;6892:2;6918:53;6963:7;6954:6;6943:9;6939:22;6918:53;:::i;:::-;6908:63;;6863:118;6514:474;;;;;:::o;6994:468::-;7059:6;7067;7116:2;7104:9;7095:7;7091:23;7087:32;7084:119;;;7122:79;;:::i;:::-;7084:119;7242:1;7267:52;7311:7;7302:6;7291:9;7287:22;7267:52;:::i;:::-;7257:62;;7213:116;7368:2;7394:51;7437:7;7428:6;7417:9;7413:22;7394:51;:::i;:::-;7384:61;;7339:116;6994:468;;;;;:::o;7468:98::-;7519:6;7553:5;7547:12;7537:22;;7468:98;;;:::o;7572:168::-;7655:11;7689:6;7684:3;7677:19;7729:4;7724:3;7720:14;7705:29;;7572:168;;;;:::o;7746:246::-;7827:1;7837:113;7851:6;7848:1;7845:13;7837:113;;;7936:1;7931:3;7927:11;7921:18;7917:1;7912:3;7908:11;7901:39;7873:2;7870:1;7866:10;7861:15;;7837:113;;;7984:1;7975:6;7970:3;7966:16;7959:27;7808:184;7746:246;;;:::o;7998:102::-;8039:6;8090:2;8086:7;8081:2;8074:5;8070:14;8066:28;8056:38;;7998:102;;;:::o;8106:373::-;8192:3;8220:38;8252:5;8220:38;:::i;:::-;8274:70;8337:6;8332:3;8274:70;:::i;:::-;8267:77;;8353:65;8411:6;8406:3;8399:4;8392:5;8388:16;8353:65;:::i;:::-;8443:29;8465:6;8443:29;:::i;:::-;8438:3;8434:39;8427:46;;8196:283;8106:373;;;;:::o;8485:309::-;8596:4;8634:2;8623:9;8619:18;8611:26;;8683:9;8677:4;8673:20;8669:1;8658:9;8654:17;8647:47;8711:76;8782:4;8773:6;8711:76;:::i;:::-;8703:84;;8485:309;;;;:::o;8800:77::-;8837:7;8866:5;8855:16;;8800:77;;;:::o;8883:122::-;8956:24;8974:5;8956:24;:::i;:::-;8949:5;8946:35;8936:63;;8995:1;8992;8985:12;8936:63;8883:122;:::o;9011:139::-;9057:5;9095:6;9082:20;9073:29;;9111:33;9138:5;9111:33;:::i;:::-;9011:139;;;;:::o;9156:329::-;9215:6;9264:2;9252:9;9243:7;9239:23;9235:32;9232:119;;;9270:79;;:::i;:::-;9232:119;9390:1;9415:53;9460:7;9451:6;9440:9;9436:22;9415:53;:::i;:::-;9405:63;;9361:117;9156:329;;;;:::o;9491:957::-;9585:6;9593;9601;9609;9617;9666:3;9654:9;9645:7;9641:23;9637:33;9634:120;;;9673:79;;:::i;:::-;9634:120;9793:1;9818:51;9861:7;9852:6;9841:9;9837:22;9818:51;:::i;:::-;9808:61;;9764:115;9918:2;9944:52;9988:7;9979:6;9968:9;9964:22;9944:52;:::i;:::-;9934:62;;9889:117;10073:2;10062:9;10058:18;10045:32;10104:18;10096:6;10093:30;10090:117;;;10126:79;;:::i;:::-;10090:117;10239:64;10295:7;10286:6;10275:9;10271:22;10239:64;:::i;:::-;10221:82;;;;10016:297;10352:2;10378:53;10423:7;10414:6;10403:9;10399:22;10378:53;:::i;:::-;10368:63;;10323:118;9491:957;;;;;;;;:::o;10479:576::-;10560:8;10570:6;10620:3;10613:4;10605:6;10601:17;10597:27;10587:122;;10628:79;;:::i;:::-;10587:122;10741:6;10728:20;10718:30;;10771:18;10763:6;10760:30;10757:117;;;10793:79;;:::i;:::-;10757:117;10907:4;10899:6;10895:17;10883:29;;10961:3;10953:4;10945:6;10941:17;10931:8;10927:32;10924:41;10921:128;;;10968:79;;:::i;:::-;10921:128;10479:576;;;;;:::o;11078:568::-;11151:8;11161:6;11211:3;11204:4;11196:6;11192:17;11188:27;11178:122;;11219:79;;:::i;:::-;11178:122;11332:6;11319:20;11309:30;;11362:18;11354:6;11351:30;11348:117;;;11384:79;;:::i;:::-;11348:117;11498:4;11490:6;11486:17;11474:29;;11552:3;11544:4;11536:6;11532:17;11522:8;11518:32;11515:41;11512:128;;;11559:79;;:::i;:::-;11512:128;11078:568;;;;;:::o;11652:950::-;11782:6;11790;11798;11806;11855:2;11843:9;11834:7;11830:23;11826:32;11823:119;;;11861:79;;:::i;:::-;11823:119;12009:1;11998:9;11994:17;11981:31;12039:18;12031:6;12028:30;12025:117;;;12061:79;;:::i;:::-;12025:117;12174:88;12254:7;12245:6;12234:9;12230:22;12174:88;:::i;:::-;12156:106;;;;11952:320;12339:2;12328:9;12324:18;12311:32;12370:18;12362:6;12359:30;12356:117;;;12392:79;;:::i;:::-;12356:117;12505:80;12577:7;12568:6;12557:9;12553:22;12505:80;:::i;:::-;12487:98;;;;12282:313;11652:950;;;;;;;:::o;12608:325::-;12665:6;12714:2;12702:9;12693:7;12689:23;12685:32;12682:119;;;12720:79;;:::i;:::-;12682:119;12840:1;12865:51;12908:7;12899:6;12888:9;12884:22;12865:51;:::i;:::-;12855:61;;12811:115;12608:325;;;;:::o;12939:115::-;13024:23;13041:5;13024:23;:::i;:::-;13019:3;13012:36;12939:115;;:::o;13060:218::-;13151:4;13189:2;13178:9;13174:18;13166:26;;13202:69;13268:1;13257:9;13253:17;13244:6;13202:69;:::i;:::-;13060:218;;;;:::o;13284:103::-;13320:7;13360:20;13353:5;13349:32;13338:43;;13284:103;;;:::o;13393:120::-;13465:23;13482:5;13465:23;:::i;:::-;13458:5;13455:34;13445:62;;13503:1;13500;13493:12;13445:62;13393:120;:::o;13519:137::-;13564:5;13602:6;13589:20;13580:29;;13618:32;13644:5;13618:32;:::i;:::-;13519:137;;;;:::o;13662:472::-;13729:6;13737;13786:2;13774:9;13765:7;13761:23;13757:32;13754:119;;;13792:79;;:::i;:::-;13754:119;13912:1;13937:52;13981:7;13972:6;13961:9;13957:22;13937:52;:::i;:::-;13927:62;;13883:116;14038:2;14064:53;14109:7;14100:6;14089:9;14085:22;14064:53;:::i;:::-;14054:63;;14009:118;13662:472;;;;;:::o;14140:180::-;14188:77;14185:1;14178:88;14285:4;14282:1;14275:15;14309:4;14306:1;14299:15;14326:122;14416:1;14409:5;14406:12;14396:46;;14422:18;;:::i;:::-;14396:46;14326:122;:::o;14454:145::-;14508:7;14537:5;14526:16;;14543:50;14587:5;14543:50;:::i;:::-;14454:145;;;:::o;14605:::-;14670:9;14703:41;14738:5;14703:41;:::i;:::-;14690:54;;14605:145;;;:::o;14756:161::-;14858:52;14904:5;14858:52;:::i;:::-;14853:3;14846:65;14756:161;;:::o;14923:118::-;15010:24;15028:5;15010:24;:::i;:::-;15005:3;14998:37;14923:118;;:::o;15047:583::-;15239:4;15277:3;15266:9;15262:19;15254:27;;15291:71;15359:1;15348:9;15344:17;15335:6;15291:71;:::i;:::-;15372:72;15440:2;15429:9;15425:18;15416:6;15372:72;:::i;:::-;15454:87;15537:2;15526:9;15522:18;15513:6;15454:87;:::i;:::-;15551:72;15619:2;15608:9;15604:18;15595:6;15551:72;:::i;:::-;15047:583;;;;;;;:::o;15636:765::-;15722:6;15730;15738;15746;15795:3;15783:9;15774:7;15770:23;15766:33;15763:120;;;15802:79;;:::i;:::-;15763:120;15922:1;15947:53;15992:7;15983:6;15972:9;15968:22;15947:53;:::i;:::-;15937:63;;15893:117;16049:2;16075:53;16120:7;16111:6;16100:9;16096:22;16075:53;:::i;:::-;16065:63;;16020:118;16177:2;16203:53;16248:7;16239:6;16228:9;16224:22;16203:53;:::i;:::-;16193:63;;16148:118;16305:2;16331:53;16376:7;16367:6;16356:9;16352:22;16331:53;:::i;:::-;16321:63;;16276:118;15636:765;;;;;;;:::o;16407:617::-;16483:6;16491;16499;16548:2;16536:9;16527:7;16523:23;16519:32;16516:119;;;16554:79;;:::i;:::-;16516:119;16674:1;16699:52;16743:7;16734:6;16723:9;16719:22;16699:52;:::i;:::-;16689:62;;16645:116;16800:2;16826:53;16871:7;16862:6;16851:9;16847:22;16826:53;:::i;:::-;16816:63;;16771:118;16928:2;16954:53;16999:7;16990:6;16979:9;16975:22;16954:53;:::i;:::-;16944:63;;16899:118;16407:617;;;;;:::o;17030:118::-;17117:24;17135:5;17117:24;:::i;:::-;17112:3;17105:37;17030:118;;:::o;17154:222::-;17247:4;17285:2;17274:9;17270:18;17262:26;;17298:71;17366:1;17355:9;17351:17;17342:6;17298:71;:::i;:::-;17154:222;;;;:::o;17382:474::-;17450:6;17458;17507:2;17495:9;17486:7;17482:23;17478:32;17475:119;;;17513:79;;:::i;:::-;17475:119;17633:1;17658:53;17703:7;17694:6;17683:9;17679:22;17658:53;:::i;:::-;17648:63;;17604:117;17760:2;17786:53;17831:7;17822:6;17811:9;17807:22;17786:53;:::i;:::-;17776:63;;17731:118;17382:474;;;;;:::o;17862:::-;17930:6;17938;17987:2;17975:9;17966:7;17962:23;17958:32;17955:119;;;17993:79;;:::i;:::-;17955:119;18113:1;18138:53;18183:7;18174:6;18163:9;18159:22;18138:53;:::i;:::-;18128:63;;18084:117;18240:2;18266:53;18311:7;18302:6;18291:9;18287:22;18266:53;:::i;:::-;18256:63;;18211:118;17862:474;;;;;:::o;18342:222::-;18435:4;18473:2;18462:9;18458:18;18450:26;;18486:71;18554:1;18543:9;18539:17;18530:6;18486:71;:::i;:::-;18342:222;;;;:::o;18570:108::-;18647:24;18665:5;18647:24;:::i;:::-;18642:3;18635:37;18570:108;;:::o;18684:114::-;18751:6;18785:5;18779:12;18769:22;;18684:114;;;:::o;18804:174::-;18893:11;18927:6;18922:3;18915:19;18967:4;18962:3;18958:14;18943:29;;18804:174;;;;:::o;18984:132::-;19051:4;19074:3;19066:11;;19104:4;19099:3;19095:14;19087:22;;18984:132;;;:::o;19122:108::-;19199:24;19217:5;19199:24;:::i;:::-;19194:3;19187:37;19122:108;;:::o;19236:179::-;19305:10;19326:46;19368:3;19360:6;19326:46;:::i;:::-;19404:4;19399:3;19395:14;19381:28;;19236:179;;;;:::o;19421:113::-;19491:4;19523;19518:3;19514:14;19506:22;;19421:113;;;:::o;19570:712::-;19679:3;19708:54;19756:5;19708:54;:::i;:::-;19778:76;19847:6;19842:3;19778:76;:::i;:::-;19771:83;;19878:56;19928:5;19878:56;:::i;:::-;19957:7;19988:1;19973:284;19998:6;19995:1;19992:13;19973:284;;;20074:6;20068:13;20101:63;20160:3;20145:13;20101:63;:::i;:::-;20094:70;;20187:60;20240:6;20187:60;:::i;:::-;20177:70;;20033:224;20020:1;20017;20013:9;20008:14;;19973:284;;;19977:14;20273:3;20266:10;;19684:598;;;19570:712;;;;:::o;20288:151::-;20380:52;20426:5;20380:52;:::i;:::-;20375:3;20368:65;20288:151;;:::o;20445:108::-;20522:24;20540:5;20522:24;:::i;:::-;20517:3;20510:37;20445:108;;:::o;20615:1480::-;20732:3;20768:4;20763:3;20759:14;20862:4;20855:5;20851:16;20845:23;20881:63;20938:4;20933:3;20929:14;20915:12;20881:63;:::i;:::-;20783:171;21041:4;21034:5;21030:16;21024:23;21060:63;21117:4;21112:3;21108:14;21094:12;21060:63;:::i;:::-;20964:169;21220:4;21213:5;21209:16;21203:23;21273:3;21267:4;21263:14;21256:4;21251:3;21247:14;21240:38;21299:103;21397:4;21383:12;21299:103;:::i;:::-;21291:111;;21143:270;21499:4;21492:5;21488:16;21482:23;21552:3;21546:4;21542:14;21535:4;21530:3;21526:14;21519:38;21578:103;21676:4;21662:12;21578:103;:::i;:::-;21570:111;;21423:269;21777:4;21770:5;21766:16;21760:23;21796:78;21868:4;21863:3;21859:14;21845:12;21796:78;:::i;:::-;21702:182;21976:4;21969:5;21965:16;21959:23;21995:63;22052:4;22047:3;22043:14;22029:12;21995:63;:::i;:::-;21894:174;22085:4;22078:11;;20737:1358;20615:1480;;;;:::o;22101:369::-;22242:4;22280:2;22269:9;22265:18;22257:26;;22329:9;22323:4;22319:20;22315:1;22304:9;22300:17;22293:47;22357:106;22458:4;22449:6;22357:106;:::i;:::-;22349:114;;22101:369;;;;:::o;22476:112::-;22559:22;22575:5;22559:22;:::i;:::-;22554:3;22547:35;22476:112;;:::o;22594:214::-;22683:4;22721:2;22710:9;22706:18;22698:26;;22734:67;22798:1;22787:9;22783:17;22774:6;22734:67;:::i;:::-;22594:214;;;;:::o;22814:957::-;22908:6;22916;22924;22932;22940;22989:3;22977:9;22968:7;22964:23;22960:33;22957:120;;;22996:79;;:::i;:::-;22957:120;23116:1;23141:51;23184:7;23175:6;23164:9;23160:22;23141:51;:::i;:::-;23131:61;;23087:115;23241:2;23267:52;23311:7;23302:6;23291:9;23287:22;23267:52;:::i;:::-;23257:62;;23212:117;23368:2;23394:53;23439:7;23430:6;23419:9;23415:22;23394:53;:::i;:::-;23384:63;;23339:118;23524:2;23513:9;23509:18;23496:32;23555:18;23547:6;23544:30;23541:117;;;23577:79;;:::i;:::-;23541:117;23690:64;23746:7;23737:6;23726:9;23722:22;23690:64;:::i;:::-;23672:82;;;;23467:297;22814:957;;;;;;;;:::o;23777:619::-;23854:6;23862;23870;23919:2;23907:9;23898:7;23894:23;23890:32;23887:119;;;23925:79;;:::i;:::-;23887:119;24045:1;24070:53;24115:7;24106:6;24095:9;24091:22;24070:53;:::i;:::-;24060:63;;24016:117;24172:2;24198:53;24243:7;24234:6;24223:9;24219:22;24198:53;:::i;:::-;24188:63;;24143:118;24300:2;24326:53;24371:7;24362:6;24351:9;24347:22;24326:53;:::i;:::-;24316:63;;24271:118;23777:619;;;;;:::o;24402:907::-;24495:6;24503;24511;24519;24527;24576:3;24564:9;24555:7;24551:23;24547:33;24544:120;;;24583:79;;:::i;:::-;24544:120;24703:1;24728:53;24773:7;24764:6;24753:9;24749:22;24728:53;:::i;:::-;24718:63;;24674:117;24830:2;24856:53;24901:7;24892:6;24881:9;24877:22;24856:53;:::i;:::-;24846:63;;24801:118;24958:2;24984:53;25029:7;25020:6;25009:9;25005:22;24984:53;:::i;:::-;24974:63;;24929:118;25086:2;25112:52;25156:7;25147:6;25136:9;25132:22;25112:52;:::i;:::-;25102:62;;25057:117;25213:3;25240:52;25284:7;25275:6;25264:9;25260:22;25240:52;:::i;:::-;25230:62;;25184:118;24402:907;;;;;;;;:::o;25315:169::-;25399:11;25433:6;25428:3;25421:19;25473:4;25468:3;25464:14;25449:29;;25315:169;;;;:::o;25490:172::-;25630:24;25626:1;25618:6;25614:14;25607:48;25490:172;:::o;25668:366::-;25810:3;25831:67;25895:2;25890:3;25831:67;:::i;:::-;25824:74;;25907:93;25996:3;25907:93;:::i;:::-;26025:2;26020:3;26016:12;26009:19;;25668:366;;;:::o;26040:419::-;26206:4;26244:2;26233:9;26229:18;26221:26;;26293:9;26287:4;26283:20;26279:1;26268:9;26264:17;26257:47;26321:131;26447:4;26321:131;:::i;:::-;26313:139;;26040:419;;;:::o;26465:182::-;26605:34;26601:1;26593:6;26589:14;26582:58;26465:182;:::o;26653:366::-;26795:3;26816:67;26880:2;26875:3;26816:67;:::i;:::-;26809:74;;26892:93;26981:3;26892:93;:::i;:::-;27010:2;27005:3;27001:12;26994:19;;26653:366;;;:::o;27025:419::-;27191:4;27229:2;27218:9;27214:18;27206:26;;27278:9;27272:4;27268:20;27264:1;27253:9;27249:17;27242:47;27306:131;27432:4;27306:131;:::i;:::-;27298:139;;27025:419;;;:::o;27450:180::-;27498:77;27495:1;27488:88;27595:4;27592:1;27585:15;27619:4;27616:1;27609:15;27636:183;27674:3;27697:23;27714:5;27697:23;:::i;:::-;27688:32;;27742:18;27735:5;27732:29;27729:55;;27764:18;;:::i;:::-;27729:55;27811:1;27804:5;27800:13;27793:20;;27636:183;;;:::o;27825:96::-;27883:6;27911:3;27901:13;;27825:96;;;;:::o;27927:180::-;27975:77;27972:1;27965:88;28072:4;28069:1;28062:15;28096:4;28093:1;28086:15;28113:180;28161:77;28158:1;28151:88;28258:4;28255:1;28248:15;28282:4;28279:1;28272:15;28299:320;28343:6;28380:1;28374:4;28370:12;28360:22;;28427:1;28421:4;28417:12;28448:18;28438:81;;28504:4;28496:6;28492:17;28482:27;;28438:81;28566:2;28558:6;28555:14;28535:18;28532:38;28529:84;;28585:18;;:::i;:::-;28529:84;28350:269;28299:320;;;:::o;28625:140::-;28673:4;28696:3;28688:11;;28719:3;28716:1;28709:14;28753:4;28750:1;28740:18;28732:26;;28625:140;;;:::o;28771:93::-;28808:6;28855:2;28850;28843:5;28839:14;28835:23;28825:33;;28771:93;;;:::o;28870:107::-;28914:8;28964:5;28958:4;28954:16;28933:37;;28870:107;;;;:::o;28983:393::-;29052:6;29102:1;29090:10;29086:18;29125:97;29155:66;29144:9;29125:97;:::i;:::-;29243:39;29273:8;29262:9;29243:39;:::i;:::-;29231:51;;29315:4;29311:9;29304:5;29300:21;29291:30;;29364:4;29354:8;29350:19;29343:5;29340:30;29330:40;;29059:317;;28983:393;;;;;:::o;29382:60::-;29410:3;29431:5;29424:12;;29382:60;;;:::o;29448:142::-;29498:9;29531:53;29549:34;29558:24;29576:5;29558:24;:::i;:::-;29549:34;:::i;:::-;29531:53;:::i;:::-;29518:66;;29448:142;;;:::o;29596:75::-;29639:3;29660:5;29653:12;;29596:75;;;:::o;29677:269::-;29787:39;29818:7;29787:39;:::i;:::-;29848:91;29897:41;29921:16;29897:41;:::i;:::-;29889:6;29882:4;29876:11;29848:91;:::i;:::-;29842:4;29835:105;29753:193;29677:269;;;:::o;29952:73::-;29997:3;29952:73;:::o;30031:189::-;30108:32;;:::i;:::-;30149:65;30207:6;30199;30193:4;30149:65;:::i;:::-;30084:136;30031:189;;:::o;30226:186::-;30286:120;30303:3;30296:5;30293:14;30286:120;;;30357:39;30394:1;30387:5;30357:39;:::i;:::-;30330:1;30323:5;30319:13;30310:22;;30286:120;;;30226:186;;:::o;30418:541::-;30518:2;30513:3;30510:11;30507:445;;;30552:37;30583:5;30552:37;:::i;:::-;30635:29;30653:10;30635:29;:::i;:::-;30625:8;30621:44;30818:2;30806:10;30803:18;30800:49;;;30839:8;30824:23;;30800:49;30862:80;30918:22;30936:3;30918:22;:::i;:::-;30908:8;30904:37;30891:11;30862:80;:::i;:::-;30522:430;;30507:445;30418:541;;;:::o;30965:117::-;31019:8;31069:5;31063:4;31059:16;31038:37;;30965:117;;;;:::o;31088:169::-;31132:6;31165:51;31213:1;31209:6;31201:5;31198:1;31194:13;31165:51;:::i;:::-;31161:56;31246:4;31240;31236:15;31226:25;;31139:118;31088:169;;;;:::o;31262:295::-;31338:4;31484:29;31509:3;31503:4;31484:29;:::i;:::-;31476:37;;31546:3;31543:1;31539:11;31533:4;31530:21;31522:29;;31262:295;;;;:::o;31562:1398::-;31684:43;31723:3;31718;31684:43;:::i;:::-;31792:18;31784:6;31781:30;31778:56;;;31814:18;;:::i;:::-;31778:56;31858:38;31890:4;31884:11;31858:38;:::i;:::-;31943:66;32002:6;31994;31988:4;31943:66;:::i;:::-;32036:1;32065:2;32057:6;32054:14;32082:1;32077:631;;;;32752:1;32769:6;32766:84;;;32825:9;32820:3;32816:19;32803:33;32794:42;;32766:84;32876:67;32936:6;32929:5;32876:67;:::i;:::-;32870:4;32863:81;32725:229;32047:907;;32077:631;32129:4;32125:9;32117:6;32113:22;32163:36;32194:4;32163:36;:::i;:::-;32221:1;32235:215;32249:7;32246:1;32243:14;32235:215;;;32335:9;32330:3;32326:19;32313:33;32305:6;32298:49;32386:1;32378:6;32374:14;32364:24;;32433:2;32422:9;32418:18;32405:31;;32272:4;32269:1;32265:12;32260:17;;32235:215;;;32478:6;32469:7;32466:19;32463:186;;;32543:9;32538:3;32534:19;32521:33;32586:48;32628:4;32620:6;32616:17;32605:9;32586:48;:::i;:::-;32578:6;32571:64;32486:163;32463:186;32695:1;32691;32683:6;32679:14;32675:22;32669:4;32662:36;32084:624;;;32047:907;;31659:1301;;;31562:1398;;;:::o;32966:146::-;33063:6;33058:3;33053;33040:30;33104:1;33095:6;33090:3;33086:16;33079:27;32966:146;;;:::o;33140:314::-;33236:3;33257:70;33320:6;33315:3;33257:70;:::i;:::-;33250:77;;33337:56;33386:6;33381:3;33374:5;33337:56;:::i;:::-;33418:29;33440:6;33418:29;:::i;:::-;33413:3;33409:39;33402:46;;33140:314;;;;;:::o;33460:759::-;33687:4;33725:3;33714:9;33710:19;33702:27;;33739:71;33807:1;33796:9;33792:17;33783:6;33739:71;:::i;:::-;33820:68;33884:2;33873:9;33869:18;33860:6;33820:68;:::i;:::-;33898:70;33964:2;33953:9;33949:18;33940:6;33898:70;:::i;:::-;33978:72;34046:2;34035:9;34031:18;34022:6;33978:72;:::i;:::-;34098:9;34092:4;34088:20;34082:3;34071:9;34067:19;34060:49;34126:86;34207:4;34198:6;34190;34126:86;:::i;:::-;34118:94;;33460:759;;;;;;;;;:::o;34225:182::-;34365:34;34361:1;34353:6;34349:14;34342:58;34225:182;:::o;34413:366::-;34555:3;34576:67;34640:2;34635:3;34576:67;:::i;:::-;34569:74;;34652:93;34741:3;34652:93;:::i;:::-;34770:2;34765:3;34761:12;34754:19;;34413:366;;;:::o;34785:419::-;34951:4;34989:2;34978:9;34974:18;34966:26;;35038:9;35032:4;35028:20;35024:1;35013:9;35009:17;35002:47;35066:131;35192:4;35066:131;:::i;:::-;35058:139;;34785:419;;;:::o;35210:182::-;35350:34;35346:1;35338:6;35334:14;35327:58;35210:182;:::o;35398:366::-;35540:3;35561:67;35625:2;35620:3;35561:67;:::i;:::-;35554:74;;35637:93;35726:3;35637:93;:::i;:::-;35755:2;35750:3;35746:12;35739:19;;35398:366;;;:::o;35770:419::-;35936:4;35974:2;35963:9;35959:18;35951:26;;36023:9;36017:4;36013:20;36009:1;35998:9;35994:17;35987:47;36051:131;36177:4;36051:131;:::i;:::-;36043:139;;35770:419;;;:::o;36195:180::-;36335:32;36331:1;36323:6;36319:14;36312:56;36195:180;:::o;36381:366::-;36523:3;36544:67;36608:2;36603:3;36544:67;:::i;:::-;36537:74;;36620:93;36709:3;36620:93;:::i;:::-;36738:2;36733:3;36729:12;36722:19;;36381:366;;;:::o;36753:419::-;36919:4;36957:2;36946:9;36942:18;36934:26;;37006:9;37000:4;36996:20;36992:1;36981:9;36977:17;36970:47;37034:131;37160:4;37034:131;:::i;:::-;37026:139;;36753:419;;;:::o;37178:176::-;37318:28;37314:1;37306:6;37302:14;37295:52;37178:176;:::o;37360:366::-;37502:3;37523:67;37587:2;37582:3;37523:67;:::i;:::-;37516:74;;37599:93;37688:3;37599:93;:::i;:::-;37717:2;37712:3;37708:12;37701:19;;37360:366;;;:::o;37732:419::-;37898:4;37936:2;37925:9;37921:18;37913:26;;37985:9;37979:4;37975:20;37971:1;37960:9;37956:17;37949:47;38013:131;38139:4;38013:131;:::i;:::-;38005:139;;37732:419;;;:::o;38157:194::-;38197:4;38217:20;38235:1;38217:20;:::i;:::-;38212:25;;38251:20;38269:1;38251:20;:::i;:::-;38246:25;;38295:1;38292;38288:9;38280:17;;38319:1;38313:4;38310:11;38307:37;;;38324:18;;:::i;:::-;38307:37;38157:194;;;;:::o;38357:182::-;38497:34;38493:1;38485:6;38481:14;38474:58;38357:182;:::o;38545:366::-;38687:3;38708:67;38772:2;38767:3;38708:67;:::i;:::-;38701:74;;38784:93;38873:3;38784:93;:::i;:::-;38902:2;38897:3;38893:12;38886:19;;38545:366;;;:::o;38917:419::-;39083:4;39121:2;39110:9;39106:18;39098:26;;39170:9;39164:4;39160:20;39156:1;39145:9;39141:17;39134:47;39198:131;39324:4;39198:131;:::i;:::-;39190:139;;38917:419;;;:::o;39342:332::-;39463:4;39501:2;39490:9;39486:18;39478:26;;39514:71;39582:1;39571:9;39567:17;39558:6;39514:71;:::i;:::-;39595:72;39663:2;39652:9;39648:18;39639:6;39595:72;:::i;:::-;39342:332;;;;;:::o;39680:234::-;39820:34;39816:1;39808:6;39804:14;39797:58;39889:17;39884:2;39876:6;39872:15;39865:42;39680:234;:::o;39920:366::-;40062:3;40083:67;40147:2;40142:3;40083:67;:::i;:::-;40076:74;;40159:93;40248:3;40159:93;:::i;:::-;40277:2;40272:3;40268:12;40261:19;;39920:366;;;:::o;40292:419::-;40458:4;40496:2;40485:9;40481:18;40473:26;;40545:9;40539:4;40535:20;40531:1;40520:9;40516:17;40509:47;40573:131;40699:4;40573:131;:::i;:::-;40565:139;;40292:419;;;:::o;40717:180::-;40857:32;40853:1;40845:6;40841:14;40834:56;40717:180;:::o;40903:366::-;41045:3;41066:67;41130:2;41125:3;41066:67;:::i;:::-;41059:74;;41142:93;41231:3;41142:93;:::i;:::-;41260:2;41255:3;41251:12;41244:19;;40903:366;;;:::o;41275:419::-;41441:4;41479:2;41468:9;41464:18;41456:26;;41528:9;41522:4;41518:20;41514:1;41503:9;41499:17;41492:47;41556:131;41682:4;41556:131;:::i;:::-;41548:139;;41275:419;;;:::o;41700:220::-;41840:34;41836:1;41828:6;41824:14;41817:58;41909:3;41904:2;41896:6;41892:15;41885:28;41700:220;:::o;41926:366::-;42068:3;42089:67;42153:2;42148:3;42089:67;:::i;:::-;42082:74;;42165:93;42254:3;42165:93;:::i;:::-;42283:2;42278:3;42274:12;42267:19;;41926:366;;;:::o;42298:419::-;42464:4;42502:2;42491:9;42487:18;42479:26;;42551:9;42545:4;42541:20;42537:1;42526:9;42522:17;42515:47;42579:131;42705:4;42579:131;:::i;:::-;42571:139;;42298:419;;;:::o;42723:94::-;42756:8;42804:5;42800:2;42796:14;42775:35;;42723:94;;;:::o;42823:::-;42862:7;42891:20;42905:5;42891:20;:::i;:::-;42880:31;;42823:94;;;:::o;42923:100::-;42962:7;42991:26;43011:5;42991:26;:::i;:::-;42980:37;;42923:100;;;:::o;43029:157::-;43134:45;43154:24;43172:5;43154:24;:::i;:::-;43134:45;:::i;:::-;43129:3;43122:58;43029:157;;:::o;43192:147::-;43293:11;43330:3;43315:18;;43192:147;;;;:::o;43367:327::-;43481:3;43502:88;43583:6;43578:3;43502:88;:::i;:::-;43495:95;;43600:56;43649:6;43644:3;43637:5;43600:56;:::i;:::-;43681:6;43676:3;43672:16;43665:23;;43367:327;;;;;:::o;43700:432::-;43868:3;43883:75;43954:3;43945:6;43883:75;:::i;:::-;43983:2;43978:3;43974:12;43967:19;;44003:103;44102:3;44093:6;44085;44003:103;:::i;:::-;43996:110;;44123:3;44116:10;;43700:432;;;;;;:::o;44138:167::-;44278:19;44274:1;44266:6;44262:14;44255:43;44138:167;:::o;44311:366::-;44453:3;44474:67;44538:2;44533:3;44474:67;:::i;:::-;44467:74;;44550:93;44639:3;44550:93;:::i;:::-;44668:2;44663:3;44659:12;44652:19;;44311:366;;;:::o;44683:419::-;44849:4;44887:2;44876:9;44872:18;44864:26;;44936:9;44930:4;44926:20;44922:1;44911:9;44907:17;44900:47;44964:131;45090:4;44964:131;:::i;:::-;44956:139;;44683:419;;;:::o;45108:233::-;45248:34;45244:1;45236:6;45232:14;45225:58;45317:16;45312:2;45304:6;45300:15;45293:41;45108:233;:::o;45347:366::-;45489:3;45510:67;45574:2;45569:3;45510:67;:::i;:::-;45503:74;;45586:93;45675:3;45586:93;:::i;:::-;45704:2;45699:3;45695:12;45688:19;;45347:366;;;:::o;45719:419::-;45885:4;45923:2;45912:9;45908:18;45900:26;;45972:9;45966:4;45962:20;45958:1;45947:9;45943:17;45936:47;46000:131;46126:4;46000:131;:::i;:::-;45992:139;;45719:419;;;:::o;46144:174::-;46284:26;46280:1;46272:6;46268:14;46261:50;46144:174;:::o;46324:366::-;46466:3;46487:67;46551:2;46546:3;46487:67;:::i;:::-;46480:74;;46563:93;46652:3;46563:93;:::i;:::-;46681:2;46676:3;46672:12;46665:19;;46324:366;;;:::o;46696:419::-;46862:4;46900:2;46889:9;46885:18;46877:26;;46949:9;46943:4;46939:20;46935:1;46924:9;46920:17;46913:47;46977:131;47103:4;46977:131;:::i;:::-;46969:139;;46696:419;;;:::o;47121:225::-;47261:34;47257:1;47249:6;47245:14;47238:58;47330:8;47325:2;47317:6;47313:15;47306:33;47121:225;:::o;47352:366::-;47494:3;47515:67;47579:2;47574:3;47515:67;:::i;:::-;47508:74;;47591:93;47680:3;47591:93;:::i;:::-;47709:2;47704:3;47700:12;47693:19;;47352:366;;;:::o;47724:419::-;47890:4;47928:2;47917:9;47913:18;47905:26;;47977:9;47971:4;47967:20;47963:1;47952:9;47948:17;47941:47;48005:131;48131:4;48005:131;:::i;:::-;47997:139;;47724:419;;;:::o;48149:180::-;48197:77;48194:1;48187:88;48294:4;48291:1;48284:15;48318:4;48315:1;48308:15;48335:104;48380:7;48409:24;48427:5;48409:24;:::i;:::-;48398:35;;48335:104;;;:::o;48445:138::-;48526:32;48552:5;48526:32;:::i;:::-;48519:5;48516:43;48506:71;;48573:1;48570;48563:12;48506:71;48445:138;:::o;48589:155::-;48643:5;48681:6;48668:20;48659:29;;48697:41;48732:5;48697:41;:::i;:::-;48589:155;;;;:::o;48750:345::-;48817:6;48866:2;48854:9;48845:7;48841:23;48837:32;48834:119;;;48872:79;;:::i;:::-;48834:119;48992:1;49017:61;49070:7;49061:6;49050:9;49046:22;49017:61;:::i;:::-;49007:71;;48963:125;48750:345;;;;:::o;49101:233::-;49140:3;49163:24;49181:5;49163:24;:::i;:::-;49154:33;;49209:66;49202:5;49199:77;49196:103;;49279:18;;:::i;:::-;49196:103;49326:1;49319:5;49315:13;49308:20;;49101:233;;;:::o;49340:442::-;49489:4;49527:2;49516:9;49512:18;49504:26;;49540:71;49608:1;49597:9;49593:17;49584:6;49540:71;:::i;:::-;49621:72;49689:2;49678:9;49674:18;49665:6;49621:72;:::i;:::-;49703;49771:2;49760:9;49756:18;49747:6;49703:72;:::i;:::-;49340:442;;;;;;:::o;49788:181::-;49928:33;49924:1;49916:6;49912:14;49905:57;49788:181;:::o;49975:366::-;50117:3;50138:67;50202:2;50197:3;50138:67;:::i;:::-;50131:74;;50214:93;50303:3;50214:93;:::i;:::-;50332:2;50327:3;50323:12;50316:19;;49975:366;;;:::o;50347:419::-;50513:4;50551:2;50540:9;50536:18;50528:26;;50600:9;50594:4;50590:20;50586:1;50575:9;50571:17;50564:47;50628:131;50754:4;50628:131;:::i;:::-;50620:139;;50347:419;;;:::o;50772:181::-;50912:33;50908:1;50900:6;50896:14;50889:57;50772:181;:::o;50959:366::-;51101:3;51122:67;51186:2;51181:3;51122:67;:::i;:::-;51115:74;;51198:93;51287:3;51198:93;:::i;:::-;51316:2;51311:3;51307:12;51300:19;;50959:366;;;:::o;51331:419::-;51497:4;51535:2;51524:9;51520:18;51512:26;;51584:9;51578:4;51574:20;51570:1;51559:9;51555:17;51548:47;51612:131;51738:4;51612:131;:::i;:::-;51604:139;;51331:419;;;:::o;51756:181::-;51896:33;51892:1;51884:6;51880:14;51873:57;51756:181;:::o;51943:366::-;52085:3;52106:67;52170:2;52165:3;52106:67;:::i;:::-;52099:74;;52182:93;52271:3;52182:93;:::i;:::-;52300:2;52295:3;52291:12;52284:19;;51943:366;;;:::o;52315:419::-;52481:4;52519:2;52508:9;52504:18;52496:26;;52568:9;52562:4;52558:20;52554:1;52543:9;52539:17;52532:47;52596:131;52722:4;52596:131;:::i;:::-;52588:139;;52315:419;;;:::o;52740:175::-;52880:27;52876:1;52868:6;52864:14;52857:51;52740:175;:::o;52921:366::-;53063:3;53084:67;53148:2;53143:3;53084:67;:::i;:::-;53077:74;;53160:93;53249:3;53160:93;:::i;:::-;53278:2;53273:3;53269:12;53262:19;;52921:366;;;:::o;53293:419::-;53459:4;53497:2;53486:9;53482:18;53474:26;;53546:9;53540:4;53536:20;53532:1;53521:9;53517:17;53510:47;53574:131;53700:4;53574:131;:::i;:::-;53566:139;;53293:419;;;:::o;53718:229::-;53858:34;53854:1;53846:6;53842:14;53835:58;53927:12;53922:2;53914:6;53910:15;53903:37;53718:229;:::o;53953:366::-;54095:3;54116:67;54180:2;54175:3;54116:67;:::i;:::-;54109:74;;54192:93;54281:3;54192:93;:::i;:::-;54310:2;54305:3;54301:12;54294:19;;53953:366;;;:::o;54325:419::-;54491:4;54529:2;54518:9;54514:18;54506:26;;54578:9;54572:4;54568:20;54564:1;54553:9;54549:17;54542:47;54606:131;54732:4;54606:131;:::i;:::-;54598:139;;54325:419;;;:::o;54750:171::-;54890:23;54886:1;54878:6;54874:14;54867:47;54750:171;:::o;54927:366::-;55069:3;55090:67;55154:2;55149:3;55090:67;:::i;:::-;55083:74;;55166:93;55255:3;55166:93;:::i;:::-;55284:2;55279:3;55275:12;55268:19;;54927:366;;;:::o;55299:419::-;55465:4;55503:2;55492:9;55488:18;55480:26;;55552:9;55546:4;55542:20;55538:1;55527:9;55523:17;55516:47;55580:131;55706:4;55580:131;:::i;:::-;55572:139;;55299:419;;;:::o;55724:236::-;55864:34;55860:1;55852:6;55848:14;55841:58;55933:19;55928:2;55920:6;55916:15;55909:44;55724:236;:::o;55966:366::-;56108:3;56129:67;56193:2;56188:3;56129:67;:::i;:::-;56122:74;;56205:93;56294:3;56205:93;:::i;:::-;56323:2;56318:3;56314:12;56307:19;;55966:366;;;:::o;56338:419::-;56504:4;56542:2;56531:9;56527:18;56519:26;;56591:9;56585:4;56581:20;56577:1;56566:9;56562:17;56555:47;56619:131;56745:4;56619:131;:::i;:::-;56611:139;;56338:419;;;:::o;56763:332::-;56884:4;56922:2;56911:9;56907:18;56899:26;;56935:71;57003:1;56992:9;56988:17;56979:6;56935:71;:::i;:::-;57016:72;57084:2;57073:9;57069:18;57060:6;57016:72;:::i;:::-;56763:332;;;;;:::o;57101:180::-;57241:32;57237:1;57229:6;57225:14;57218:56;57101:180;:::o;57287:366::-;57429:3;57450:67;57514:2;57509:3;57450:67;:::i;:::-;57443:74;;57526:93;57615:3;57526:93;:::i;:::-;57644:2;57639:3;57635:12;57628:19;;57287:366;;;:::o;57659:419::-;57825:4;57863:2;57852:9;57848:18;57840:26;;57912:9;57906:4;57902:20;57898:1;57887:9;57883:17;57876:47;57940:131;58066:4;57940:131;:::i;:::-;57932:139;;57659:419;;;:::o;58084:115::-;58169:23;58186:5;58169:23;:::i;:::-;58164:3;58157:36;58084:115;;:::o;58205:545::-;58378:4;58416:3;58405:9;58401:19;58393:27;;58430:71;58498:1;58487:9;58483:17;58474:6;58430:71;:::i;:::-;58511:72;58579:2;58568:9;58564:18;58555:6;58511:72;:::i;:::-;58593:70;58659:2;58648:9;58644:18;58635:6;58593:70;:::i;:::-;58673;58739:2;58728:9;58724:18;58715:6;58673:70;:::i;:::-;58205:545;;;;;;;:::o;58756:166::-;58896:18;58892:1;58884:6;58880:14;58873:42;58756:166;:::o;58928:366::-;59070:3;59091:67;59155:2;59150:3;59091:67;:::i;:::-;59084:74;;59167:93;59256:3;59167:93;:::i;:::-;59285:2;59280:3;59276:12;59269:19;;58928:366;;;:::o;59300:419::-;59466:4;59504:2;59493:9;59489:18;59481:26;;59553:9;59547:4;59543:20;59539:1;59528:9;59524:17;59517:47;59581:131;59707:4;59581:131;:::i;:::-;59573:139;;59300:419;;;:::o;59725:439::-;59874:4;59912:2;59901:9;59897:18;59889:26;;59925:71;59993:1;59982:9;59978:17;59969:6;59925:71;:::i;:::-;60043:9;60037:4;60033:20;60028:2;60017:9;60013:18;60006:48;60071:86;60152:4;60143:6;60135;60071:86;:::i;:::-;60063:94;;59725:439;;;;;;:::o;60170:148::-;60272:11;60309:3;60294:18;;60170:148;;;;:::o;60324:173::-;60464:25;60460:1;60452:6;60448:14;60441:49;60324:173;:::o;60503:402::-;60663:3;60684:85;60766:2;60761:3;60684:85;:::i;:::-;60677:92;;60778:93;60867:3;60778:93;:::i;:::-;60896:2;60891:3;60887:12;60880:19;;60503:402;;;:::o;60911:99::-;60963:6;60997:5;60991:12;60981:22;;60911:99;;;:::o;61016:390::-;61122:3;61150:39;61183:5;61150:39;:::i;:::-;61205:89;61287:6;61282:3;61205:89;:::i;:::-;61198:96;;61303:65;61361:6;61356:3;61349:4;61342:5;61338:16;61303:65;:::i;:::-;61393:6;61388:3;61384:16;61377:23;;61126:280;61016:390;;;;:::o;61412:167::-;61552:19;61548:1;61540:6;61536:14;61529:43;61412:167;:::o;61585:402::-;61745:3;61766:85;61848:2;61843:3;61766:85;:::i;:::-;61759:92;;61860:93;61949:3;61860:93;:::i;:::-;61978:2;61973:3;61969:12;61962:19;;61585:402;;;:::o;61993:967::-;62375:3;62397:148;62541:3;62397:148;:::i;:::-;62390:155;;62562:95;62653:3;62644:6;62562:95;:::i;:::-;62555:102;;62674:148;62818:3;62674:148;:::i;:::-;62667:155;;62839:95;62930:3;62921:6;62839:95;:::i;:::-;62832:102;;62951:3;62944:10;;61993:967;;;;;:::o;62966:377::-;63054:3;63082:39;63115:5;63082:39;:::i;:::-;63137:71;63201:6;63196:3;63137:71;:::i;:::-;63130:78;;63217:65;63275:6;63270:3;63263:4;63256:5;63252:16;63217:65;:::i;:::-;63307:29;63329:6;63307:29;:::i;:::-;63302:3;63298:39;63291:46;;63058:285;62966:377;;;;:::o;63349:313::-;63462:4;63500:2;63489:9;63485:18;63477:26;;63549:9;63543:4;63539:20;63535:1;63524:9;63520:17;63513:47;63577:78;63650:4;63641:6;63577:78;:::i;:::-;63569:86;;63349:313;;;;:::o;63668:170::-;63808:22;63804:1;63796:6;63792:14;63785:46;63668:170;:::o;63844:366::-;63986:3;64007:67;64071:2;64066:3;64007:67;:::i;:::-;64000:74;;64083:93;64172:3;64083:93;:::i;:::-;64201:2;64196:3;64192:12;64185:19;;63844:366;;;:::o;64216:419::-;64382:4;64420:2;64409:9;64405:18;64397:26;;64469:9;64463:4;64459:20;64455:1;64444:9;64440:17;64433:47;64497:131;64623:4;64497:131;:::i;:::-;64489:139;;64216:419;;;:::o;64641:410::-;64681:7;64704:20;64722:1;64704:20;:::i;:::-;64699:25;;64738:20;64756:1;64738:20;:::i;:::-;64733:25;;64793:1;64790;64786:9;64815:30;64833:11;64815:30;:::i;:::-;64804:41;;64994:1;64985:7;64981:15;64978:1;64975:22;64955:1;64948:9;64928:83;64905:139;;65024:18;;:::i;:::-;64905:139;64689:362;64641:410;;;;:::o;65057:191::-;65097:3;65116:20;65134:1;65116:20;:::i;:::-;65111:25;;65150:20;65168:1;65150:20;:::i;:::-;65145:25;;65193:1;65190;65186:9;65179:16;;65214:3;65211:1;65208:10;65205:36;;;65221:18;;:::i;:::-;65205:36;65057:191;;;;:::o;65254:171::-;65293:3;65316:24;65334:5;65316:24;:::i;:::-;65307:33;;65362:4;65355:5;65352:15;65349:41;;65370:18;;:::i;:::-;65349:41;65417:1;65410:5;65406:13;65399:20;;65254:171;;;:::o;65431:182::-;65571:34;65567:1;65559:6;65555:14;65548:58;65431:182;:::o;65619:366::-;65761:3;65782:67;65846:2;65841:3;65782:67;:::i;:::-;65775:74;;65858:93;65947:3;65858:93;:::i;:::-;65976:2;65971:3;65967:12;65960:19;;65619:366;;;:::o;65991:419::-;66157:4;66195:2;66184:9;66180:18;66172:26;;66244:9;66238:4;66234:20;66230:1;66219:9;66215:17;66208:47;66272:131;66398:4;66272:131;:::i;:::-;66264:139;;65991:419;;;:::o;66416:180::-;66464:77;66461:1;66454:88;66561:4;66558:1;66551:15;66585:4;66582:1;66575:15", + "source": "// SPDX-License-Identifier: MIT\r\npragma solidity 0.8.19;\r\n\r\nimport \"./openzeppelin/AccessControlEnumerable.sol\";\r\nimport \"./openzeppelin/Pausable.sol\";\r\nimport \"./interfaces/IDepositExecute.sol\";\r\nimport \"./interfaces/IBridge.sol\";\r\nimport \"./interfaces/IERCHandler.sol\";\r\nimport \"./interfaces/IGenericHandler.sol\";\r\n\r\n/**\r\n @title Facilitates deposits, creation and votiing of deposit proposals, and deposit executions.\r\n @author ChainSafe Systems.\r\n */\r\ncontract Bridge is Pausable, AccessControlEnumerable {\r\n\r\n uint8 public _chainID;\r\n uint256 public _relayerThreshold;\r\n\r\n uint256 public _totalProposals;\r\n uint256 public _fee;\r\n uint256 public _expiry;\r\n\r\n enum Vote {No, Yes}\r\n\r\n enum ProposalStatus {Inactive, Active, Passed, Executed, Cancelled}\r\n\r\n struct Proposal {\r\n bytes32 _resourceID;\r\n bytes32 _dataHash;\r\n address[] _yesVotes;\r\n address[] _noVotes;\r\n ProposalStatus _status;\r\n uint256 _proposedBlock;\r\n }\r\n\r\n // destinationChainID => number of deposits\r\n mapping(uint8 => uint64) public _depositCounts;\r\n // resourceID => handler address\r\n mapping(bytes32 => address) public _resourceIDToHandlerAddress;\r\n // depositNonce => destinationChainID => bytes\r\n mapping(uint64 => mapping(uint8 => bytes)) public _depositRecords;\r\n // destinationChainID + depositNonce => dataHash => Proposal\r\n mapping(uint72 => mapping(bytes32 => Proposal)) public _proposals;\r\n // destinationChainID + depositNonce => dataHash => relayerAddress => bool\r\n mapping(uint72 => mapping(bytes32 => mapping(address => bool))) public _hasVotedOnProposal;\r\n\r\n event RelayerThresholdChanged(uint indexed newThreshold);\r\n event Deposit(\r\n uint8 indexed destinationChainID,\r\n bytes32 indexed resourceID,\r\n uint64 indexed depositNonce\r\n );\r\n event ProposalEvent(\r\n uint8 indexed originChainID,\r\n uint64 indexed depositNonce,\r\n ProposalStatus indexed status,\r\n bytes32 resourceID,\r\n bytes32 dataHash\r\n );\r\n\r\n bytes32 public constant RELAYER_ROLE = keccak256(\"RELAYER_ROLE\");\r\n bytes32 public constant EXECUTOR_ROLE = keccak256(\"EXECUTOR_ROLE\");\r\n\r\n modifier onlyAdmin() {\r\n require(hasRole(DEFAULT_ADMIN_ROLE, msg.sender), \"sender doesn't have admin role\");\r\n _;\r\n }\r\n\r\n modifier onlyAdminOrRelayer() {\r\n require(hasRole(DEFAULT_ADMIN_ROLE, msg.sender) || hasRole(RELAYER_ROLE, msg.sender),\r\n \"sender is not relayer or admin\");\r\n _;\r\n }\r\n\r\n modifier onlyRelayers() {\r\n require(hasRole(RELAYER_ROLE, msg.sender), \"sender doesn't have relayer role\");\r\n _;\r\n }\r\n\r\n modifier onlyExecutorOrAbove() {\r\n require(hasRole(RELAYER_ROLE, msg.sender) || hasRole(EXECUTOR_ROLE, msg.sender) || hasRole(DEFAULT_ADMIN_ROLE, msg.sender), \"sender doesn't have executor role\");\r\n _;\r\n }\r\n\r\n /**\r\n @notice Initializes Bridge, creates and grants {msg.sender} the admin role,\r\n creates and grants {initialRelayers} the relayer role.\r\n @param chainID ID of chain the Bridge contract exists on.\r\n @param initialRelayers Addresses that should be initially granted the relayer role.\r\n @param initialRelayerThreshold Number of votes needed for a deposit proposal to be considered passed.\r\n */\r\n constructor (uint8 chainID, address[] memory initialRelayers, uint initialRelayerThreshold, uint256 fee, uint256 expiry) {\r\n _chainID = chainID;\r\n _relayerThreshold = initialRelayerThreshold;\r\n _fee = fee;\r\n _expiry = expiry;\r\n\r\n _setupRole(DEFAULT_ADMIN_ROLE, msg.sender);\r\n _setRoleAdmin(RELAYER_ROLE, DEFAULT_ADMIN_ROLE);\r\n\r\n // Relayer can add or remove External Executor\r\n _setupRole(EXECUTOR_ROLE, msg.sender);\r\n _setRoleAdmin(EXECUTOR_ROLE, RELAYER_ROLE);\r\n\r\n uint initialRelayerCount = initialRelayers.length;\r\n for (uint i; i < initialRelayerCount; i++) {\r\n grantRole(RELAYER_ROLE, initialRelayers[i]);\r\n }\r\n\r\n }\r\n\r\n /**\r\n @notice Returns true if {relayer} has the relayer role.\r\n @param relayer Address to check.\r\n */\r\n function isRelayer(address relayer) external view returns (bool) {\r\n return hasRole(RELAYER_ROLE, relayer);\r\n }\r\n\r\n /**\r\n @notice Removes admin role from {msg.sender} and grants it to {newAdmin}.\r\n @notice Only callable by an address that currently has the admin role.\r\n @param newAdmin Address that admin role will be granted to.\r\n */\r\n function renounceAdmin(address newAdmin) external onlyAdmin {\r\n grantRole(DEFAULT_ADMIN_ROLE, newAdmin);\r\n renounceRole(DEFAULT_ADMIN_ROLE, msg.sender);\r\n }\r\n\r\n /**\r\n @notice Pauses deposits, proposal creation and voting, and deposit executions.\r\n @notice Only callable by an address that currently has the admin role.\r\n */\r\n function adminPauseTransfers() external onlyAdmin {\r\n _pause();\r\n }\r\n\r\n /**\r\n @notice Unpauses deposits, proposal creation and voting, and deposit executions.\r\n @notice Only callable by an address that currently has the admin role.\r\n */\r\n function adminUnpauseTransfers() external onlyAdmin {\r\n _unpause();\r\n }\r\n\r\n /**\r\n @notice Modifies the number of votes required for a proposal to be considered passed.\r\n @notice Only callable by an address that currently has the admin role.\r\n @param newThreshold Value {_relayerThreshold} will be changed to.\r\n @notice Emits {RelayerThresholdChanged} event.\r\n */\r\n function adminChangeRelayerThreshold(uint newThreshold) external onlyAdmin {\r\n _relayerThreshold = newThreshold;\r\n emit RelayerThresholdChanged(newThreshold);\r\n }\r\n\r\n /**\r\n @notice Grants {relayerAddress} the relayer role.\r\n @notice Only callable by an address that currently has the admin role.\r\n @param relayerAddress Address of relayer to be added.\r\n */\r\n function adminAddRelayer(address relayerAddress) external onlyAdmin {\r\n require(!hasRole(RELAYER_ROLE, relayerAddress), \"addr already has relayer role!\");\r\n grantRole(RELAYER_ROLE, relayerAddress);\r\n }\r\n\r\n /**\r\n @notice Removes relayer role for {relayerAddress}.\r\n @notice Only callable by an address that currently has the admin role.\r\n @param relayerAddress Address of relayer to be removed.\r\n */\r\n function adminRemoveRelayer(address relayerAddress) external onlyAdmin {\r\n require(hasRole(RELAYER_ROLE, relayerAddress), \"addr doesn't have relayer role!\");\r\n revokeRole(RELAYER_ROLE, relayerAddress);\r\n }\r\n\r\n /**\r\n @notice Grants {executorAddress} the executor role.\r\n @notice Only callable by an address that currently has the relayer role.\r\n @param executorAddress Address of executor to be added.\r\n */\r\n function relayerAddExecutor(address executorAddress) external onlyRelayers {\r\n require(!hasRole(EXECUTOR_ROLE, executorAddress), \"addr already has executor role!\");\r\n grantRole(EXECUTOR_ROLE, executorAddress);\r\n }\r\n\r\n /**\r\n @notice Removes relayer role for {executorAddress}.\r\n @notice Only callable by an address that currently has the relayer role.\r\n @param executorAddress Address of executor to be removed.\r\n */\r\n function relayerRemoveExecutor(address executorAddress) external onlyRelayers {\r\n require(hasRole(EXECUTOR_ROLE, executorAddress), \"addr doesn't have executor role!\");\r\n revokeRole(EXECUTOR_ROLE, executorAddress);\r\n }\r\n\r\n /**\r\n @notice Sets a new resource for handler contracts that use the IERCHandler interface,\r\n and maps the {handlerAddress} to {resourceID} in {_resourceIDToHandlerAddress}.\r\n @notice Only callable by an address that currently has the admin role.\r\n @param handlerAddress Address of handler resource will be set for.\r\n @param resourceID ResourceID to be used when making deposits.\r\n @param tokenAddress Address of contract to be called when a deposit is made and a deposited is executed.\r\n */\r\n function adminSetResource(address handlerAddress, bytes32 resourceID, address tokenAddress) external onlyAdmin {\r\n _resourceIDToHandlerAddress[resourceID] = handlerAddress;\r\n IERCHandler handler = IERCHandler(handlerAddress);\r\n handler.setResource(resourceID, tokenAddress);\r\n }\r\n\r\n /**\r\n @notice Sets a new resource for handler contracts that use the IGenericHandler interface,\r\n and maps the {handlerAddress} to {resourceID} in {_resourceIDToHandlerAddress}.\r\n @notice Only callable by an address that currently has the admin role.\r\n @param handlerAddress Address of handler resource will be set for.\r\n @param resourceID ResourceID to be used when making deposits.\r\n @param contractAddress Address of contract to be called when a deposit is made and a deposited is executed.\r\n */\r\n function adminSetGenericResource(\r\n address handlerAddress,\r\n bytes32 resourceID,\r\n address contractAddress,\r\n bytes4 depositFunctionSig,\r\n bytes4 executeFunctionSig\r\n ) external onlyAdmin {\r\n _resourceIDToHandlerAddress[resourceID] = handlerAddress;\r\n IGenericHandler handler = IGenericHandler(handlerAddress);\r\n handler.setResource(resourceID, contractAddress, depositFunctionSig, executeFunctionSig);\r\n }\r\n\r\n /**\r\n @notice Sets a resource as burnable for handler contracts that use the IERCHandler interface.\r\n @notice Only callable by an address that currently has the admin role.\r\n @param handlerAddress Address of handler resource will be set for.\r\n @param tokenAddress Address of contract to be called when a deposit is made and a deposited is executed.\r\n */\r\n function adminSetBurnable(address handlerAddress, address tokenAddress) external onlyAdmin {\r\n IERCHandler handler = IERCHandler(handlerAddress);\r\n handler.setBurnable(tokenAddress);\r\n }\r\n\r\n /**\r\n @notice Returns a proposal.\r\n @param originChainID Chain ID deposit originated from.\r\n @param depositNonce ID of proposal generated by proposal's origin Bridge contract.\r\n @param dataHash Hash of data to be provided when deposit proposal is executed.\r\n @return Proposal which consists of:\r\n - _dataHash Hash of data to be provided when deposit proposal is executed.\r\n - _yesVotes Number of votes in favor of proposal.\r\n - _noVotes Number of votes against proposal.\r\n - _status Current status of proposal.\r\n */\r\n function getProposal(uint8 originChainID, uint64 depositNonce, bytes32 dataHash) external view returns (Proposal memory) {\r\n uint72 nonceAndID = (uint72(depositNonce) << 8) | uint72(originChainID);\r\n return _proposals[nonceAndID][dataHash];\r\n }\r\n\r\n /**\r\n @notice Changes deposit fee.\r\n @notice Only callable by admin.\r\n @param newFee Value {_fee} will be updated to.\r\n */\r\n function adminChangeFee(uint newFee) external onlyAdmin {\r\n require(_fee != newFee, \"Current fee is equal to new fee\");\r\n _fee = newFee;\r\n }\r\n\r\n /**\r\n @notice Changes xpiry.\r\n @notice Only callable by admin.\r\n @param newExpiry Value {_expiry} will be updated to.\r\n */\r\n function adminExpiry(uint newExpiry) external onlyAdmin {\r\n _expiry = newExpiry;\r\n }\r\n\r\n /**\r\n @notice Used to manually withdraw funds from ERC safes.\r\n @param handlerAddress Address of handler to withdraw from.\r\n @param tokenAddress Address of token to withdraw.\r\n @param recipient Address to withdraw tokens to.\r\n @param amountOrTokenID Either the amount of ERC20 tokens or the ERC721 token ID to withdraw.\r\n */\r\n function adminWithdraw(\r\n address handlerAddress,\r\n address tokenAddress,\r\n address recipient,\r\n uint256 amountOrTokenID\r\n ) external onlyAdmin {\r\n IERCHandler handler = IERCHandler(handlerAddress);\r\n handler.withdraw(tokenAddress, recipient, amountOrTokenID);\r\n }\r\n\r\n /**\r\n @notice Initiates a transfer using a specified handler contract.\r\n @notice Only callable when Bridge is not paused.\r\n @param destinationChainID ID of chain deposit will be bridged to.\r\n @param resourceID ResourceID used to find address of handler to be used for deposit.\r\n @param data Additional data to be passed to specified handler.\r\n @notice Emits {Deposit} event.\r\n */\r\n function deposit(uint8 destinationChainID, bytes32 resourceID, bytes calldata data) external payable whenNotPaused {\r\n require(msg.value == _fee, \"Incorrect fee supplied\");\r\n\r\n address handler = _resourceIDToHandlerAddress[resourceID];\r\n require(handler != address(0), \"resourceID not mapped to handler\");\r\n\r\n uint64 depositNonce = ++_depositCounts[destinationChainID];\r\n _depositRecords[depositNonce][destinationChainID] = data;\r\n\r\n IDepositExecute depositHandler = IDepositExecute(handler);\r\n depositHandler.deposit(resourceID, destinationChainID, depositNonce, msg.sender, data);\r\n\r\n emit Deposit(destinationChainID, resourceID, depositNonce);\r\n }\r\n\r\n /**\r\n @notice When called, {msg.sender} will be marked as voting in favor of proposal.\r\n @notice Only callable by relayers when Bridge is not paused.\r\n @param chainID ID of chain deposit originated from.\r\n @param depositNonce ID of deposited generated by origin Bridge contract.\r\n @param data Data provided when deposit was made.\r\n @notice Proposal must not have already been passed or executed.\r\n @notice {msg.sender} must not have already voted on proposal.\r\n @notice Emits {ProposalEvent} event with status indicating the proposal status.\r\n */\r\n function voteProposal(uint8 chainID, uint64 depositNonce, bytes32 resourceID, bytes calldata data) external onlyRelayers whenNotPaused {\r\n address handler = _resourceIDToHandlerAddress[resourceID];\r\n bytes32 dataHash = keccak256(abi.encodePacked(handler, data));\r\n uint72 nonceAndID = (uint72(depositNonce) << 8) | uint72(chainID);\r\n Proposal storage proposal = _proposals[nonceAndID][dataHash];\r\n\r\n require(_resourceIDToHandlerAddress[resourceID] != address(0), \"no handler for resourceID\");\r\n require(uint(proposal._status) <= 1, \"proposal already passed/executed/cancelled\");\r\n require(!_hasVotedOnProposal[nonceAndID][dataHash][msg.sender], \"relayer already voted\");\r\n\r\n if (uint(proposal._status) == 0) {\r\n ++_totalProposals;\r\n _proposals[nonceAndID][dataHash] = Proposal({\r\n _resourceID : resourceID,\r\n _dataHash : dataHash,\r\n _yesVotes : new address[](1),\r\n _noVotes : new address[](0),\r\n _status : ProposalStatus.Active,\r\n _proposedBlock : block.number\r\n });\r\n\r\n proposal._yesVotes[0] = msg.sender;\r\n emit ProposalEvent(chainID, depositNonce, ProposalStatus.Active, resourceID, dataHash);\r\n } else {\r\n if ((block.number - proposal._proposedBlock) > _expiry) {\r\n // if the number of blocks that has passed since this proposal was\r\n // submitted exceeds the expiry threshold set, cancel the proposal\r\n proposal._status = ProposalStatus.Cancelled;\r\n emit ProposalEvent(chainID, depositNonce, ProposalStatus.Cancelled, resourceID, dataHash);\r\n } else {\r\n // // dataHash is never manually provided, so no need to check anymore\r\n // require(dataHash == proposal._dataHash, \"datahash mismatch\");\r\n // I think there is a risk, we should not vote without checking resourceID\r\n // Otherwise, Relayer can initialize a proposal with right data but wrong resourceID and lure other relayers to vote \r\n require(proposal._resourceID == resourceID, \"Cheating Risk; Relayer vote with wrong resourceID\");\r\n proposal._yesVotes.push(msg.sender);\r\n }\r\n\r\n }\r\n if (proposal._status != ProposalStatus.Cancelled) {\r\n _hasVotedOnProposal[nonceAndID][dataHash][msg.sender] = true;\r\n\r\n // If _depositThreshold is set to 1, then auto finalize\r\n // or if _relayerThreshold has been exceeded\r\n if (_relayerThreshold <= 1 || proposal._yesVotes.length >= _relayerThreshold) {\r\n if (_executeProposal(data, resourceID)) {\r\n proposal._status = ProposalStatus.Executed;\r\n emit ProposalEvent(chainID, depositNonce, ProposalStatus.Executed, resourceID, dataHash);\r\n return;\r\n } else {\r\n // If we can not execute due to any ERC20 Handler issue, then just make the proposal passed\r\n proposal._status = ProposalStatus.Passed;\r\n emit ProposalEvent(chainID, depositNonce, ProposalStatus.Passed, resourceID, dataHash);\r\n return;\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n /**\r\n @notice Executes a deposit proposal that is considered passed using a specified handler contract.\r\n @notice Only callable by relayers when Bridge is not paused.\r\n @param chainID ID of chain deposit originated from.\r\n @param depositNonce ID of deposited generated by origin Bridge contract.\r\n @param dataHash Hash of data originally provided when deposit was made.\r\n @notice Proposal must be past expiry threshold.\r\n @notice Emits {ProposalEvent} event with status {Cancelled}.\r\n */\r\n function cancelProposal(uint8 chainID, uint64 depositNonce, bytes32 dataHash) public onlyAdminOrRelayer {\r\n uint72 nonceAndID = (uint72(depositNonce) << 8) | uint72(chainID);\r\n Proposal storage proposal = _proposals[nonceAndID][dataHash];\r\n\r\n require(proposal._status != ProposalStatus.Cancelled, \"Proposal already cancelled\");\r\n require((block.number - proposal._proposedBlock) > _expiry, \"Proposal not at expiry threshold\");\r\n\r\n proposal._status = ProposalStatus.Cancelled;\r\n emit ProposalEvent(chainID, depositNonce, ProposalStatus.Cancelled, proposal._resourceID, proposal._dataHash);\r\n\r\n }\r\n\r\n /**\r\n @notice Executes a deposit proposal that is considered passed using a specified handler contract.\r\n @notice callable by Executor or above when Bridge is not paused.\r\n @param chainID ID of chain deposit originated from.\r\n @param resourceID ResourceID to be used when making deposits.\r\n @param depositNonce ID of deposited generated by origin Bridge contract.\r\n @param data Data originally provided when deposit was made.\r\n @notice Proposal must have Passed status.\r\n @notice Hash of {data} must equal proposal's {dataHash}.\r\n @notice Emits {ProposalEvent} event with status {Executed}.\r\n */\r\n function executeProposal(uint8 chainID, uint64 depositNonce, bytes calldata data, bytes32 resourceID) external onlyExecutorOrAbove whenNotPaused {\r\n address handler = _resourceIDToHandlerAddress[resourceID];\r\n uint72 nonceAndID = (uint72(depositNonce) << 8) | uint72(chainID);\r\n bytes32 dataHash = keccak256(abi.encodePacked(handler, data));\r\n Proposal storage proposal = _proposals[nonceAndID][dataHash];\r\n // We must check this. So if executor cheating and outrun a wrong resource id proposal \r\n require(proposal._resourceID == resourceID, \"wrong resource id\");\r\n require(proposal._status == ProposalStatus.Passed, \"proposal already transferred/not finalized yet\");\r\n \r\n require(_executeProposal(data, resourceID), \"Execution not successful\");\r\n proposal._status = ProposalStatus.Executed;\r\n emit ProposalEvent(chainID, depositNonce, ProposalStatus.Executed, resourceID, dataHash);\r\n }\r\n\r\n /**\r\n @notice Executes a deposit proposal that is considered passed using a specified handler contract.\r\n @notice This method itself does not change the status of proposal or emit event!\r\n @notice Internal method not callable by public.\r\n @param resourceID ResourceID to be used when making deposits.\r\n @param data Data originally provided when deposit was made.\r\n @return bool The result of handler execution:\r\n @notice This method does not check if proposal is Passed status!\r\n @notice Hash of {data} must equal proposal's {dataHash}.\r\n */\r\n function _executeProposal(bytes calldata data, bytes32 resourceID) internal returns (bool) {\r\n IDepositExecute depositHandler = IDepositExecute(_resourceIDToHandlerAddress[resourceID]);\r\n try depositHandler.executeProposal(resourceID, data) {\r\n return true;\r\n } catch {\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n @notice Transfers eth in the contract to the specified addresses. The parameters addrs and amounts are mapped 1-1.\r\n This means that the address at index 0 for addrs will receive the amount (in WEI) from amounts at index 0.\r\n @param addrs Array of addresses to transfer {amounts} to.\r\n @param amounts Array of amonuts to transfer to {addrs}.\r\n */\r\n function transferFunds(address payable[] calldata addrs, uint[] calldata amounts) external onlyAdmin {\r\n require(addrs.length == amounts.length, \"length of address and amounts dismatch\");\r\n uint addrCount = addrs.length;\r\n for (uint i = 0; i < addrCount; i++) {\r\n addrs[i].transfer(amounts[i]);\r\n }\r\n }\r\n\r\n}\r\n", + "sourcePath": "/mnt/d/SourceTree/CAN_bridge_sol/contracts/Bridge.sol", + "ast": { + "absolutePath": "project:/contracts/Bridge.sol", + "exportedSymbols": { + "AccessControl": [ + 1651 + ], + "AccessControlEnumerable": [ + 1776 + ], + "Bridge": [ + 1209 + ], + "Context": [ + 1806 + ], + "ERC165": [ + 1830 + ], + "EnumerableSet": [ + 2443 + ], + "IAccessControl": [ + 2516 + ], + "IAccessControlEnumerable": [ + 2541 + ], + "IBridge": [ + 1265 + ], + "IDepositExecute": [ + 1291 + ], + "IERC165": [ + 2553 + ], + "IERCHandler": [ + 1319 + ], + "IGenericHandler": [ + 1335 + ], + "Math": [ + 3419 + ], + "Pausable": [ + 3527 + ], + "SignedMath": [ + 3632 + ], + "Strings": [ + 3861 + ] + }, + "id": 1210, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "0.8", + ".19" + ], + "nodeType": "PragmaDirective", + "src": "33:23:0" + }, + { + "absolutePath": "project:/contracts/openzeppelin/AccessControlEnumerable.sol", + "file": "./openzeppelin/AccessControlEnumerable.sol", + "id": 2, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1210, + "sourceUnit": 1777, + "src": "60:52:0", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "project:/contracts/openzeppelin/Pausable.sol", + "file": "./openzeppelin/Pausable.sol", + "id": 3, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1210, + "sourceUnit": 3528, + "src": "114:37:0", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "project:/contracts/interfaces/IDepositExecute.sol", + "file": "./interfaces/IDepositExecute.sol", + "id": 4, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1210, + "sourceUnit": 1292, + "src": "153:42:0", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "project:/contracts/interfaces/IBridge.sol", + "file": "./interfaces/IBridge.sol", + "id": 5, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1210, + "sourceUnit": 1266, + "src": "197:34:0", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "project:/contracts/interfaces/IERCHandler.sol", + "file": "./interfaces/IERCHandler.sol", + "id": 6, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1210, + "sourceUnit": 1320, + "src": "233:38:0", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "project:/contracts/interfaces/IGenericHandler.sol", + "file": "./interfaces/IGenericHandler.sol", + "id": 7, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1210, + "sourceUnit": 1336, + "src": "273:42:0", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 9, + "name": "Pausable", + "nameLocations": [ + "481:8:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3527, + "src": "481:8:0" + }, + "id": 10, + "nodeType": "InheritanceSpecifier", + "src": "481:8:0" + }, + { + "baseName": { + "id": 11, + "name": "AccessControlEnumerable", + "nameLocations": [ + "491:23:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1776, + "src": "491:23:0" + }, + "id": 12, + "nodeType": "InheritanceSpecifier", + "src": "491:23:0" + } + ], + "canonicalName": "Bridge", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 8, + "nodeType": "StructuredDocumentation", + "src": "319:141:0", + "text": "@title Facilitates deposits, creation and votiing of deposit proposals, and deposit executions.\n@author ChainSafe Systems." + }, + "fullyImplemented": true, + "id": 1209, + "linearizedBaseContracts": [ + 1209, + 1776, + 1651, + 1830, + 2553, + 2541, + 2516, + 3527, + 1806 + ], + "name": "Bridge", + "nameLocation": "471:6:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "functionSelector": "beab7131", + "id": 14, + "mutability": "mutable", + "name": "_chainID", + "nameLocation": "539:8:0", + "nodeType": "VariableDeclaration", + "scope": 1209, + "src": "524:23:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 13, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "524:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "d7a9cd79", + "id": 16, + "mutability": "mutable", + "name": "_relayerThreshold", + "nameLocation": "569:17:0", + "nodeType": "VariableDeclaration", + "scope": 1209, + "src": "554:32:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "554:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "9d5773e0", + "id": 18, + "mutability": "mutable", + "name": "_totalProposals", + "nameLocation": "610:15:0", + "nodeType": "VariableDeclaration", + "scope": 1209, + "src": "595:30:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 17, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "595:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "c5b37c22", + "id": 20, + "mutability": "mutable", + "name": "_fee", + "nameLocation": "647:4:0", + "nodeType": "VariableDeclaration", + "scope": 1209, + "src": "632:19:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 19, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "632:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "c5ec8970", + "id": 22, + "mutability": "mutable", + "name": "_expiry", + "nameLocation": "673:7:0", + "nodeType": "VariableDeclaration", + "scope": 1209, + "src": "658:22:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 21, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "658:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "canonicalName": "Bridge.Vote", + "id": 25, + "members": [ + { + "id": 23, + "name": "No", + "nameLocation": "700:2:0", + "nodeType": "EnumValue", + "src": "700:2:0" + }, + { + "id": 24, + "name": "Yes", + "nameLocation": "704:3:0", + "nodeType": "EnumValue", + "src": "704:3:0" + } + ], + "name": "Vote", + "nameLocation": "694:4:0", + "nodeType": "EnumDefinition", + "src": "689:19:0" + }, + { + "canonicalName": "Bridge.ProposalStatus", + "id": 31, + "members": [ + { + "id": 26, + "name": "Inactive", + "nameLocation": "737:8:0", + "nodeType": "EnumValue", + "src": "737:8:0" + }, + { + "id": 27, + "name": "Active", + "nameLocation": "747:6:0", + "nodeType": "EnumValue", + "src": "747:6:0" + }, + { + "id": 28, + "name": "Passed", + "nameLocation": "755:6:0", + "nodeType": "EnumValue", + "src": "755:6:0" + }, + { + "id": 29, + "name": "Executed", + "nameLocation": "763:8:0", + "nodeType": "EnumValue", + "src": "763:8:0" + }, + { + "id": 30, + "name": "Cancelled", + "nameLocation": "773:9:0", + "nodeType": "EnumValue", + "src": "773:9:0" + } + ], + "name": "ProposalStatus", + "nameLocation": "721:14:0", + "nodeType": "EnumDefinition", + "src": "716:67:0" + }, + { + "canonicalName": "Bridge.Proposal", + "id": 47, + "members": [ + { + "constant": false, + "id": 33, + "mutability": "mutable", + "name": "_resourceID", + "nameLocation": "826:11:0", + "nodeType": "VariableDeclaration", + "scope": 47, + "src": "818:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 32, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "818:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 35, + "mutability": "mutable", + "name": "_dataHash", + "nameLocation": "856:9:0", + "nodeType": "VariableDeclaration", + "scope": 47, + "src": "848:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 34, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "848:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 38, + "mutability": "mutable", + "name": "_yesVotes", + "nameLocation": "886:9:0", + "nodeType": "VariableDeclaration", + "scope": 47, + "src": "876:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 36, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "876:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 37, + "nodeType": "ArrayTypeName", + "src": "876:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 41, + "mutability": "mutable", + "name": "_noVotes", + "nameLocation": "916:8:0", + "nodeType": "VariableDeclaration", + "scope": 47, + "src": "906:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 39, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "906:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 40, + "nodeType": "ArrayTypeName", + "src": "906:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 44, + "mutability": "mutable", + "name": "_status", + "nameLocation": "950:7:0", + "nodeType": "VariableDeclaration", + "scope": 47, + "src": "935:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ProposalStatus_$31", + "typeString": "enum Bridge.ProposalStatus" + }, + "typeName": { + "id": 43, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 42, + "name": "ProposalStatus", + "nameLocations": [ + "935:14:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 31, + "src": "935:14:0" + }, + "referencedDeclaration": 31, + "src": "935:14:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ProposalStatus_$31", + "typeString": "enum Bridge.ProposalStatus" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 46, + "mutability": "mutable", + "name": "_proposedBlock", + "nameLocation": "976:14:0", + "nodeType": "VariableDeclaration", + "scope": 47, + "src": "968:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 45, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "968:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "Proposal", + "nameLocation": "798:8:0", + "nodeType": "StructDefinition", + "scope": 1209, + "src": "791:207:0", + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "4b0b919d", + "id": 51, + "mutability": "mutable", + "name": "_depositCounts", + "nameLocation": "1087:14:0", + "nodeType": "VariableDeclaration", + "scope": 1209, + "src": "1055:46:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint8_$_t_uint64_$", + "typeString": "mapping(uint8 => uint64)" + }, + "typeName": { + "id": 50, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 48, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1063:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Mapping", + "src": "1055:24:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint8_$_t_uint64_$", + "typeString": "mapping(uint8 => uint64)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 49, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "1072:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "84db809f", + "id": 55, + "mutability": "mutable", + "name": "_resourceIDToHandlerAddress", + "nameLocation": "1181:27:0", + "nodeType": "VariableDeclaration", + "scope": 1209, + "src": "1146:62:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + }, + "typeName": { + "id": 54, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 52, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1154:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "1146:27:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 53, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1165:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "3ee7094a", + "id": 61, + "mutability": "mutable", + "name": "_depositRecords", + "nameLocation": "1317:15:0", + "nodeType": "VariableDeclaration", + "scope": 1209, + "src": "1267:65:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_uint8_$_t_bytes_storage_$_$", + "typeString": "mapping(uint64 => mapping(uint8 => bytes))" + }, + "typeName": { + "id": 60, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 56, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "1275:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "Mapping", + "src": "1267:42:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_uint8_$_t_bytes_storage_$_$", + "typeString": "mapping(uint64 => mapping(uint8 => bytes))" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 59, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 57, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1293:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Mapping", + "src": "1285:23:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint8_$_t_bytes_storage_$", + "typeString": "mapping(uint8 => bytes)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 58, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1302:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + } + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "50598719", + "id": 68, + "mutability": "mutable", + "name": "_proposals", + "nameLocation": "1460:10:0", + "nodeType": "VariableDeclaration", + "scope": 1209, + "src": "1405:65:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint72_$_t_mapping$_t_bytes32_$_t_struct$_Proposal_$47_storage_$_$", + "typeString": "mapping(uint72 => mapping(bytes32 => struct Bridge.Proposal))" + }, + "typeName": { + "id": 67, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 62, + "name": "uint72", + "nodeType": "ElementaryTypeName", + "src": "1413:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + } + }, + "nodeType": "Mapping", + "src": "1405:47:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint72_$_t_mapping$_t_bytes32_$_t_struct$_Proposal_$47_storage_$_$", + "typeString": "mapping(uint72 => mapping(bytes32 => struct Bridge.Proposal))" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 66, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 63, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1431:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "1423:28:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$47_storage_$", + "typeString": "mapping(bytes32 => struct Bridge.Proposal)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 65, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 64, + "name": "Proposal", + "nameLocations": [ + "1442:8:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 47, + "src": "1442:8:0" + }, + "referencedDeclaration": 47, + "src": "1442:8:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$47_storage_ptr", + "typeString": "struct Bridge.Proposal" + } + } + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "7febe63f", + "id": 76, + "mutability": "mutable", + "name": "_hasVotedOnProposal", + "nameLocation": "1628:19:0", + "nodeType": "VariableDeclaration", + "scope": 1209, + "src": "1557:90:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint72_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$_$", + "typeString": "mapping(uint72 => mapping(bytes32 => mapping(address => bool)))" + }, + "typeName": { + "id": 75, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 69, + "name": "uint72", + "nodeType": "ElementaryTypeName", + "src": "1565:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + } + }, + "nodeType": "Mapping", + "src": "1557:63:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint72_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$_$", + "typeString": "mapping(uint72 => mapping(bytes32 => mapping(address => bool)))" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 74, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 70, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1583:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "1575:44:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(bytes32 => mapping(address => bool))" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 73, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 71, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1602:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1594:24:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 72, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1613:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + } + } + }, + "visibility": "public" + }, + { + "anonymous": false, + "eventSelector": "a20d6b84cd798a24038be305eff8a45ca82ef54a2aa2082005d8e14c0a4746c8", + "id": 80, + "name": "RelayerThresholdChanged", + "nameLocation": "1662:23:0", + "nodeType": "EventDefinition", + "parameters": { + "id": 79, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 78, + "indexed": true, + "mutability": "mutable", + "name": "newThreshold", + "nameLocation": "1699:12:0", + "nodeType": "VariableDeclaration", + "scope": 80, + "src": "1686:25:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 77, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1686:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1685:27:0" + }, + "src": "1656:57:0" + }, + { + "anonymous": false, + "eventSelector": "dbb69440df8433824a026ef190652f29929eb64b4d1d5d2a69be8afe3e6eaed8", + "id": 88, + "name": "Deposit", + "nameLocation": "1725:7:0", + "nodeType": "EventDefinition", + "parameters": { + "id": 87, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 82, + "indexed": true, + "mutability": "mutable", + "name": "destinationChainID", + "nameLocation": "1759:18:0", + "nodeType": "VariableDeclaration", + "scope": 88, + "src": "1743:34:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 81, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1743:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 84, + "indexed": true, + "mutability": "mutable", + "name": "resourceID", + "nameLocation": "1804:10:0", + "nodeType": "VariableDeclaration", + "scope": 88, + "src": "1788:26:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 83, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1788:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 86, + "indexed": true, + "mutability": "mutable", + "name": "depositNonce", + "nameLocation": "1841:12:0", + "nodeType": "VariableDeclaration", + "scope": 88, + "src": "1825:28:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 85, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "1825:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + } + ], + "src": "1732:128:0" + }, + "src": "1719:142:0" + }, + { + "anonymous": false, + "eventSelector": "803c5a12f6bde629cea32e63d4b92d1b560816a6fb72e939d3c89e1cab650417", + "id": 101, + "name": "ProposalEvent", + "nameLocation": "1873:13:0", + "nodeType": "EventDefinition", + "parameters": { + "id": 100, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 90, + "indexed": true, + "mutability": "mutable", + "name": "originChainID", + "nameLocation": "1921:13:0", + "nodeType": "VariableDeclaration", + "scope": 101, + "src": "1897:37:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 89, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1897:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 92, + "indexed": true, + "mutability": "mutable", + "name": "depositNonce", + "nameLocation": "1969:12:0", + "nodeType": "VariableDeclaration", + "scope": 101, + "src": "1945:36:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 91, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "1945:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 95, + "indexed": true, + "mutability": "mutable", + "name": "status", + "nameLocation": "2016:6:0", + "nodeType": "VariableDeclaration", + "scope": 101, + "src": "1992:30:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ProposalStatus_$31", + "typeString": "enum Bridge.ProposalStatus" + }, + "typeName": { + "id": 94, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 93, + "name": "ProposalStatus", + "nameLocations": [ + "1992:14:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 31, + "src": "1992:14:0" + }, + "referencedDeclaration": 31, + "src": "1992:14:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ProposalStatus_$31", + "typeString": "enum Bridge.ProposalStatus" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 97, + "indexed": false, + "mutability": "mutable", + "name": "resourceID", + "nameLocation": "2041:10:0", + "nodeType": "VariableDeclaration", + "scope": 101, + "src": "2033:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 96, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2033:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 99, + "indexed": false, + "mutability": "mutable", + "name": "dataHash", + "nameLocation": "2070:8:0", + "nodeType": "VariableDeclaration", + "scope": 101, + "src": "2062:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 98, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2062:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1886:199:0" + }, + "src": "1867:219:0" + }, + { + "constant": true, + "functionSelector": "926d7d7f", + "id": 106, + "mutability": "constant", + "name": "RELAYER_ROLE", + "nameLocation": "2118:12:0", + "nodeType": "VariableDeclaration", + "scope": 1209, + "src": "2094:64:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 102, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2094:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "52454c415945525f524f4c45", + "id": 104, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2143:14:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc4", + "typeString": "literal_string \"RELAYER_ROLE\"" + }, + "value": "RELAYER_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_e2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc4", + "typeString": "literal_string \"RELAYER_ROLE\"" + } + ], + "id": 103, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967288, + "src": "2133:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 105, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2133:25:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "functionSelector": "07bd0265", + "id": 111, + "mutability": "constant", + "name": "EXECUTOR_ROLE", + "nameLocation": "2189:13:0", + "nodeType": "VariableDeclaration", + "scope": 1209, + "src": "2165:66:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 107, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2165:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "4558454355544f525f524f4c45", + "id": 109, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2215:15:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63", + "typeString": "literal_string \"EXECUTOR_ROLE\"" + }, + "value": "EXECUTOR_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_d8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63", + "typeString": "literal_string \"EXECUTOR_ROLE\"" + } + ], + "id": 108, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967288, + "src": "2205:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 110, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2205:26:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "body": { + "id": 123, + "nodeType": "Block", + "src": "2261:113:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 115, + "name": "DEFAULT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1363, + "src": "2288:18:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 116, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "2308:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 117, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2312:6:0", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "2308:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 114, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1415, + "src": "2280:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 118, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2280:39:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "73656e64657220646f65736e277420686176652061646d696e20726f6c65", + "id": 119, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2321:32:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_cccb3b305edc7308d7027b1001041a46b235f7d3213d690bb469676069d9b205", + "typeString": "literal_string \"sender doesn't have admin role\"" + }, + "value": "sender doesn't have admin role" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_cccb3b305edc7308d7027b1001041a46b235f7d3213d690bb469676069d9b205", + "typeString": "literal_string \"sender doesn't have admin role\"" + } + ], + "id": 113, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "2272:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 120, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2272:82:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 121, + "nodeType": "ExpressionStatement", + "src": "2272:82:0" + }, + { + "id": 122, + "nodeType": "PlaceholderStatement", + "src": "2365:1:0" + } + ] + }, + "id": 124, + "name": "onlyAdmin", + "nameLocation": "2249:9:0", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 112, + "nodeType": "ParameterList", + "parameters": [], + "src": "2258:2:0" + }, + "src": "2240:134:0", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 142, + "nodeType": "Block", + "src": "2412:163:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 137, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 128, + "name": "DEFAULT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1363, + "src": "2439:18:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 129, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "2459:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 130, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2463:6:0", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "2459:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 127, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1415, + "src": "2431:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 131, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2431:39:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "arguments": [ + { + "id": 133, + "name": "RELAYER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 106, + "src": "2482:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 134, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "2496:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 135, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2500:6:0", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "2496:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 132, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1415, + "src": "2474:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 136, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2474:33:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2431:76:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "73656e646572206973206e6f742072656c61796572206f722061646d696e", + "id": 138, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2522:32:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_060530e99bec4f476b8f8f370f65f741cac486899cd6c35c4dd2e82720711afe", + "typeString": "literal_string \"sender is not relayer or admin\"" + }, + "value": "sender is not relayer or admin" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_060530e99bec4f476b8f8f370f65f741cac486899cd6c35c4dd2e82720711afe", + "typeString": "literal_string \"sender is not relayer or admin\"" + } + ], + "id": 126, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "2423:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 139, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2423:132:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 140, + "nodeType": "ExpressionStatement", + "src": "2423:132:0" + }, + { + "id": 141, + "nodeType": "PlaceholderStatement", + "src": "2566:1:0" + } + ] + }, + "id": 143, + "name": "onlyAdminOrRelayer", + "nameLocation": "2391:18:0", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 125, + "nodeType": "ParameterList", + "parameters": [], + "src": "2409:2:0" + }, + "src": "2382:193:0", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 155, + "nodeType": "Block", + "src": "2607:109:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 147, + "name": "RELAYER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 106, + "src": "2634:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 148, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "2648:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 149, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2652:6:0", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "2648:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 146, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1415, + "src": "2626:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 150, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2626:33:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "73656e64657220646f65736e277420686176652072656c6179657220726f6c65", + "id": 151, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2661:34:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5edc249083609d56bd00194353566fb7b8c09e436c3268ab57a56188319b6d4", + "typeString": "literal_string \"sender doesn't have relayer role\"" + }, + "value": "sender doesn't have relayer role" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c5edc249083609d56bd00194353566fb7b8c09e436c3268ab57a56188319b6d4", + "typeString": "literal_string \"sender doesn't have relayer role\"" + } + ], + "id": 145, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "2618:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 152, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2618:78:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 153, + "nodeType": "ExpressionStatement", + "src": "2618:78:0" + }, + { + "id": 154, + "nodeType": "PlaceholderStatement", + "src": "2707:1:0" + } + ] + }, + "id": 156, + "name": "onlyRelayers", + "nameLocation": "2592:12:0", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 144, + "nodeType": "ParameterList", + "parameters": [], + "src": "2604:2:0" + }, + "src": "2583:133:0", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 180, + "nodeType": "Block", + "src": "2755:191:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 175, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 169, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 160, + "name": "RELAYER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 106, + "src": "2782:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 161, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "2796:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } }, + "id": 162, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2800:6:0", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "2796:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ { - "expression": { - "argumentTypes": null, - "id": 2164, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 2159, - "name": "proposal", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2135, - "src": "18896:8:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Proposal_$1146_storage_ptr", - "typeString": "struct Bridge.Proposal storage pointer" - } - }, - "id": 2161, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "_status", - "nodeType": "MemberAccess", - "referencedDeclaration": 1143, - "src": "18896:16:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 2162, - "name": "ProposalStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1131, - "src": "18915:14:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$1131_$", - "typeString": "type(enum Bridge.ProposalStatus)" - } - }, - "id": 2163, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Executed", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "18915:23:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - } - }, - "src": "18896:42:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - } - }, - "id": 2165, - "nodeType": "ExpressionStatement", - "src": "18896:42:4" + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" }, { - "assignments": [2167], - "declarations": [ - { - "constant": false, - "id": 2167, - "mutability": "mutable", - "name": "depositHandler", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 2194, - "src": "18949:30:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IDepositExecute_$2280", - "typeString": "contract IDepositExecute" - }, - "typeName": { - "contractScope": null, - "id": 2166, - "name": "IDepositExecute", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2280, - "src": "18949:15:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IDepositExecute_$2280", - "typeString": "contract IDepositExecute" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 2174, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 2169, - "name": "_resourceIDToHandlerAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1154, - "src": "18998:27:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", - "typeString": "mapping(bytes32 => address)" - } - }, - "id": 2172, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 2170, - "name": "proposal", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2135, - "src": "19026:8:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Proposal_$1146_storage_ptr", - "typeString": "struct Bridge.Proposal storage pointer" - } - }, - "id": 2171, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "_resourceID", - "nodeType": "MemberAccess", - "referencedDeclaration": 1133, - "src": "19026:20:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "18998:49:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 2168, - "name": "IDepositExecute", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2280, - "src": "18982:15:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IDepositExecute_$2280_$", - "typeString": "type(contract IDepositExecute)" - } - }, - "id": 2173, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "18982:66:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IDepositExecute_$2280", - "typeString": "contract IDepositExecute" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "18949:99:4" + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 159, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1415, + "src": "2774:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 163, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2774:33:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "arguments": [ + { + "id": 165, + "name": "EXECUTOR_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 111, + "src": "2819:13:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 166, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "2834:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } }, + "id": 167, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2838:6:0", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "2834:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 2178, - "name": "proposal", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2135, - "src": "19089:8:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Proposal_$1146_storage_ptr", - "typeString": "struct Bridge.Proposal storage pointer" - } - }, - "id": 2179, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "_resourceID", - "nodeType": "MemberAccess", - "referencedDeclaration": 1133, - "src": "19089:20:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 2180, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2094, - "src": "19111:4:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - ], - "expression": { - "argumentTypes": null, - "id": 2175, - "name": "depositHandler", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2167, - "src": "19058:14:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IDepositExecute_$2280", - "typeString": "contract IDepositExecute" - } - }, - "id": 2177, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "executeProposal", - "nodeType": "MemberAccess", - "referencedDeclaration": 2279, - "src": "19058:30:4", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (bytes32,bytes memory) external" - } - }, - "id": 2181, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "19058:58:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2182, - "nodeType": "ExpressionStatement", - "src": "19058:58:4" + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" }, { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 2184, - "name": "chainID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2090, - "src": "19146:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "id": 2185, - "name": "depositNonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "19155:12:4", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 2186, - "name": "proposal", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2135, - "src": "19169:8:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Proposal_$1146_storage_ptr", - "typeString": "struct Bridge.Proposal storage pointer" - } - }, - "id": 2187, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "_status", - "nodeType": "MemberAccess", - "referencedDeclaration": 1143, - "src": "19169:16:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 2188, - "name": "proposal", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2135, - "src": "19187:8:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Proposal_$1146_storage_ptr", - "typeString": "struct Bridge.Proposal storage pointer" - } - }, - "id": 2189, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "_resourceID", - "nodeType": "MemberAccess", - "referencedDeclaration": 1133, - "src": "19187:20:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 2190, - "name": "proposal", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2135, - "src": "19209:8:4", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Proposal_$1146_storage_ptr", - "typeString": "struct Bridge.Proposal storage pointer" - } - }, - "id": 2191, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "_dataHash", - "nodeType": "MemberAccess", - "referencedDeclaration": 1135, - "src": "19209:18:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 2183, - "name": "ProposalEvent", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1206, - "src": "19132:13:4", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_uint64_$_t_enum$_ProposalStatus_$1131_$_t_bytes32_$_t_bytes32_$returns$__$", - "typeString": "function (uint8,uint64,enum Bridge.ProposalStatus,bytes32,bytes32)" - } - }, - "id": 2192, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "19132:96:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2193, - "nodeType": "EmitStatement", - "src": "19127:101:4" + "typeIdentifier": "t_address", + "typeString": "address" } - ] + ], + "id": 164, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1415, + "src": "2811:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 168, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2811:34:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2774:71:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "arguments": [ + { + "id": 171, + "name": "DEFAULT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1363, + "src": "2857:18:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 172, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "2877:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 173, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2881:6:0", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "2877:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 170, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1415, + "src": "2849:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 174, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2849:39:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2774:114:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "73656e64657220646f65736e27742068617665206578656375746f7220726f6c65", + "id": 176, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2890:35:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6b0d25b2bc527bc6f95ae29b783be3a899152e11d3bc0d29d07090dd4e4bb2b5", + "typeString": "literal_string \"sender doesn't have executor role\"" + }, + "value": "sender doesn't have executor role" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_6b0d25b2bc527bc6f95ae29b783be3a899152e11d3bc0d29d07090dd4e4bb2b5", + "typeString": "literal_string \"sender doesn't have executor role\"" + } + ], + "id": 158, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "2766:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 177, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2766:160:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 178, + "nodeType": "ExpressionStatement", + "src": "2766:160:0" + }, + { + "id": 179, + "nodeType": "PlaceholderStatement", + "src": "2937:1:0" + } + ] + }, + "id": 181, + "name": "onlyExecutorOrAbove", + "nameLocation": "2733:19:0", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 157, + "nodeType": "ParameterList", + "parameters": [], + "src": "2752:2:0" + }, + "src": "2724:222:0", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 257, + "nodeType": "Block", + "src": "3513:598:0", + "statements": [ + { + "expression": { + "id": 198, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 196, + "name": "_chainID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "3524:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 197, + "name": "chainID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 184, + "src": "3535:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "3524:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 199, + "nodeType": "ExpressionStatement", + "src": "3524:18:0" + }, + { + "expression": { + "id": 202, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 200, + "name": "_relayerThreshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16, + "src": "3553:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 201, + "name": "initialRelayerThreshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 189, + "src": "3573:23:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3553:43:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 203, + "nodeType": "ExpressionStatement", + "src": "3553:43:0" + }, + { + "expression": { + "id": 206, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 204, + "name": "_fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 20, + "src": "3607:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 205, + "name": "fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 191, + "src": "3614:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3607:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 207, + "nodeType": "ExpressionStatement", + "src": "3607:10:0" + }, + { + "expression": { + "id": 210, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 208, + "name": "_expiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 22, + "src": "3628:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 209, + "name": "expiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 193, + "src": "3638:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3628:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 211, + "nodeType": "ExpressionStatement", + "src": "3628:16:0" + }, + { + "expression": { + "arguments": [ + { + "id": 213, + "name": "DEFAULT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1363, + "src": "3668:18:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 214, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "3688:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 215, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3692:6:0", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "3688:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 212, + "name": "_setupRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1559, + "src": "3657:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 216, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3657:42:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 217, + "nodeType": "ExpressionStatement", + "src": "3657:42:0" + }, + { + "expression": { + "arguments": [ + { + "id": 219, + "name": "RELAYER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 106, + "src": "3724:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 220, + "name": "DEFAULT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1363, + "src": "3738:18:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 218, + "name": "_setRoleAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1587, + "src": "3710:13:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$", + "typeString": "function (bytes32,bytes32)" + } + }, + "id": 221, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3710:47:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 222, + "nodeType": "ExpressionStatement", + "src": "3710:47:0" + }, + { + "expression": { + "arguments": [ + { + "id": 224, + "name": "EXECUTOR_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 111, + "src": "3837:13:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 225, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "3852:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 226, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3856:6:0", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "3852:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 223, + "name": "_setupRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1559, + "src": "3826:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 227, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3826:37:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 228, + "nodeType": "ExpressionStatement", + "src": "3826:37:0" + }, + { + "expression": { + "arguments": [ + { + "id": 230, + "name": "EXECUTOR_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 111, + "src": "3888:13:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 231, + "name": "RELAYER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 106, + "src": "3903:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" }, - "documentation": { - "id": 2088, - "nodeType": "StructuredDocumentation", - "src": "17638:648:4", - "text": "@notice Executes a deposit proposal that is considered passed using a specified handler contract.\n@notice Only callable by relayers when Bridge is not paused.\n@param chainID ID of chain deposit originated from.\n@param resourceID ResourceID to be used when making deposits.\n@param depositNonce ID of deposited generated by origin Bridge contract.\n@param data Data originally provided when deposit was made.\n@notice Proposal must have Passed status.\n@notice Hash of {data} must equal proposal's {dataHash}.\n@notice Emits {ProposalEvent} event with status {Executed}." - }, - "functionSelector": "4454b20d", - "id": 2195, - "implemented": true, - "kind": "function", - "modifiers": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 229, + "name": "_setRoleAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1587, + "src": "3874:13:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$", + "typeString": "function (bytes32,bytes32)" + } + }, + "id": 232, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3874:42:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 233, + "nodeType": "ExpressionStatement", + "src": "3874:42:0" + }, + { + "assignments": [ + 235 + ], + "declarations": [ + { + "constant": false, + "id": 235, + "mutability": "mutable", + "name": "initialRelayerCount", + "nameLocation": "3934:19:0", + "nodeType": "VariableDeclaration", + "scope": 257, + "src": "3929:24:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 234, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3929:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 238, + "initialValue": { + "expression": { + "id": 236, + "name": "initialRelayers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 187, + "src": "3956:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 237, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3972:6:0", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "3956:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3929:49:0" + }, + { + "body": { + "id": 255, + "nodeType": "Block", + "src": "4032:70:0", + "statements": [ + { + "expression": { + "arguments": [ { - "arguments": null, - "id": 2099, - "modifierName": { - "argumentTypes": null, - "id": 2098, - "name": "onlyRelayers", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1242, - "src": "18402:12:4", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "18402:12:4" + "id": 249, + "name": "RELAYER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 106, + "src": "4057:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } }, { - "arguments": null, - "id": 2101, - "modifierName": { - "argumentTypes": null, - "id": 2100, - "name": "whenNotPaused", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2375, - "src": "18415:13:4", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "18415:13:4" - } - ], - "name": "executeProposal", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 2097, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2090, - "mutability": "mutable", - "name": "chainID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 2195, - "src": "18316:13:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 2089, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "18316:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 2092, - "mutability": "mutable", - "name": "depositNonce", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 2195, - "src": "18331:19:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 2091, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "18331:6:4", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 2094, - "mutability": "mutable", - "name": "data", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 2195, - "src": "18352:19:4", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 2093, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "18352:5:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 2096, - "mutability": "mutable", - "name": "resourceID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 2195, - "src": "18373:18:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 2095, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "18373:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" + "baseExpression": { + "id": 250, + "name": "initialRelayers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 187, + "src": "4071:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 252, + "indexExpression": { + "id": 251, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 240, + "src": "4087:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4071:18:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } ], - "src": "18315:77:4" + "id": 248, + "name": "grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1502, + "src": "4047:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 253, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4047:43:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 254, + "nodeType": "ExpressionStatement", + "src": "4047:43:0" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 244, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 242, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 240, + "src": "4002:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 243, + "name": "initialRelayerCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 235, + "src": "4006:19:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4002:23:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 256, + "initializationExpression": { + "assignments": [ + 240 + ], + "declarations": [ + { + "constant": false, + "id": 240, + "mutability": "mutable", + "name": "i", + "nameLocation": "3999:1:0", + "nodeType": "VariableDeclaration", + "scope": 256, + "src": "3994:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - "returnParameters": { - "id": 2102, - "nodeType": "ParameterList", - "parameters": [], - "src": "18429:0:4" + "typeName": { + "id": 239, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3994:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, - "scope": 2244, - "src": "18291:944:4", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" + "visibility": "internal" + } + ], + "id": 241, + "nodeType": "VariableDeclarationStatement", + "src": "3994:6:0" + }, + "loopExpression": { + "expression": { + "id": 246, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "4027:3:0", + "subExpression": { + "id": 245, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 240, + "src": "4027:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, - { - "body": { - "id": 2242, - "nodeType": "Block", - "src": "19726:237:4", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 2212, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 2208, - "name": "addrs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2199, - "src": "19744:5:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_payable_$dyn_calldata_ptr", - "typeString": "address payable[] calldata" - } - }, - "id": 2209, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "19744:12:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 2210, - "name": "amounts", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2202, - "src": "19760:7:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[] calldata" - } - }, - "id": 2211, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "19760:14:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "19744:30:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "6c656e677468206f66206164647265737320616e6420616d6f756e7473206469736d61746368", - "id": 2213, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "19776:40:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_073bceac60cfe31ff4e1652a9ed1958ffac9b37b9b2d1e976a3ea18c79e0f6fb", - "typeString": "literal_string \"length of address and amounts dismatch\"" - }, - "value": "length of address and amounts dismatch" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_073bceac60cfe31ff4e1652a9ed1958ffac9b37b9b2d1e976a3ea18c79e0f6fb", - "typeString": "literal_string \"length of address and amounts dismatch\"" - } - ], - "id": 2207, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "19736:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 2214, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "19736:81:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2215, - "nodeType": "ExpressionStatement", - "src": "19736:81:4" - }, - { - "assignments": [2217], - "declarations": [ - { - "constant": false, - "id": 2217, - "mutability": "mutable", - "name": "addrCount", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 2242, - "src": "19827:14:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2216, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "19827:4:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 2220, - "initialValue": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 2218, - "name": "addrs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2199, - "src": "19844:5:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_payable_$dyn_calldata_ptr", - "typeString": "address payable[] calldata" - } - }, - "id": 2219, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "19844:12:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "19827:29:4" - }, - { - "body": { - "id": 2240, - "nodeType": "Block", - "src": "19903:54:4", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 2235, - "name": "amounts", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2202, - "src": "19935:7:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[] calldata" - } - }, - "id": 2237, - "indexExpression": { - "argumentTypes": null, - "id": 2236, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2222, - "src": "19943:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "19935:10:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 2231, - "name": "addrs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2199, - "src": "19917:5:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_payable_$dyn_calldata_ptr", - "typeString": "address payable[] calldata" - } - }, - "id": 2233, - "indexExpression": { - "argumentTypes": null, - "id": 2232, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2222, - "src": "19923:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "19917:8:4", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "id": 2234, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "transfer", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "19917:17:4", - "typeDescriptions": { - "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", - "typeString": "function (uint256)" - } - }, - "id": 2238, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "19917:29:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2239, - "nodeType": "ExpressionStatement", - "src": "19917:29:4" - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 2227, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 2225, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2222, - "src": "19883:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "id": 2226, - "name": "addrCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2217, - "src": "19887:9:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "19883:13:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2241, - "initializationExpression": { - "assignments": [2222], - "declarations": [ - { - "constant": false, - "id": 2222, - "mutability": "mutable", - "name": "i", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 2241, - "src": "19871:6:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2221, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "19871:4:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 2224, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 2223, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "19880:1:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "19871:10:4" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 2229, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "19898:3:4", - "subExpression": { - "argumentTypes": null, - "id": 2228, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2222, - "src": "19898:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 2230, - "nodeType": "ExpressionStatement", - "src": "19898:3:4" - }, - "nodeType": "ForStatement", - "src": "19866:91:4" - } - ] + "id": 247, + "nodeType": "ExpressionStatement", + "src": "4027:3:0" + }, + "nodeType": "ForStatement", + "src": "3989:113:0" + } + ] + }, + "documentation": { + "id": 182, + "nodeType": "StructuredDocumentation", + "src": "2954:432:0", + "text": "@notice Initializes Bridge, creates and grants {msg.sender} the admin role,\ncreates and grants {initialRelayers} the relayer role.\n@param chainID ID of chain the Bridge contract exists on.\n@param initialRelayers Addresses that should be initially granted the relayer role.\n@param initialRelayerThreshold Number of votes needed for a deposit proposal to be considered passed." + }, + "id": 258, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 194, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 184, + "mutability": "mutable", + "name": "chainID", + "nameLocation": "3411:7:0", + "nodeType": "VariableDeclaration", + "scope": 258, + "src": "3405:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 183, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "3405:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 187, + "mutability": "mutable", + "name": "initialRelayers", + "nameLocation": "3437:15:0", + "nodeType": "VariableDeclaration", + "scope": 258, + "src": "3420:32:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 185, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3420:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 186, + "nodeType": "ArrayTypeName", + "src": "3420:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 189, + "mutability": "mutable", + "name": "initialRelayerThreshold", + "nameLocation": "3459:23:0", + "nodeType": "VariableDeclaration", + "scope": 258, + "src": "3454:28:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 188, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3454:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 191, + "mutability": "mutable", + "name": "fee", + "nameLocation": "3492:3:0", + "nodeType": "VariableDeclaration", + "scope": 258, + "src": "3484:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 190, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3484:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 193, + "mutability": "mutable", + "name": "expiry", + "nameLocation": "3505:6:0", + "nodeType": "VariableDeclaration", + "scope": 258, + "src": "3497:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 192, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3497:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3404:108:0" + }, + "returnParameters": { + "id": 195, + "nodeType": "ParameterList", + "parameters": [], + "src": "3513:0:0" + }, + "scope": 1209, + "src": "3392:719:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 271, + "nodeType": "Block", + "src": "4309:56:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 267, + "name": "RELAYER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 106, + "src": "4335:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 268, + "name": "relayer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 261, + "src": "4349:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 266, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1415, + "src": "4327:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 269, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4327:30:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 265, + "id": 270, + "nodeType": "Return", + "src": "4320:37:0" + } + ] + }, + "documentation": { + "id": 259, + "nodeType": "StructuredDocumentation", + "src": "4119:119:0", + "text": "@notice Returns true if {relayer} has the relayer role.\n@param relayer Address to check." + }, + "functionSelector": "541d5548", + "id": 272, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isRelayer", + "nameLocation": "4253:9:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 262, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 261, + "mutability": "mutable", + "name": "relayer", + "nameLocation": "4271:7:0", + "nodeType": "VariableDeclaration", + "scope": 272, + "src": "4263:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 260, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4263:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4262:17:0" + }, + "returnParameters": { + "id": 265, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 264, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 272, + "src": "4303:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 263, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4303:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4302:6:0" + }, + "scope": 1209, + "src": "4244:121:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 291, + "nodeType": "Block", + "src": "4683:113:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 281, + "name": "DEFAULT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1363, + "src": "4704:18:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 282, + "name": "newAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 275, + "src": "4724:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" }, - "documentation": { - "id": 2196, - "nodeType": "StructuredDocumentation", - "src": "19241:379:4", - "text": "@notice Transfers eth in the contract to the specified addresses. The parameters addrs and amounts are mapped 1-1.\nThis means that the address at index 0 for addrs will receive the amount (in WEI) from amounts at index 0.\n@param addrs Array of addresses to transfer {amounts} to.\n@param amounts Array of amonuts to transfer to {addrs}." - }, - "functionSelector": "4603ae38", - "id": 2243, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": null, - "id": 2205, - "modifierName": { - "argumentTypes": null, - "id": 2204, - "name": "onlyAdmin", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1228, - "src": "19716:9:4", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "19716:9:4" - } - ], - "name": "transferFunds", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 2203, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2199, - "mutability": "mutable", - "name": "addrs", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 2243, - "src": "19648:32:4", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_payable_$dyn_calldata_ptr", - "typeString": "address payable[]" - }, - "typeName": { - "baseType": { - "id": 2197, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "19648:15:4", - "stateMutability": "payable", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "id": 2198, - "length": null, - "nodeType": "ArrayTypeName", - "src": "19648:17:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_payable_$dyn_storage_ptr", - "typeString": "address payable[]" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 2202, - "mutability": "mutable", - "name": "amounts", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 2243, - "src": "19682:23:4", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[]" - }, - "typeName": { - "baseType": { - "id": 2200, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "19682:4:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 2201, - "length": null, - "nodeType": "ArrayTypeName", - "src": "19682:6:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "19647:59:4" + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 280, + "name": "grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1502, + "src": "4694:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 283, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4694:39:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 284, + "nodeType": "ExpressionStatement", + "src": "4694:39:0" + }, + { + "expression": { + "arguments": [ + { + "id": 286, + "name": "DEFAULT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1363, + "src": "4757:18:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 287, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "4777:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } }, - "returnParameters": { - "id": 2206, - "nodeType": "ParameterList", - "parameters": [], - "src": "19726:0:4" + "id": 288, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4781:6:0", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "4777:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" }, - "scope": 2244, - "src": "19625:338:4", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 285, + "name": "renounceRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1545, + "src": "4744:12:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 289, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4744:44:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } - ], - "scope": 2245, - "src": "479:19487:4" - } - ], - "src": "0:19967:4" - }, - "legacyAST": { - "attributes": { - "absolutePath": "project:/contracts/Bridge.sol", - "exportedSymbols": { - "Bridge": [2244] + }, + "id": 290, + "nodeType": "ExpressionStatement", + "src": "4744:44:0" + } + ] }, - "license": null - }, - "children": [ - { - "attributes": { - "literals": ["solidity", "0.7", ".0"] - }, - "id": 1095, - "name": "PragmaDirective", - "src": "0:22:4" + "documentation": { + "id": 273, + "nodeType": "StructuredDocumentation", + "src": "4373:244:0", + "text": "@notice Removes admin role from {msg.sender} and grants it to {newAdmin}.\n@notice Only callable by an address that currently has the admin role.\n@param newAdmin Address that admin role will be granted to." }, - { - "attributes": { - "literals": ["experimental", "ABIEncoderV2"] + "functionSelector": "5e1fab0f", + "id": 292, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 278, + "kind": "modifierInvocation", + "modifierName": { + "id": 277, + "name": "onlyAdmin", + "nameLocations": [ + "4673:9:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 124, + "src": "4673:9:0" }, - "id": 1096, - "name": "PragmaDirective", - "src": "23:33:4" + "nodeType": "ModifierInvocation", + "src": "4673:9:0" + } + ], + "name": "renounceAdmin", + "nameLocation": "4632:13:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 276, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 275, + "mutability": "mutable", + "name": "newAdmin", + "nameLocation": "4654:8:0", + "nodeType": "VariableDeclaration", + "scope": 292, + "src": "4646:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 274, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4646:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4645:18:0" }, - { - "attributes": { - "SourceUnit": 283, - "absolutePath": "@openzeppelin/contracts/access/AccessControl.sol", - "file": "@openzeppelin/contracts/access/AccessControl.sol", - "scope": 2245, - "symbolAliases": [null], - "unitAlias": "" - }, - "id": 1097, - "name": "ImportDirective", - "src": "58:58:4" + "returnParameters": { + "id": 279, + "nodeType": "ParameterList", + "parameters": [], + "src": "4683:0:0" }, - { - "attributes": { - "SourceUnit": 2436, - "absolutePath": "project:/contracts/utils/Pausable.sol", - "file": "./utils/Pausable.sol", - "scope": 2245, - "symbolAliases": [null], - "unitAlias": "" - }, - "id": 1098, - "name": "ImportDirective", - "src": "117:30:4" + "scope": 1209, + "src": "4623:173:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 301, + "nodeType": "Block", + "src": "5040:27:0", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 298, + "name": "_pause", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3510, + "src": "5051:6:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 299, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5051:8:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 300, + "nodeType": "ExpressionStatement", + "src": "5051:8:0" + } + ] }, - { - "attributes": { - "SourceUnit": 2485, - "absolutePath": "project:/contracts/utils/SafeMath.sol", - "file": "./utils/SafeMath.sol", - "scope": 2245, - "symbolAliases": [null], - "unitAlias": "" - }, - "id": 1099, - "name": "ImportDirective", - "src": "148:30:4" + "documentation": { + "id": 293, + "nodeType": "StructuredDocumentation", + "src": "4804:180:0", + "text": "@notice Pauses deposits, proposal creation and voting, and deposit executions.\n@notice Only callable by an address that currently has the admin role." }, - { - "attributes": { - "SourceUnit": 2281, - "absolutePath": "project:/contracts/interfaces/IDepositExecute.sol", - "file": "./interfaces/IDepositExecute.sol", - "scope": 2245, - "symbolAliases": [null], - "unitAlias": "" - }, - "id": 1100, - "name": "ImportDirective", - "src": "179:42:4" + "functionSelector": "80ae1c28", + "id": 302, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 296, + "kind": "modifierInvocation", + "modifierName": { + "id": 295, + "name": "onlyAdmin", + "nameLocations": [ + "5030:9:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 124, + "src": "5030:9:0" + }, + "nodeType": "ModifierInvocation", + "src": "5030:9:0" + } + ], + "name": "adminPauseTransfers", + "nameLocation": "4999:19:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 294, + "nodeType": "ParameterList", + "parameters": [], + "src": "5018:2:0" }, - { - "attributes": { - "SourceUnit": 2255, - "absolutePath": "project:/contracts/interfaces/IBridge.sol", - "file": "./interfaces/IBridge.sol", - "scope": 2245, - "symbolAliases": [null], - "unitAlias": "" - }, - "id": 1101, - "name": "ImportDirective", - "src": "222:34:4" + "returnParameters": { + "id": 297, + "nodeType": "ParameterList", + "parameters": [], + "src": "5040:0:0" }, - { - "attributes": { - "SourceUnit": 2319, - "absolutePath": "project:/contracts/interfaces/IERCHandler.sol", - "file": "./interfaces/IERCHandler.sol", - "scope": 2245, - "symbolAliases": [null], - "unitAlias": "" - }, - "id": 1102, - "name": "ImportDirective", - "src": "257:38:4" + "scope": 1209, + "src": "4990:77:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 311, + "nodeType": "Block", + "src": "5315:29:0", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 308, + "name": "_unpause", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3526, + "src": "5326:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 309, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5326:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 310, + "nodeType": "ExpressionStatement", + "src": "5326:10:0" + } + ] }, - { - "attributes": { - "SourceUnit": 2335, - "absolutePath": "project:/contracts/interfaces/IGenericHandler.sol", - "file": "./interfaces/IGenericHandler.sol", - "scope": 2245, - "symbolAliases": [null], - "unitAlias": "" - }, - "id": 1103, - "name": "ImportDirective", - "src": "296:42:4" + "documentation": { + "id": 303, + "nodeType": "StructuredDocumentation", + "src": "5075:182:0", + "text": "@notice Unpauses deposits, proposal creation and voting, and deposit executions.\n@notice Only callable by an address that currently has the admin role." }, - { - "attributes": { - "abstract": false, - "contractDependencies": [282, 601, 2435, 2484], - "contractKind": "contract", - "fullyImplemented": true, - "linearizedBaseContracts": [2244, 2484, 282, 601, 2435], - "name": "Bridge", - "scope": 2245 + "functionSelector": "ffaac0eb", + "id": 312, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 306, + "kind": "modifierInvocation", + "modifierName": { + "id": 305, + "name": "onlyAdmin", + "nameLocations": [ + "5305:9:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 124, + "src": "5305:9:0" }, - "children": [ - { - "attributes": { - "text": "@title Facilitates deposits, creation and votiing of deposit proposals, and deposit executions.\n@author ChainSafe Systems." - }, - "id": 1104, - "name": "StructuredDocumentation", - "src": "340:138:4" - }, - { - "attributes": { - "arguments": null - }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "Pausable", - "referencedDeclaration": 2435, - "type": "contract Pausable" - }, - "id": 1105, - "name": "UserDefinedTypeName", - "src": "498:8:4" - } - ], - "id": 1106, - "name": "InheritanceSpecifier", - "src": "498:8:4" + "nodeType": "ModifierInvocation", + "src": "5305:9:0" + } + ], + "name": "adminUnpauseTransfers", + "nameLocation": "5272:21:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 304, + "nodeType": "ParameterList", + "parameters": [], + "src": "5293:2:0" + }, + "returnParameters": { + "id": 307, + "nodeType": "ParameterList", + "parameters": [], + "src": "5315:0:0" + }, + "scope": 1209, + "src": "5263:81:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 328, + "nodeType": "Block", + "src": "5751:104:0", + "statements": [ + { + "expression": { + "id": 322, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 320, + "name": "_relayerThreshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16, + "src": "5762:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, - { - "attributes": { - "arguments": null - }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "AccessControl", - "referencedDeclaration": 282, - "type": "contract AccessControl" - }, - "id": 1107, - "name": "UserDefinedTypeName", - "src": "508:13:4" - } - ], - "id": 1108, - "name": "InheritanceSpecifier", - "src": "508:13:4" + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 321, + "name": "newThreshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 315, + "src": "5782:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, - { - "attributes": { - "arguments": null - }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "SafeMath", - "referencedDeclaration": 2484, - "type": "contract SafeMath" - }, - "id": 1109, - "name": "UserDefinedTypeName", - "src": "523:8:4" - } - ], - "id": 1110, - "name": "InheritanceSpecifier", - "src": "523:8:4" - }, - { - "attributes": { - "constant": false, - "functionSelector": "beab7131", - "mutability": "mutable", - "name": "_chainID", - "overrides": null, - "scope": 2244, - "stateVariable": true, - "storageLocation": "default", - "type": "uint8", - "value": null, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "name": "uint8", - "type": "uint8" - }, - "id": 1111, - "name": "ElementaryTypeName", - "src": "539:5:4" - } - ], - "id": 1112, - "name": "VariableDeclaration", - "src": "539:23:4" - }, - { - "attributes": { - "constant": false, - "functionSelector": "d7a9cd79", - "mutability": "mutable", - "name": "_relayerThreshold", - "overrides": null, - "scope": 2244, - "stateVariable": true, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 1113, - "name": "ElementaryTypeName", - "src": "568:7:4" - } - ], - "id": 1114, - "name": "VariableDeclaration", - "src": "568:32:4" - }, - { - "attributes": { - "constant": false, - "functionSelector": "802aabe8", - "mutability": "mutable", - "name": "_totalRelayers", - "overrides": null, - "scope": 2244, - "stateVariable": true, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 1115, - "name": "ElementaryTypeName", - "src": "606:7:4" - } - ], - "id": 1116, - "name": "VariableDeclaration", - "src": "606:29:4" + "src": "5762:32:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 323, + "nodeType": "ExpressionStatement", + "src": "5762:32:0" + }, + { + "eventCall": { + "arguments": [ + { + "id": 325, + "name": "newThreshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 315, + "src": "5834:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 324, + "name": "RelayerThresholdChanged", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 80, + "src": "5810:23:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } }, - { - "attributes": { - "constant": false, - "functionSelector": "9d5773e0", - "mutability": "mutable", - "name": "_totalProposals", - "overrides": null, - "scope": 2244, - "stateVariable": true, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "public" - }, - "children": [ + "id": 326, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5810:37:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 327, + "nodeType": "EmitStatement", + "src": "5805:42:0" + } + ] + }, + "documentation": { + "id": 313, + "nodeType": "StructuredDocumentation", + "src": "5352:318:0", + "text": "@notice Modifies the number of votes required for a proposal to be considered passed.\n@notice Only callable by an address that currently has the admin role.\n@param newThreshold Value {_relayerThreshold} will be changed to.\n@notice Emits {RelayerThresholdChanged} event." + }, + "functionSelector": "4e056005", + "id": 329, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 318, + "kind": "modifierInvocation", + "modifierName": { + "id": 317, + "name": "onlyAdmin", + "nameLocations": [ + "5741:9:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 124, + "src": "5741:9:0" + }, + "nodeType": "ModifierInvocation", + "src": "5741:9:0" + } + ], + "name": "adminChangeRelayerThreshold", + "nameLocation": "5685:27:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 316, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 315, + "mutability": "mutable", + "name": "newThreshold", + "nameLocation": "5718:12:0", + "nodeType": "VariableDeclaration", + "scope": 329, + "src": "5713:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 314, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5713:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5712:19:0" + }, + "returnParameters": { + "id": 319, + "nodeType": "ParameterList", + "parameters": [], + "src": "5751:0:0" + }, + "scope": 1209, + "src": "5676:179:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 351, + "nodeType": "Block", + "src": "6151:150:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 342, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "6170:38:0", + "subExpression": { + "arguments": [ { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 1117, - "name": "ElementaryTypeName", - "src": "641:7:4" - } - ], - "id": 1118, - "name": "VariableDeclaration", - "src": "641:30:4" - }, - { - "attributes": { - "constant": false, - "functionSelector": "c5b37c22", - "mutability": "mutable", - "name": "_fee", - "overrides": null, - "scope": 2244, - "stateVariable": true, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "public" - }, - "children": [ + "id": 339, + "name": "RELAYER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 106, + "src": "6179:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 1119, - "name": "ElementaryTypeName", - "src": "677:7:4" + "id": 340, + "name": "relayerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 332, + "src": "6193:14:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } } - ], - "id": 1120, - "name": "VariableDeclaration", - "src": "677:19:4" - }, - { - "attributes": { - "constant": false, - "functionSelector": "c5ec8970", - "mutability": "mutable", - "name": "_expiry", - "overrides": null, - "scope": 2244, - "stateVariable": true, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 1121, - "name": "ElementaryTypeName", - "src": "702:7:4" + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 338, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1415, + "src": "6171:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" } - ], - "id": 1122, - "name": "VariableDeclaration", - "src": "702:22:4" - }, - { - "attributes": { - "canonicalName": "Bridge.Vote", - "name": "Vote" + }, + "id": 341, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6171:37:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } }, - "children": [ - { - "attributes": { - "name": "No" - }, - "id": 1123, - "name": "EnumValue", - "src": "742:2:4" - }, - { - "attributes": { - "name": "Yes" - }, - "id": 1124, - "name": "EnumValue", - "src": "746:3:4" - } - ], - "id": 1125, - "name": "EnumDefinition", - "src": "731:19:4" - }, - { - "attributes": { - "canonicalName": "Bridge.ProposalStatus", - "name": "ProposalStatus" + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "6164647220616c7265616479206861732072656c6179657220726f6c6521", + "id": 343, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6210:32:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8513154392cb347d26f1716c23a55342a9b762f4522b7062343455b658c92c85", + "typeString": "literal_string \"addr already has relayer role!\"" }, - "children": [ - { - "attributes": { - "name": "Inactive" - }, - "id": 1126, - "name": "EnumValue", - "src": "777:8:4" - }, - { - "attributes": { - "name": "Active" - }, - "id": 1127, - "name": "EnumValue", - "src": "787:6:4" - }, - { - "attributes": { - "name": "Passed" - }, - "id": 1128, - "name": "EnumValue", - "src": "795:6:4" - }, - { - "attributes": { - "name": "Executed" - }, - "id": 1129, - "name": "EnumValue", - "src": "803:8:4" - }, - { - "attributes": { - "name": "Cancelled" - }, - "id": 1130, - "name": "EnumValue", - "src": "813:9:4" - } - ], - "id": 1131, - "name": "EnumDefinition", - "src": "756:67:4" + "value": "addr already has relayer role!" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_8513154392cb347d26f1716c23a55342a9b762f4522b7062343455b658c92c85", + "typeString": "literal_string \"addr already has relayer role!\"" + } + ], + "id": 337, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "6162:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } }, - { - "attributes": { - "canonicalName": "Bridge.Proposal", - "name": "Proposal", - "scope": 2244, - "visibility": "public" + "id": 344, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6162:81:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 345, + "nodeType": "ExpressionStatement", + "src": "6162:81:0" + }, + { + "expression": { + "arguments": [ + { + "id": 347, + "name": "RELAYER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 106, + "src": "6264:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 348, + "name": "relayerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 332, + "src": "6278:14:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "_resourceID", - "overrides": null, - "scope": 1146, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1132, - "name": "ElementaryTypeName", - "src": "855:7:4" - } - ], - "id": 1133, - "name": "VariableDeclaration", - "src": "855:19:4" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "_dataHash", - "overrides": null, - "scope": 1146, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1134, - "name": "ElementaryTypeName", - "src": "884:7:4" - } - ], - "id": 1135, - "name": "VariableDeclaration", - "src": "884:17:4" - }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 346, + "name": "grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1502, + "src": "6254:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 349, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6254:39:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 350, + "nodeType": "ExpressionStatement", + "src": "6254:39:0" + } + ] + }, + "documentation": { + "id": 330, + "nodeType": "StructuredDocumentation", + "src": "5863:214:0", + "text": "@notice Grants {relayerAddress} the relayer role.\n@notice Only callable by an address that currently has the admin role.\n@param relayerAddress Address of relayer to be added." + }, + "functionSelector": "cdb0f73a", + "id": 352, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 335, + "kind": "modifierInvocation", + "modifierName": { + "id": 334, + "name": "onlyAdmin", + "nameLocations": [ + "6141:9:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 124, + "src": "6141:9:0" + }, + "nodeType": "ModifierInvocation", + "src": "6141:9:0" + } + ], + "name": "adminAddRelayer", + "nameLocation": "6092:15:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 333, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 332, + "mutability": "mutable", + "name": "relayerAddress", + "nameLocation": "6116:14:0", + "nodeType": "VariableDeclaration", + "scope": 352, + "src": "6108:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 331, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6108:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "6107:24:0" + }, + "returnParameters": { + "id": 336, + "nodeType": "ParameterList", + "parameters": [], + "src": "6151:0:0" + }, + "scope": 1209, + "src": "6083:218:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 373, + "nodeType": "Block", + "src": "6603:151:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 362, + "name": "RELAYER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 106, + "src": "6630:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 363, + "name": "relayerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 355, + "src": "6644:14:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "_yesVotes", - "overrides": null, - "scope": 1146, - "stateVariable": false, - "storageLocation": "default", - "type": "address[]", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "length": null, - "type": "address[]" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 1136, - "name": "ElementaryTypeName", - "src": "911:7:4" - } - ], - "id": 1137, - "name": "ArrayTypeName", - "src": "911:9:4" - } - ], - "id": 1138, - "name": "VariableDeclaration", - "src": "911:19:4" + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" }, { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "_noVotes", - "overrides": null, - "scope": 1146, - "stateVariable": false, - "storageLocation": "default", - "type": "address[]", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "length": null, - "type": "address[]" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 1139, - "name": "ElementaryTypeName", - "src": "940:7:4" - } - ], - "id": 1140, - "name": "ArrayTypeName", - "src": "940:9:4" - } - ], - "id": 1141, - "name": "VariableDeclaration", - "src": "940:18:4" - }, + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 361, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1415, + "src": "6622:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 364, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6622:37:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "6164647220646f65736e277420686176652072656c6179657220726f6c6521", + "id": 365, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6661:33:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_1399520dec2ce6448b61ea4bb9d4980c6bfff25cd5836058c07edd3d56f94864", + "typeString": "literal_string \"addr doesn't have relayer role!\"" + }, + "value": "addr doesn't have relayer role!" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_1399520dec2ce6448b61ea4bb9d4980c6bfff25cd5836058c07edd3d56f94864", + "typeString": "literal_string \"addr doesn't have relayer role!\"" + } + ], + "id": 360, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "6614:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 366, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6614:81:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 367, + "nodeType": "ExpressionStatement", + "src": "6614:81:0" + }, + { + "expression": { + "arguments": [ + { + "id": 369, + "name": "RELAYER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 106, + "src": "6717:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 370, + "name": "relayerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 355, + "src": "6731:14:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 368, + "name": "revokeRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1522, + "src": "6706:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 371, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6706:40:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 372, + "nodeType": "ExpressionStatement", + "src": "6706:40:0" + } + ] + }, + "documentation": { + "id": 353, + "nodeType": "StructuredDocumentation", + "src": "6309:217:0", + "text": "@notice Removes relayer role for {relayerAddress}.\n@notice Only callable by an address that currently has the admin role.\n@param relayerAddress Address of relayer to be removed." + }, + "functionSelector": "9d82dd63", + "id": 374, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 358, + "kind": "modifierInvocation", + "modifierName": { + "id": 357, + "name": "onlyAdmin", + "nameLocations": [ + "6593:9:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 124, + "src": "6593:9:0" + }, + "nodeType": "ModifierInvocation", + "src": "6593:9:0" + } + ], + "name": "adminRemoveRelayer", + "nameLocation": "6541:18:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 356, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 355, + "mutability": "mutable", + "name": "relayerAddress", + "nameLocation": "6568:14:0", + "nodeType": "VariableDeclaration", + "scope": 374, + "src": "6560:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 354, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6560:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "6559:24:0" + }, + "returnParameters": { + "id": 359, + "nodeType": "ParameterList", + "parameters": [], + "src": "6603:0:0" + }, + "scope": 1209, + "src": "6532:222:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 396, + "nodeType": "Block", + "src": "7067:155:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 387, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "7086:40:0", + "subExpression": { + "arguments": [ { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "_status", - "overrides": null, - "scope": 1146, - "stateVariable": false, - "storageLocation": "default", - "type": "enum Bridge.ProposalStatus", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "ProposalStatus", - "referencedDeclaration": 1131, - "type": "enum Bridge.ProposalStatus" - }, - "id": 1142, - "name": "UserDefinedTypeName", - "src": "968:14:4" - } - ], - "id": 1143, - "name": "VariableDeclaration", - "src": "968:22:4" + "id": 384, + "name": "EXECUTOR_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 111, + "src": "7095:13:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } }, { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "_proposedBlock", - "overrides": null, - "scope": 1146, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 1144, - "name": "ElementaryTypeName", - "src": "1000:7:4" - } - ], - "id": 1145, - "name": "VariableDeclaration", - "src": "1000:22:4" + "id": 385, + "name": "executorAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 377, + "src": "7110:15:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } } - ], - "id": 1146, - "name": "StructDefinition", - "src": "829:200:4" - }, - { - "attributes": { - "constant": false, - "functionSelector": "4b0b919d", - "mutability": "mutable", - "name": "_depositCounts", - "overrides": null, - "scope": 2244, - "stateVariable": true, - "storageLocation": "default", - "type": "mapping(uint8 => uint64)", - "value": null, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "type": "mapping(uint8 => uint64)" - }, - "children": [ - { - "attributes": { - "name": "uint8", - "type": "uint8" - }, - "id": 1147, - "name": "ElementaryTypeName", - "src": "1091:5:4" - }, - { - "attributes": { - "name": "uint64", - "type": "uint64" - }, - "id": 1148, - "name": "ElementaryTypeName", - "src": "1100:6:4" - } - ], - "id": 1149, - "name": "Mapping", - "src": "1083:24:4" + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 383, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1415, + "src": "7087:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" } - ], - "id": 1150, - "name": "VariableDeclaration", - "src": "1083:46:4" + }, + "id": 386, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7087:39:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "6164647220616c726561647920686173206578656375746f7220726f6c6521", + "id": 388, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7128:33:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_17505cadfef6950655e77b3a6cee1f047e0d156f50464790c284ae45de718085", + "typeString": "literal_string \"addr already has executor role!\"" + }, + "value": "addr already has executor role!" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_17505cadfef6950655e77b3a6cee1f047e0d156f50464790c284ae45de718085", + "typeString": "literal_string \"addr already has executor role!\"" + } + ], + "id": 382, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "7078:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } }, - { - "attributes": { - "constant": false, - "functionSelector": "84db809f", - "mutability": "mutable", - "name": "_resourceIDToHandlerAddress", - "overrides": null, - "scope": 2244, - "stateVariable": true, - "storageLocation": "default", - "type": "mapping(bytes32 => address)", - "value": null, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "type": "mapping(bytes32 => address)" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1151, - "name": "ElementaryTypeName", - "src": "1180:7:4" - }, - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 1152, - "name": "ElementaryTypeName", - "src": "1191:7:4" - } - ], - "id": 1153, - "name": "Mapping", - "src": "1172:27:4" + "id": 389, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7078:84:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 390, + "nodeType": "ExpressionStatement", + "src": "7078:84:0" + }, + { + "expression": { + "arguments": [ + { + "id": 392, + "name": "EXECUTOR_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 111, + "src": "7183:13:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 393, + "name": "executorAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 377, + "src": "7198:15:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 391, + "name": "grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1502, + "src": "7173:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7173:41:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 395, + "nodeType": "ExpressionStatement", + "src": "7173:41:0" + } + ] + }, + "documentation": { + "id": 375, + "nodeType": "StructuredDocumentation", + "src": "6766:220:0", + "text": "@notice Grants {executorAddress} the executor role.\n@notice Only callable by an address that currently has the relayer role.\n@param executorAddress Address of executor to be added." + }, + "functionSelector": "ba5c523c", + "id": 397, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 380, + "kind": "modifierInvocation", + "modifierName": { + "id": 379, + "name": "onlyRelayers", + "nameLocations": [ + "7054:12:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 156, + "src": "7054:12:0" + }, + "nodeType": "ModifierInvocation", + "src": "7054:12:0" + } + ], + "name": "relayerAddExecutor", + "nameLocation": "7001:18:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 378, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 377, + "mutability": "mutable", + "name": "executorAddress", + "nameLocation": "7028:15:0", + "nodeType": "VariableDeclaration", + "scope": 397, + "src": "7020:23:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 376, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7020:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "7019:25:0" + }, + "returnParameters": { + "id": 381, + "nodeType": "ParameterList", + "parameters": [], + "src": "7067:0:0" + }, + "scope": 1209, + "src": "6992:230:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 418, + "nodeType": "Block", + "src": "7536:156:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 407, + "name": "EXECUTOR_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 111, + "src": "7563:13:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } - ], - "id": 1154, - "name": "VariableDeclaration", - "src": "1172:62:4" - }, - { - "attributes": { - "constant": false, - "functionSelector": "3ee7094a", - "mutability": "mutable", - "name": "_depositRecords", - "overrides": null, - "scope": 2244, - "stateVariable": true, - "storageLocation": "default", - "type": "mapping(uint64 => mapping(uint8 => bytes))", - "value": null, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "type": "mapping(uint64 => mapping(uint8 => bytes))" - }, - "children": [ - { - "attributes": { - "name": "uint64", - "type": "uint64" - }, - "id": 1155, - "name": "ElementaryTypeName", - "src": "1299:6:4" - }, - { - "attributes": { - "type": "mapping(uint8 => bytes)" - }, - "children": [ - { - "attributes": { - "name": "uint8", - "type": "uint8" - }, - "id": 1156, - "name": "ElementaryTypeName", - "src": "1317:5:4" - }, - { - "attributes": { - "name": "bytes", - "type": "bytes" - }, - "id": 1157, - "name": "ElementaryTypeName", - "src": "1326:5:4" - } - ], - "id": 1158, - "name": "Mapping", - "src": "1309:23:4" - } - ], - "id": 1159, - "name": "Mapping", - "src": "1291:42:4" + }, + { + "id": 408, + "name": "executorAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 400, + "src": "7578:15:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } + } ], - "id": 1160, - "name": "VariableDeclaration", - "src": "1291:65:4" - }, - { - "attributes": { - "constant": false, - "functionSelector": "50598719", - "mutability": "mutable", - "name": "_proposals", - "overrides": null, - "scope": 2244, - "stateVariable": true, - "storageLocation": "default", - "type": "mapping(uint72 => mapping(bytes32 => struct Bridge.Proposal))", - "value": null, - "visibility": "public" - }, - "children": [ + "expression": { + "argumentTypes": [ { - "attributes": { - "type": "mapping(uint72 => mapping(bytes32 => struct Bridge.Proposal))" - }, - "children": [ - { - "attributes": { - "name": "uint72", - "type": "uint72" - }, - "id": 1161, - "name": "ElementaryTypeName", - "src": "1435:6:4" - }, - { - "attributes": { - "type": "mapping(bytes32 => struct Bridge.Proposal)" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1162, - "name": "ElementaryTypeName", - "src": "1453:7:4" - }, - { - "attributes": { - "contractScope": null, - "name": "Proposal", - "referencedDeclaration": 1146, - "type": "struct Bridge.Proposal" - }, - "id": 1163, - "name": "UserDefinedTypeName", - "src": "1464:8:4" - } - ], - "id": 1164, - "name": "Mapping", - "src": "1445:28:4" - } - ], - "id": 1165, - "name": "Mapping", - "src": "1427:47:4" - } - ], - "id": 1166, - "name": "VariableDeclaration", - "src": "1427:65:4" - }, - { - "attributes": { - "constant": false, - "functionSelector": "7febe63f", - "mutability": "mutable", - "name": "_hasVotedOnProposal", - "overrides": null, - "scope": 2244, - "stateVariable": true, - "storageLocation": "default", - "type": "mapping(uint72 => mapping(bytes32 => mapping(address => bool)))", - "value": null, - "visibility": "public" - }, - "children": [ + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, { - "attributes": { - "type": "mapping(uint72 => mapping(bytes32 => mapping(address => bool)))" - }, - "children": [ - { - "attributes": { - "name": "uint72", - "type": "uint72" - }, - "id": 1167, - "name": "ElementaryTypeName", - "src": "1585:6:4" - }, - { - "attributes": { - "type": "mapping(bytes32 => mapping(address => bool))" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1168, - "name": "ElementaryTypeName", - "src": "1603:7:4" - }, - { - "attributes": { - "type": "mapping(address => bool)" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": "address" - }, - "id": 1169, - "name": "ElementaryTypeName", - "src": "1622:7:4" - }, - { - "attributes": { - "name": "bool", - "type": "bool" - }, - "id": 1170, - "name": "ElementaryTypeName", - "src": "1633:4:4" - } - ], - "id": 1171, - "name": "Mapping", - "src": "1614:24:4" - } - ], - "id": 1172, - "name": "Mapping", - "src": "1595:44:4" - } - ], - "id": 1173, - "name": "Mapping", - "src": "1577:63:4" + "typeIdentifier": "t_address", + "typeString": "address" } - ], - "id": 1174, - "name": "VariableDeclaration", - "src": "1577:90:4" + ], + "id": 406, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1415, + "src": "7555:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 409, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7555:39:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "6164647220646f65736e27742068617665206578656375746f7220726f6c6521", + "id": 410, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7596:34:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_db96155e06efa3a864b08f57f36b8a9b6799a3e5b3483adbbc51a7b859825cad", + "typeString": "literal_string \"addr doesn't have executor role!\"" + }, + "value": "addr doesn't have executor role!" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_db96155e06efa3a864b08f57f36b8a9b6799a3e5b3483adbbc51a7b859825cad", + "typeString": "literal_string \"addr doesn't have executor role!\"" + } + ], + "id": 405, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "7547:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 411, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7547:84:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 412, + "nodeType": "ExpressionStatement", + "src": "7547:84:0" + }, + { + "expression": { + "arguments": [ + { + "id": 414, + "name": "EXECUTOR_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 111, + "src": "7653:13:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 415, + "name": "executorAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 400, + "src": "7668:15:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 413, + "name": "revokeRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1522, + "src": "7642:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 416, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7642:42:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 417, + "nodeType": "ExpressionStatement", + "src": "7642:42:0" + } + ] + }, + "documentation": { + "id": 398, + "nodeType": "StructuredDocumentation", + "src": "7230:222:0", + "text": "@notice Removes relayer role for {executorAddress}.\n@notice Only callable by an address that currently has the relayer role.\n@param executorAddress Address of executor to be removed." + }, + "functionSelector": "1149af51", + "id": 419, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 403, + "kind": "modifierInvocation", + "modifierName": { + "id": 402, + "name": "onlyRelayers", + "nameLocations": [ + "7523:12:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 156, + "src": "7523:12:0" + }, + "nodeType": "ModifierInvocation", + "src": "7523:12:0" + } + ], + "name": "relayerRemoveExecutor", + "nameLocation": "7467:21:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 401, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 400, + "mutability": "mutable", + "name": "executorAddress", + "nameLocation": "7497:15:0", + "nodeType": "VariableDeclaration", + "scope": 419, + "src": "7489:23:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 399, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7489:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "7488:25:0" + }, + "returnParameters": { + "id": 404, + "nodeType": "ParameterList", + "parameters": [], + "src": "7536:0:0" + }, + "scope": 1209, + "src": "7458:234:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 451, + "nodeType": "Block", + "src": "8354:191:0", + "statements": [ + { + "expression": { + "id": 435, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 431, + "name": "_resourceIDToHandlerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 55, + "src": "8365:27:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + } + }, + "id": 433, + "indexExpression": { + "id": 432, + "name": "resourceID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 424, + "src": "8393:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8365:39:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 434, + "name": "handlerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 422, + "src": "8407:14:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8365:56:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 436, + "nodeType": "ExpressionStatement", + "src": "8365:56:0" + }, + { + "assignments": [ + 439 + ], + "declarations": [ + { + "constant": false, + "id": 439, + "mutability": "mutable", + "name": "handler", + "nameLocation": "8444:7:0", + "nodeType": "VariableDeclaration", + "scope": 451, + "src": "8432:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERCHandler_$1319", + "typeString": "contract IERCHandler" + }, + "typeName": { + "id": 438, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 437, + "name": "IERCHandler", + "nameLocations": [ + "8432:11:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1319, + "src": "8432:11:0" + }, + "referencedDeclaration": 1319, + "src": "8432:11:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERCHandler_$1319", + "typeString": "contract IERCHandler" + } + }, + "visibility": "internal" + } + ], + "id": 443, + "initialValue": { + "arguments": [ + { + "id": 441, + "name": "handlerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 422, + "src": "8466:14:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 440, + "name": "IERCHandler", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1319, + "src": "8454:11:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERCHandler_$1319_$", + "typeString": "type(contract IERCHandler)" + } + }, + "id": 442, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8454:27:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERCHandler_$1319", + "typeString": "contract IERCHandler" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8432:49:0" + }, + { + "expression": { + "arguments": [ + { + "id": 447, + "name": "resourceID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 424, + "src": "8512:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 448, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 426, + "src": "8524:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 444, + "name": "handler", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 439, + "src": "8492:7:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERCHandler_$1319", + "typeString": "contract IERCHandler" + } + }, + "id": 446, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8500:11:0", + "memberName": "setResource", + "nodeType": "MemberAccess", + "referencedDeclaration": 1302, + "src": "8492:19:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address) external" + } }, - { - "attributes": { - "anonymous": false, - "documentation": null, - "name": "RelayerThresholdChanged" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "newThreshold", - "overrides": null, - "scope": 1178, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint", - "type": "uint256" - }, - "id": 1175, - "name": "ElementaryTypeName", - "src": "1704:4:4" - } - ], - "id": 1176, - "name": "VariableDeclaration", - "src": "1704:25:4" - } - ], - "id": 1177, - "name": "ParameterList", - "src": "1703:27:4" - } - ], - "id": 1178, - "name": "EventDefinition", - "src": "1674:57:4" + "id": 449, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8492:45:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 450, + "nodeType": "ExpressionStatement", + "src": "8492:45:0" + } + ] + }, + "documentation": { + "id": 420, + "nodeType": "StructuredDocumentation", + "src": "7700:537:0", + "text": "@notice Sets a new resource for handler contracts that use the IERCHandler interface,\nand maps the {handlerAddress} to {resourceID} in {_resourceIDToHandlerAddress}.\n@notice Only callable by an address that currently has the admin role.\n@param handlerAddress Address of handler resource will be set for.\n@param resourceID ResourceID to be used when making deposits.\n@param tokenAddress Address of contract to be called when a deposit is made and a deposited is executed." + }, + "functionSelector": "cb10f215", + "id": 452, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 429, + "kind": "modifierInvocation", + "modifierName": { + "id": 428, + "name": "onlyAdmin", + "nameLocations": [ + "8344:9:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 124, + "src": "8344:9:0" + }, + "nodeType": "ModifierInvocation", + "src": "8344:9:0" + } + ], + "name": "adminSetResource", + "nameLocation": "8252:16:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 427, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 422, + "mutability": "mutable", + "name": "handlerAddress", + "nameLocation": "8277:14:0", + "nodeType": "VariableDeclaration", + "scope": 452, + "src": "8269:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 421, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8269:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 424, + "mutability": "mutable", + "name": "resourceID", + "nameLocation": "8301:10:0", + "nodeType": "VariableDeclaration", + "scope": 452, + "src": "8293:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 423, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8293:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 426, + "mutability": "mutable", + "name": "tokenAddress", + "nameLocation": "8321:12:0", + "nodeType": "VariableDeclaration", + "scope": 452, + "src": "8313:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 425, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8313:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "8268:66:0" + }, + "returnParameters": { + "id": 430, + "nodeType": "ParameterList", + "parameters": [], + "src": "8354:0:0" + }, + "scope": 1209, + "src": "8243:302:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 490, + "nodeType": "Block", + "src": "9330:242:0", + "statements": [ + { + "expression": { + "id": 472, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 468, + "name": "_resourceIDToHandlerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 55, + "src": "9341:27:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + } + }, + "id": 470, + "indexExpression": { + "id": 469, + "name": "resourceID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 457, + "src": "9369:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "9341:39:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 471, + "name": "handlerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 455, + "src": "9383:14:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9341:56:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 473, + "nodeType": "ExpressionStatement", + "src": "9341:56:0" + }, + { + "assignments": [ + 476 + ], + "declarations": [ { - "attributes": { - "anonymous": false, - "documentation": null, - "name": "RelayerAdded" + "constant": false, + "id": 476, + "mutability": "mutable", + "name": "handler", + "nameLocation": "9424:7:0", + "nodeType": "VariableDeclaration", + "scope": 490, + "src": "9408:23:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IGenericHandler_$1335", + "typeString": "contract IGenericHandler" + }, + "typeName": { + "id": 475, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 474, + "name": "IGenericHandler", + "nameLocations": [ + "9408:15:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1335, + "src": "9408:15:0" }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "relayer", - "overrides": null, - "scope": 1182, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 1179, - "name": "ElementaryTypeName", - "src": "1755:7:4" - } - ], - "id": 1180, - "name": "VariableDeclaration", - "src": "1755:23:4" - } - ], - "id": 1181, - "name": "ParameterList", - "src": "1754:25:4" - } - ], - "id": 1182, - "name": "EventDefinition", - "src": "1736:44:4" + "referencedDeclaration": 1335, + "src": "9408:15:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IGenericHandler_$1335", + "typeString": "contract IGenericHandler" + } + }, + "visibility": "internal" + } + ], + "id": 480, + "initialValue": { + "arguments": [ + { + "id": 478, + "name": "handlerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 455, + "src": "9450:14:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 477, + "name": "IGenericHandler", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1335, + "src": "9434:15:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IGenericHandler_$1335_$", + "typeString": "type(contract IGenericHandler)" + } }, - { - "attributes": { - "anonymous": false, - "documentation": null, - "name": "RelayerRemoved" + "id": 479, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9434:31:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IGenericHandler_$1335", + "typeString": "contract IGenericHandler" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9408:57:0" + }, + { + "expression": { + "arguments": [ + { + "id": 484, + "name": "resourceID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 457, + "src": "9496:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 485, + "name": "contractAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 459, + "src": "9508:15:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 486, + "name": "depositFunctionSig", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 461, + "src": "9525:18:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "id": 487, + "name": "executeFunctionSig", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 463, + "src": "9545:18:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "relayer", - "overrides": null, - "scope": 1186, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 1183, - "name": "ElementaryTypeName", - "src": "1806:7:4" - } - ], - "id": 1184, - "name": "VariableDeclaration", - "src": "1806:23:4" - } - ], - "id": 1185, - "name": "ParameterList", - "src": "1805:25:4" - } - ], - "id": 1186, - "name": "EventDefinition", - "src": "1785:46:4" + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "expression": { + "id": 481, + "name": "handler", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 476, + "src": "9476:7:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IGenericHandler_$1335", + "typeString": "contract IGenericHandler" + } + }, + "id": 483, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9484:11:0", + "memberName": "setResource", + "nodeType": "MemberAccess", + "referencedDeclaration": 1334, + "src": "9476:19:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$_t_bytes4_$_t_bytes4_$returns$__$", + "typeString": "function (bytes32,address,bytes4,bytes4) external" + } }, + "id": 488, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9476:88:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 489, + "nodeType": "ExpressionStatement", + "src": "9476:88:0" + } + ] + }, + "documentation": { + "id": 453, + "nodeType": "StructuredDocumentation", + "src": "8553:544:0", + "text": "@notice Sets a new resource for handler contracts that use the IGenericHandler interface,\nand maps the {handlerAddress} to {resourceID} in {_resourceIDToHandlerAddress}.\n@notice Only callable by an address that currently has the admin role.\n@param handlerAddress Address of handler resource will be set for.\n@param resourceID ResourceID to be used when making deposits.\n@param contractAddress Address of contract to be called when a deposit is made and a deposited is executed." + }, + "functionSelector": "e8437ee7", + "id": 491, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 466, + "kind": "modifierInvocation", + "modifierName": { + "id": 465, + "name": "onlyAdmin", + "nameLocations": [ + "9320:9:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 124, + "src": "9320:9:0" + }, + "nodeType": "ModifierInvocation", + "src": "9320:9:0" + } + ], + "name": "adminSetGenericResource", + "nameLocation": "9112:23:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 464, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 455, + "mutability": "mutable", + "name": "handlerAddress", + "nameLocation": "9154:14:0", + "nodeType": "VariableDeclaration", + "scope": 491, + "src": "9146:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 454, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9146:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 457, + "mutability": "mutable", + "name": "resourceID", + "nameLocation": "9187:10:0", + "nodeType": "VariableDeclaration", + "scope": 491, + "src": "9179:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 456, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9179:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 459, + "mutability": "mutable", + "name": "contractAddress", + "nameLocation": "9216:15:0", + "nodeType": "VariableDeclaration", + "scope": 491, + "src": "9208:23:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 458, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9208:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 461, + "mutability": "mutable", + "name": "depositFunctionSig", + "nameLocation": "9249:18:0", + "nodeType": "VariableDeclaration", + "scope": 491, + "src": "9242:25:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 460, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "9242:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 463, + "mutability": "mutable", + "name": "executeFunctionSig", + "nameLocation": "9285:18:0", + "nodeType": "VariableDeclaration", + "scope": 491, + "src": "9278:25:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 462, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "9278:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "9135:175:0" + }, + "returnParameters": { + "id": 467, + "nodeType": "ParameterList", + "parameters": [], + "src": "9330:0:0" + }, + "scope": 1209, + "src": "9103:469:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 514, + "nodeType": "Block", + "src": "10062:112:0", + "statements": [ + { + "assignments": [ + 503 + ], + "declarations": [ { - "attributes": { - "anonymous": false, - "documentation": null, - "name": "Deposit" + "constant": false, + "id": 503, + "mutability": "mutable", + "name": "handler", + "nameLocation": "10085:7:0", + "nodeType": "VariableDeclaration", + "scope": 514, + "src": "10073:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERCHandler_$1319", + "typeString": "contract IERCHandler" + }, + "typeName": { + "id": 502, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 501, + "name": "IERCHandler", + "nameLocations": [ + "10073:11:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1319, + "src": "10073:11:0" }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "destinationChainID", - "overrides": null, - "scope": 1194, - "stateVariable": false, - "storageLocation": "default", - "type": "uint8", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint8", - "type": "uint8" - }, - "id": 1187, - "name": "ElementaryTypeName", - "src": "1859:5:4" - } - ], - "id": 1188, - "name": "VariableDeclaration", - "src": "1859:34:4" - }, - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "resourceID", - "overrides": null, - "scope": 1194, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1189, - "name": "ElementaryTypeName", - "src": "1903:7:4" - } - ], - "id": 1190, - "name": "VariableDeclaration", - "src": "1903:26:4" - }, - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "depositNonce", - "overrides": null, - "scope": 1194, - "stateVariable": false, - "storageLocation": "default", - "type": "uint64", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint64", - "type": "uint64" - }, - "id": 1191, - "name": "ElementaryTypeName", - "src": "1939:6:4" - } - ], - "id": 1192, - "name": "VariableDeclaration", - "src": "1939:28:4" - } - ], - "id": 1193, - "name": "ParameterList", - "src": "1849:124:4" - } - ], - "id": 1194, - "name": "EventDefinition", - "src": "1836:138:4" + "referencedDeclaration": 1319, + "src": "10073:11:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERCHandler_$1319", + "typeString": "contract IERCHandler" + } + }, + "visibility": "internal" + } + ], + "id": 507, + "initialValue": { + "arguments": [ + { + "id": 505, + "name": "handlerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 494, + "src": "10107:14:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 504, + "name": "IERCHandler", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1319, + "src": "10095:11:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERCHandler_$1319_$", + "typeString": "type(contract IERCHandler)" + } + }, + "id": 506, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10095:27:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERCHandler_$1319", + "typeString": "contract IERCHandler" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10073:49:0" + }, + { + "expression": { + "arguments": [ + { + "id": 511, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 496, + "src": "10153:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 508, + "name": "handler", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 503, + "src": "10133:7:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERCHandler_$1319", + "typeString": "contract IERCHandler" + } + }, + "id": 510, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10141:11:0", + "memberName": "setBurnable", + "nodeType": "MemberAccess", + "referencedDeclaration": 1308, + "src": "10133:19:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", + "typeString": "function (address) external" + } }, + "id": 512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10133:33:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 513, + "nodeType": "ExpressionStatement", + "src": "10133:33:0" + } + ] + }, + "documentation": { + "id": 492, + "nodeType": "StructuredDocumentation", + "src": "9580:385:0", + "text": "@notice Sets a resource as burnable for handler contracts that use the IERCHandler interface.\n@notice Only callable by an address that currently has the admin role.\n@param handlerAddress Address of handler resource will be set for.\n@param tokenAddress Address of contract to be called when a deposit is made and a deposited is executed." + }, + "functionSelector": "8c0c2631", + "id": 515, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 499, + "kind": "modifierInvocation", + "modifierName": { + "id": 498, + "name": "onlyAdmin", + "nameLocations": [ + "10052:9:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 124, + "src": "10052:9:0" + }, + "nodeType": "ModifierInvocation", + "src": "10052:9:0" + } + ], + "name": "adminSetBurnable", + "nameLocation": "9980:16:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 497, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 494, + "mutability": "mutable", + "name": "handlerAddress", + "nameLocation": "10005:14:0", + "nodeType": "VariableDeclaration", + "scope": 515, + "src": "9997:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 493, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9997:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 496, + "mutability": "mutable", + "name": "tokenAddress", + "nameLocation": "10029:12:0", + "nodeType": "VariableDeclaration", + "scope": 515, + "src": "10021:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 495, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10021:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "9996:46:0" + }, + "returnParameters": { + "id": 500, + "nodeType": "ParameterList", + "parameters": [], + "src": "10062:0:0" + }, + "scope": 1209, + "src": "9971:203:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 549, + "nodeType": "Block", + "src": "10891:140:0", + "statements": [ + { + "assignments": [ + 529 + ], + "declarations": [ { - "attributes": { - "anonymous": false, - "documentation": null, - "name": "ProposalEvent" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "originChainID", - "overrides": null, - "scope": 1206, - "stateVariable": false, - "storageLocation": "default", - "type": "uint8", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint8", - "type": "uint8" - }, - "id": 1195, - "name": "ElementaryTypeName", - "src": "2008:5:4" - } - ], - "id": 1196, - "name": "VariableDeclaration", - "src": "2008:37:4" - }, - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "depositNonce", - "overrides": null, - "scope": 1206, - "stateVariable": false, - "storageLocation": "default", - "type": "uint64", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint64", - "type": "uint64" - }, - "id": 1197, - "name": "ElementaryTypeName", - "src": "2055:6:4" - } - ], - "id": 1198, - "name": "VariableDeclaration", - "src": "2055:36:4" - }, - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "status", - "overrides": null, - "scope": 1206, - "stateVariable": false, - "storageLocation": "default", - "type": "enum Bridge.ProposalStatus", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "ProposalStatus", - "referencedDeclaration": 1131, - "type": "enum Bridge.ProposalStatus" - }, - "id": 1199, - "name": "UserDefinedTypeName", - "src": "2101:14:4" - } - ], - "id": 1200, - "name": "VariableDeclaration", - "src": "2101:30:4" - }, - { - "attributes": { - "constant": false, - "indexed": false, - "mutability": "mutable", - "name": "resourceID", - "overrides": null, - "scope": 1206, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1201, - "name": "ElementaryTypeName", - "src": "2141:7:4" - } - ], - "id": 1202, - "name": "VariableDeclaration", - "src": "2141:18:4" - }, - { - "attributes": { - "constant": false, - "indexed": false, - "mutability": "mutable", - "name": "dataHash", - "overrides": null, - "scope": 1206, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1203, - "name": "ElementaryTypeName", - "src": "2169:7:4" - } - ], - "id": 1204, - "name": "VariableDeclaration", - "src": "2169:16:4" - } - ], - "id": 1205, - "name": "ParameterList", - "src": "1998:193:4" + "constant": false, + "id": 529, + "mutability": "mutable", + "name": "nonceAndID", + "nameLocation": "10909:10:0", + "nodeType": "VariableDeclaration", + "scope": 549, + "src": "10902:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + }, + "typeName": { + "id": 528, + "name": "uint72", + "nodeType": "ElementaryTypeName", + "src": "10902:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + } + }, + "visibility": "internal" + } + ], + "id": 542, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + }, + "id": 541, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + }, + "id": 535, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 532, + "name": "depositNonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 520, + "src": "10930:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "id": 531, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10923:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint72_$", + "typeString": "type(uint72)" + }, + "typeName": { + "id": 530, + "name": "uint72", + "nodeType": "ElementaryTypeName", + "src": "10923:6:0", + "typeDescriptions": {} + } + }, + "id": 533, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10923:20:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "38", + "id": 534, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10947:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "src": "10923:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + } + } + ], + "id": 536, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10922:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + } + }, + "nodeType": "BinaryOperation", + "operator": "|", + "rightExpression": { + "arguments": [ + { + "id": 539, + "name": "originChainID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 518, + "src": "10959:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } ], - "id": 1206, - "name": "EventDefinition", - "src": "1979:213:4" + "id": 538, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10952:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint72_$", + "typeString": "type(uint72)" + }, + "typeName": { + "id": 537, + "name": "uint72", + "nodeType": "ElementaryTypeName", + "src": "10952:6:0", + "typeDescriptions": {} + } + }, + "id": 540, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10952:21:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + } + }, + "src": "10922:51:0", + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10902:71:0" + }, + { + "expression": { + "baseExpression": { + "baseExpression": { + "id": 543, + "name": "_proposals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 68, + "src": "10991:10:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint72_$_t_mapping$_t_bytes32_$_t_struct$_Proposal_$47_storage_$_$", + "typeString": "mapping(uint72 => mapping(bytes32 => struct Bridge.Proposal storage ref))" + } + }, + "id": 545, + "indexExpression": { + "id": 544, + "name": "nonceAndID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 529, + "src": "11002:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10991:22:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$47_storage_$", + "typeString": "mapping(bytes32 => struct Bridge.Proposal storage ref)" + } + }, + "id": 547, + "indexExpression": { + "id": 546, + "name": "dataHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 522, + "src": "11014:8:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10991:32:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$47_storage", + "typeString": "struct Bridge.Proposal storage ref" + } + }, + "functionReturnParameters": 527, + "id": 548, + "nodeType": "Return", + "src": "10984:39:0" + } + ] + }, + "documentation": { + "id": 516, + "nodeType": "StructuredDocumentation", + "src": "10182:582:0", + "text": "@notice Returns a proposal.\n@param originChainID Chain ID deposit originated from.\n@param depositNonce ID of proposal generated by proposal's origin Bridge contract.\n@param dataHash Hash of data to be provided when deposit proposal is executed.\n@return Proposal which consists of:\n- _dataHash Hash of data to be provided when deposit proposal is executed.\n- _yesVotes Number of votes in favor of proposal.\n- _noVotes Number of votes against proposal.\n- _status Current status of proposal." + }, + "functionSelector": "a9cf69fa", + "id": 550, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getProposal", + "nameLocation": "10779:11:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 523, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 518, + "mutability": "mutable", + "name": "originChainID", + "nameLocation": "10797:13:0", + "nodeType": "VariableDeclaration", + "scope": 550, + "src": "10791:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 517, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "10791:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 520, + "mutability": "mutable", + "name": "depositNonce", + "nameLocation": "10819:12:0", + "nodeType": "VariableDeclaration", + "scope": 550, + "src": "10812:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 519, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "10812:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 522, + "mutability": "mutable", + "name": "dataHash", + "nameLocation": "10841:8:0", + "nodeType": "VariableDeclaration", + "scope": 550, + "src": "10833:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 521, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "10833:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "10790:60:0" + }, + "returnParameters": { + "id": 527, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 526, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 550, + "src": "10874:15:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$47_memory_ptr", + "typeString": "struct Bridge.Proposal" + }, + "typeName": { + "id": 525, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 524, + "name": "Proposal", + "nameLocations": [ + "10874:8:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 47, + "src": "10874:8:0" }, - { - "attributes": { - "anonymous": false, - "documentation": null, - "name": "ProposalVote" + "referencedDeclaration": 47, + "src": "10874:8:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$47_storage_ptr", + "typeString": "struct Bridge.Proposal" + } + }, + "visibility": "internal" + } + ], + "src": "10873:17:0" + }, + "scope": 1209, + "src": "10770:261:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 569, + "nodeType": "Block", + "src": "11248:101:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "originChainID", - "overrides": null, - "scope": 1216, - "stateVariable": false, - "storageLocation": "default", - "type": "uint8", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint8", - "type": "uint8" - }, - "id": 1207, - "name": "ElementaryTypeName", - "src": "2226:5:4" - } - ], - "id": 1208, - "name": "VariableDeclaration", - "src": "2226:29:4" - }, - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "depositNonce", - "overrides": null, - "scope": 1216, - "stateVariable": false, - "storageLocation": "default", - "type": "uint64", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint64", - "type": "uint64" - }, - "id": 1209, - "name": "ElementaryTypeName", - "src": "2265:6:4" - } - ], - "id": 1210, - "name": "VariableDeclaration", - "src": "2265:28:4" - }, - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "status", - "overrides": null, - "scope": 1216, - "stateVariable": false, - "storageLocation": "default", - "type": "enum Bridge.ProposalStatus", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "ProposalStatus", - "referencedDeclaration": 1131, - "type": "enum Bridge.ProposalStatus" - }, - "id": 1211, - "name": "UserDefinedTypeName", - "src": "2303:14:4" - } - ], - "id": 1212, - "name": "VariableDeclaration", - "src": "2303:29:4" - }, - { - "attributes": { - "constant": false, - "indexed": false, - "mutability": "mutable", - "name": "resourceID", - "overrides": null, - "scope": 1216, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1213, - "name": "ElementaryTypeName", - "src": "2342:7:4" - } - ], - "id": 1214, - "name": "VariableDeclaration", - "src": "2342:18:4" - } - ], - "id": 1215, - "name": "ParameterList", - "src": "2216:150:4" - } - ], - "id": 1216, - "name": "EventDefinition", - "src": "2198:169:4" + "id": 561, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 559, + "name": "_fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 20, + "src": "11267:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 560, + "name": "newFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 553, + "src": "11275:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11267:14:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "43757272656e742066656520697320657175616c20746f206e657720666565", + "id": 562, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11283:33:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_db095f13e245243418ee9a5b7ae0408e2f6a2092be336cf2ec7b5f2ae85b9133", + "typeString": "literal_string \"Current fee is equal to new fee\"" + }, + "value": "Current fee is equal to new fee" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_db095f13e245243418ee9a5b7ae0408e2f6a2092be336cf2ec7b5f2ae85b9133", + "typeString": "literal_string \"Current fee is equal to new fee\"" + } + ], + "id": 558, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "11259:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } }, - { - "attributes": { - "constant": true, - "functionSelector": "926d7d7f", - "mutability": "constant", - "name": "RELAYER_ROLE", - "overrides": null, - "scope": 2244, - "stateVariable": true, - "storageLocation": "default", - "type": "bytes32", - "visibility": "public" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1217, - "name": "ElementaryTypeName", - "src": "2373:7:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "bytes32", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_e2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc4", - "typeString": "literal_string \"RELAYER_ROLE\"" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": -8, - "type": "function (bytes memory) pure returns (bytes32)", - "value": "keccak256" - }, - "id": 1218, - "name": "Identifier", - "src": "2412:9:4" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "52454c415945525f524f4c45", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"RELAYER_ROLE\"", - "value": "RELAYER_ROLE" - }, - "id": 1219, - "name": "Literal", - "src": "2422:14:4" - } - ], - "id": 1220, - "name": "FunctionCall", - "src": "2412:25:4" - } - ], - "id": 1221, - "name": "VariableDeclaration", - "src": "2373:64:4" + "id": 563, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11259:58:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 564, + "nodeType": "ExpressionStatement", + "src": "11259:58:0" + }, + { + "expression": { + "id": 567, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 565, + "name": "_fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 20, + "src": "11328:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 566, + "name": "newFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 553, + "src": "11335:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11328:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 568, + "nodeType": "ExpressionStatement", + "src": "11328:13:0" + } + ] + }, + "documentation": { + "id": 551, + "nodeType": "StructuredDocumentation", + "src": "11039:147:0", + "text": "@notice Changes deposit fee.\n@notice Only callable by admin.\n@param newFee Value {_fee} will be updated to." + }, + "functionSelector": "91c404ac", + "id": 570, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 556, + "kind": "modifierInvocation", + "modifierName": { + "id": 555, + "name": "onlyAdmin", + "nameLocations": [ + "11238:9:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 124, + "src": "11238:9:0" + }, + "nodeType": "ModifierInvocation", + "src": "11238:9:0" + } + ], + "name": "adminChangeFee", + "nameLocation": "11201:14:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 554, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 553, + "mutability": "mutable", + "name": "newFee", + "nameLocation": "11221:6:0", + "nodeType": "VariableDeclaration", + "scope": 570, + "src": "11216:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 552, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "11216:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11215:13:0" + }, + "returnParameters": { + "id": 557, + "nodeType": "ParameterList", + "parameters": [], + "src": "11248:0:0" + }, + "scope": 1209, + "src": "11192:157:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 582, + "nodeType": "Block", + "src": "11566:38:0", + "statements": [ + { + "expression": { + "id": 580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 578, + "name": "_expiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 22, + "src": "11577:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 579, + "name": "newExpiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 573, + "src": "11587:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, + "src": "11577:19:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 581, + "nodeType": "ExpressionStatement", + "src": "11577:19:0" + } + ] + }, + "documentation": { + "id": 571, + "nodeType": "StructuredDocumentation", + "src": "11357:147:0", + "text": "@notice Changes xpiry.\n@notice Only callable by admin.\n@param newExpiry Value {_expiry} will be updated to." + }, + "functionSelector": "3f47585e", + "id": 583, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 576, + "kind": "modifierInvocation", + "modifierName": { + "id": 575, + "name": "onlyAdmin", + "nameLocations": [ + "11556:9:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 124, + "src": "11556:9:0" + }, + "nodeType": "ModifierInvocation", + "src": "11556:9:0" + } + ], + "name": "adminExpiry", + "nameLocation": "11519:11:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 574, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 573, + "mutability": "mutable", + "name": "newExpiry", + "nameLocation": "11536:9:0", + "nodeType": "VariableDeclaration", + "scope": 583, + "src": "11531:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 572, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "11531:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11530:16:0" + }, + "returnParameters": { + "id": 577, + "nodeType": "ParameterList", + "parameters": [], + "src": "11566:0:0" + }, + "scope": 1209, + "src": "11510:94:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 612, + "nodeType": "Block", + "src": "12156:137:0", + "statements": [ + { + "assignments": [ + 599 + ], + "declarations": [ { - "attributes": { - "documentation": null, - "name": "onlyAdmin", - "overrides": null, - "virtual": false, - "visibility": "internal" + "constant": false, + "id": 599, + "mutability": "mutable", + "name": "handler", + "nameLocation": "12179:7:0", + "nodeType": "VariableDeclaration", + "scope": 612, + "src": "12167:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERCHandler_$1319", + "typeString": "contract IERCHandler" + }, + "typeName": { + "id": 598, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 597, + "name": "IERCHandler", + "nameLocations": [ + "12167:11:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1319, + "src": "12167:11:0" }, - "children": [ - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 1222, - "name": "ParameterList", - "src": "2462:2:4" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "arguments": [null], - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [null], - "overloadedDeclarations": [null], - "referencedDeclaration": 1274, - "type": "function ()", - "value": "_onlyAdmin" - }, - "id": 1223, - "name": "Identifier", - "src": "2475:10:4" - } - ], - "id": 1224, - "name": "FunctionCall", - "src": "2475:12:4" - } - ], - "id": 1225, - "name": "ExpressionStatement", - "src": "2475:12:4" - }, - { - "id": 1226, - "name": "PlaceholderStatement", - "src": "2497:1:4" - } - ], - "id": 1227, - "name": "Block", - "src": "2465:40:4" - } - ], - "id": 1228, - "name": "ModifierDefinition", - "src": "2444:61:4" + "referencedDeclaration": 1319, + "src": "12167:11:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERCHandler_$1319", + "typeString": "contract IERCHandler" + } + }, + "visibility": "internal" + } + ], + "id": 603, + "initialValue": { + "arguments": [ + { + "id": 601, + "name": "handlerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 586, + "src": "12201:14:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 600, + "name": "IERCHandler", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1319, + "src": "12189:11:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERCHandler_$1319_$", + "typeString": "type(contract IERCHandler)" + } }, - { - "attributes": { - "documentation": null, - "name": "onlyAdminOrRelayer", - "overrides": null, - "virtual": false, - "visibility": "internal" + "id": 602, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12189:27:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERCHandler_$1319", + "typeString": "contract IERCHandler" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12167:49:0" + }, + { + "expression": { + "arguments": [ + { + "id": 607, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 588, + "src": "12244:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 608, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 590, + "src": "12258:9:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 609, + "name": "amountOrTokenID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 592, + "src": "12269:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" }, - "children": [ - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 1229, - "name": "ParameterList", - "src": "2538:2:4" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "arguments": [null], - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [null], - "overloadedDeclarations": [null], - "referencedDeclaration": 1261, - "type": "function ()", - "value": "_onlyAdminOrRelayer" - }, - "id": 1230, - "name": "Identifier", - "src": "2551:19:4" - } - ], - "id": 1231, - "name": "FunctionCall", - "src": "2551:21:4" - } - ], - "id": 1232, - "name": "ExpressionStatement", - "src": "2551:21:4" - }, - { - "id": 1233, - "name": "PlaceholderStatement", - "src": "2582:1:4" - } - ], - "id": 1234, - "name": "Block", - "src": "2541:49:4" - } - ], - "id": 1235, - "name": "ModifierDefinition", - "src": "2511:79:4" + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 604, + "name": "handler", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 599, + "src": "12227:7:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERCHandler_$1319", + "typeString": "contract IERCHandler" + } + }, + "id": 606, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12235:8:0", + "memberName": "withdraw", + "nodeType": "MemberAccess", + "referencedDeclaration": 1318, + "src": "12227:16:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256) external" + } }, - { - "attributes": { - "documentation": null, - "name": "onlyRelayers", - "overrides": null, - "virtual": false, - "visibility": "internal" + "id": 610, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12227:58:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 611, + "nodeType": "ExpressionStatement", + "src": "12227:58:0" + } + ] + }, + "documentation": { + "id": 584, + "nodeType": "StructuredDocumentation", + "src": "11612:363:0", + "text": "@notice Used to manually withdraw funds from ERC safes.\n@param handlerAddress Address of handler to withdraw from.\n@param tokenAddress Address of token to withdraw.\n@param recipient Address to withdraw tokens to.\n@param amountOrTokenID Either the amount of ERC20 tokens or the ERC721 token ID to withdraw." + }, + "functionSelector": "780cf004", + "id": 613, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 595, + "kind": "modifierInvocation", + "modifierName": { + "id": 594, + "name": "onlyAdmin", + "nameLocations": [ + "12146:9:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 124, + "src": "12146:9:0" + }, + "nodeType": "ModifierInvocation", + "src": "12146:9:0" + } + ], + "name": "adminWithdraw", + "nameLocation": "11990:13:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 593, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 586, + "mutability": "mutable", + "name": "handlerAddress", + "nameLocation": "12022:14:0", + "nodeType": "VariableDeclaration", + "scope": 613, + "src": "12014:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 585, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12014:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 588, + "mutability": "mutable", + "name": "tokenAddress", + "nameLocation": "12055:12:0", + "nodeType": "VariableDeclaration", + "scope": 613, + "src": "12047:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 587, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12047:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 590, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "12086:9:0", + "nodeType": "VariableDeclaration", + "scope": 613, + "src": "12078:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 589, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12078:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 592, + "mutability": "mutable", + "name": "amountOrTokenID", + "nameLocation": "12114:15:0", + "nodeType": "VariableDeclaration", + "scope": 613, + "src": "12106:23:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 591, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12106:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "12003:133:0" + }, + "returnParameters": { + "id": 596, + "nodeType": "ParameterList", + "parameters": [], + "src": "12156:0:0" + }, + "scope": 1209, + "src": "11981:312:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 688, + "nodeType": "Block", + "src": "12847:594:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - "children": [ - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 1236, - "name": "ParameterList", - "src": "2617:2:4" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "arguments": [null], - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [null], - "overloadedDeclarations": [null], - "referencedDeclaration": 1287, - "type": "function ()", - "value": "_onlyRelayers" - }, - "id": 1237, - "name": "Identifier", - "src": "2630:13:4" - } - ], - "id": 1238, - "name": "FunctionCall", - "src": "2630:15:4" - } - ], - "id": 1239, - "name": "ExpressionStatement", - "src": "2630:15:4" - }, - { - "id": 1240, - "name": "PlaceholderStatement", - "src": "2655:1:4" - } - ], - "id": 1241, - "name": "Block", - "src": "2620:43:4" - } - ], - "id": 1242, - "name": "ModifierDefinition", - "src": "2596:67:4" - }, - { - "attributes": { - "documentation": null, - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [null], - "name": "_onlyAdminOrRelayer", - "overrides": null, - "scope": 2244, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "private" - }, - "children": [ - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 1243, - "name": "ParameterList", - "src": "2697:2:4" - }, - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 1244, - "name": "ParameterList", - "src": "2708:0:4" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_060530e99bec4f476b8f8f370f65f741cac486899cd6c35c4dd2e82720711afe", - "typeString": "literal_string \"sender is not relayer or admin\"" - } - ], - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 1245, - "name": "Identifier", - "src": "2718:7:4" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "||", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 71, - "type": "function (bytes32,address) view returns (bool)", - "value": "hasRole" - }, - "id": 1246, - "name": "Identifier", - "src": "2726:7:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 25, - "type": "bytes32", - "value": "DEFAULT_ADMIN_ROLE" - }, - "id": 1247, - "name": "Identifier", - "src": "2734:18:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "referencedDeclaration": null, - "type": "address payable" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": -15, - "type": "msg", - "value": "msg" - }, - "id": 1248, - "name": "Identifier", - "src": "2754:3:4" - } - ], - "id": 1249, - "name": "MemberAccess", - "src": "2754:10:4" - } - ], - "id": 1250, - "name": "FunctionCall", - "src": "2726:39:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 71, - "type": "function (bytes32,address) view returns (bool)", - "value": "hasRole" - }, - "id": 1251, - "name": "Identifier", - "src": "2769:7:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1221, - "type": "bytes32", - "value": "RELAYER_ROLE" - }, - "id": 1252, - "name": "Identifier", - "src": "2777:12:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "referencedDeclaration": null, - "type": "address payable" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": -15, - "type": "msg", - "value": "msg" - }, - "id": 1253, - "name": "Identifier", - "src": "2791:3:4" - } - ], - "id": 1254, - "name": "MemberAccess", - "src": "2791:10:4" - } - ], - "id": 1255, - "name": "FunctionCall", - "src": "2769:33:4" - } - ], - "id": 1256, - "name": "BinaryOperation", - "src": "2726:76:4" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "73656e646572206973206e6f742072656c61796572206f722061646d696e", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"sender is not relayer or admin\"", - "value": "sender is not relayer or admin" - }, - "id": 1257, - "name": "Literal", - "src": "2816:32:4" - } - ], - "id": 1258, - "name": "FunctionCall", - "src": "2718:131:4" - } - ], - "id": 1259, - "name": "ExpressionStatement", - "src": "2718:131:4" - } - ], - "id": 1260, - "name": "Block", - "src": "2708:148:4" - } - ], - "id": 1261, - "name": "FunctionDefinition", - "src": "2669:187:4" - }, - { - "attributes": { - "documentation": null, - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [null], - "name": "_onlyAdmin", - "overrides": null, - "scope": 2244, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "private" - }, - "children": [ - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 1262, - "name": "ParameterList", - "src": "2881:2:4" - }, - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 1263, - "name": "ParameterList", - "src": "2892:0:4" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_cccb3b305edc7308d7027b1001041a46b235f7d3213d690bb469676069d9b205", - "typeString": "literal_string \"sender doesn't have admin role\"" - } - ], - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 1264, - "name": "Identifier", - "src": "2902:7:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 71, - "type": "function (bytes32,address) view returns (bool)", - "value": "hasRole" - }, - "id": 1265, - "name": "Identifier", - "src": "2910:7:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 25, - "type": "bytes32", - "value": "DEFAULT_ADMIN_ROLE" - }, - "id": 1266, - "name": "Identifier", - "src": "2918:18:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "referencedDeclaration": null, - "type": "address payable" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": -15, - "type": "msg", - "value": "msg" - }, - "id": 1267, - "name": "Identifier", - "src": "2938:3:4" - } - ], - "id": 1268, - "name": "MemberAccess", - "src": "2938:10:4" - } - ], - "id": 1269, - "name": "FunctionCall", - "src": "2910:39:4" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "73656e64657220646f65736e277420686176652061646d696e20726f6c65", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"sender doesn't have admin role\"", - "value": "sender doesn't have admin role" - }, - "id": 1270, - "name": "Literal", - "src": "2951:32:4" - } - ], - "id": 1271, - "name": "FunctionCall", - "src": "2902:82:4" - } - ], - "id": 1272, - "name": "ExpressionStatement", - "src": "2902:82:4" - } - ], - "id": 1273, - "name": "Block", - "src": "2892:99:4" - } - ], - "id": 1274, - "name": "FunctionDefinition", - "src": "2862:129:4" - }, - { - "attributes": { - "documentation": null, - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [null], - "name": "_onlyRelayers", - "overrides": null, - "scope": 2244, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "private" - }, - "children": [ - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 1275, - "name": "ParameterList", - "src": "3019:2:4" - }, - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 1276, - "name": "ParameterList", - "src": "3030:0:4" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_c5edc249083609d56bd00194353566fb7b8c09e436c3268ab57a56188319b6d4", - "typeString": "literal_string \"sender doesn't have relayer role\"" - } - ], - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 1277, - "name": "Identifier", - "src": "3040:7:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 71, - "type": "function (bytes32,address) view returns (bool)", - "value": "hasRole" - }, - "id": 1278, - "name": "Identifier", - "src": "3048:7:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1221, - "type": "bytes32", - "value": "RELAYER_ROLE" - }, - "id": 1279, - "name": "Identifier", - "src": "3056:12:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "referencedDeclaration": null, - "type": "address payable" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": -15, - "type": "msg", - "value": "msg" - }, - "id": 1280, - "name": "Identifier", - "src": "3070:3:4" - } - ], - "id": 1281, - "name": "MemberAccess", - "src": "3070:10:4" - } - ], - "id": 1282, - "name": "FunctionCall", - "src": "3048:33:4" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "73656e64657220646f65736e277420686176652072656c6179657220726f6c65", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"sender doesn't have relayer role\"", - "value": "sender doesn't have relayer role" - }, - "id": 1283, - "name": "Literal", - "src": "3083:34:4" - } - ], - "id": 1284, - "name": "FunctionCall", - "src": "3040:78:4" - } - ], - "id": 1285, - "name": "ExpressionStatement", - "src": "3040:78:4" - } - ], - "id": 1286, - "name": "Block", - "src": "3030:95:4" + "id": 629, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 626, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "12866:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" } - ], - "id": 1287, - "name": "FunctionDefinition", - "src": "2997:128:4" + }, + "id": 627, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12870:5:0", + "memberName": "value", + "nodeType": "MemberAccess", + "src": "12866:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 628, + "name": "_fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 20, + "src": "12879:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12866:17:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "496e636f72726563742066656520737570706c696564", + "id": 630, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12885:24:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2a2431514317abe5c8b163ccf132d16516b7e676afbb7d1bf5781dba4082d9d5", + "typeString": "literal_string \"Incorrect fee supplied\"" + }, + "value": "Incorrect fee supplied" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2a2431514317abe5c8b163ccf132d16516b7e676afbb7d1bf5781dba4082d9d5", + "typeString": "literal_string \"Incorrect fee supplied\"" + } + ], + "id": 625, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "12858:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } }, + "id": 631, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12858:52:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 632, + "nodeType": "ExpressionStatement", + "src": "12858:52:0" + }, + { + "assignments": [ + 634 + ], + "declarations": [ { - "attributes": { - "implemented": true, - "isConstructor": true, - "kind": "constructor", - "modifiers": [null], - "name": "", - "overrides": null, - "scope": 2244, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" + "constant": false, + "id": 634, + "mutability": "mutable", + "name": "handler", + "nameLocation": "12931:7:0", + "nodeType": "VariableDeclaration", + "scope": 688, + "src": "12923:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 633, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12923:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 638, + "initialValue": { + "baseExpression": { + "id": 635, + "name": "_resourceIDToHandlerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 55, + "src": "12941:27:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + } + }, + "id": 637, + "indexExpression": { + "id": 636, + "name": "resourceID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 618, + "src": "12969:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12941:39:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12923:57:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" }, - "children": [ - { - "attributes": { - "text": "@notice Initializes Bridge, creates and grants {msg.sender} the admin role,\ncreates and grants {initialRelayers} the relayer role.\n@param chainID ID of chain the Bridge contract exists on.\n@param initialRelayers Addresses that should be initially granted the relayer role.\n@param initialRelayerThreshold Number of votes needed for a deposit proposal to be considered passed." - }, - "id": 1288, - "name": "StructuredDocumentation", - "src": "3131:426:4" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "chainID", - "overrides": null, - "scope": 1356, - "stateVariable": false, - "storageLocation": "default", - "type": "uint8", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint8", - "type": "uint8" - }, - "id": 1289, - "name": "ElementaryTypeName", - "src": "3575:5:4" - } - ], - "id": 1290, - "name": "VariableDeclaration", - "src": "3575:13:4" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "initialRelayers", - "overrides": null, - "scope": 1356, - "stateVariable": false, - "storageLocation": "memory", - "type": "address[]", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "length": null, - "type": "address[]" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 1291, - "name": "ElementaryTypeName", - "src": "3590:7:4" - } - ], - "id": 1292, - "name": "ArrayTypeName", - "src": "3590:9:4" - } - ], - "id": 1293, - "name": "VariableDeclaration", - "src": "3590:32:4" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "initialRelayerThreshold", - "overrides": null, - "scope": 1356, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint", - "type": "uint256" - }, - "id": 1294, - "name": "ElementaryTypeName", - "src": "3624:4:4" - } - ], - "id": 1295, - "name": "VariableDeclaration", - "src": "3624:28:4" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "fee", - "overrides": null, - "scope": 1356, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 1296, - "name": "ElementaryTypeName", - "src": "3654:7:4" - } - ], - "id": 1297, - "name": "VariableDeclaration", - "src": "3654:11:4" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "expiry", - "overrides": null, - "scope": 1356, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 1298, - "name": "ElementaryTypeName", - "src": "3667:7:4" - } - ], - "id": 1299, - "name": "VariableDeclaration", - "src": "3667:14:4" - } - ], - "id": 1300, - "name": "ParameterList", - "src": "3574:108:4" - }, - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 1301, - "name": "ParameterList", - "src": "3690:0:4" - }, + "id": 645, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 640, + "name": "handler", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 634, + "src": "12999:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "uint8" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1112, - "type": "uint8", - "value": "_chainID" - }, - "id": 1302, - "name": "Identifier", - "src": "3700:8:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1290, - "type": "uint8", - "value": "chainID" - }, - "id": 1303, - "name": "Identifier", - "src": "3711:7:4" - } - ], - "id": 1304, - "name": "Assignment", - "src": "3700:18:4" - } - ], - "id": 1305, - "name": "ExpressionStatement", - "src": "3700:18:4" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1114, - "type": "uint256", - "value": "_relayerThreshold" - }, - "id": 1306, - "name": "Identifier", - "src": "3728:17:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1295, - "type": "uint256", - "value": "initialRelayerThreshold" - }, - "id": 1307, - "name": "Identifier", - "src": "3748:23:4" - } - ], - "id": 1308, - "name": "Assignment", - "src": "3728:43:4" - } - ], - "id": 1309, - "name": "ExpressionStatement", - "src": "3728:43:4" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1120, - "type": "uint256", - "value": "_fee" - }, - "id": 1310, - "name": "Identifier", - "src": "3781:4:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1297, - "type": "uint256", - "value": "fee" - }, - "id": 1311, - "name": "Identifier", - "src": "3788:3:4" - } - ], - "id": 1312, - "name": "Assignment", - "src": "3781:10:4" - } - ], - "id": 1313, - "name": "ExpressionStatement", - "src": "3781:10:4" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1122, - "type": "uint256", - "value": "_expiry" - }, - "id": 1314, - "name": "Identifier", - "src": "3801:7:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1299, - "type": "uint256", - "value": "expiry" - }, - "id": 1315, - "name": "Identifier", - "src": "3811:6:4" - } - ], - "id": 1316, - "name": "Assignment", - "src": "3801:16:4" - } - ], - "id": 1317, - "name": "ExpressionStatement", - "src": "3801:16:4" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 208, - "type": "function (bytes32,address)", - "value": "_setupRole" - }, - "id": 1318, - "name": "Identifier", - "src": "3828:10:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 25, - "type": "bytes32", - "value": "DEFAULT_ADMIN_ROLE" - }, - "id": 1319, - "name": "Identifier", - "src": "3839:18:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "referencedDeclaration": null, - "type": "address payable" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": -15, - "type": "msg", - "value": "msg" - }, - "id": 1320, - "name": "Identifier", - "src": "3859:3:4" - } - ], - "id": 1321, - "name": "MemberAccess", - "src": "3859:10:4" - } - ], - "id": 1322, - "name": "FunctionCall", - "src": "3828:42:4" - } - ], - "id": 1323, - "name": "ExpressionStatement", - "src": "3828:42:4" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 233, - "type": "function (bytes32,bytes32)", - "value": "_setRoleAdmin" - }, - "id": 1324, - "name": "Identifier", - "src": "3880:13:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1221, - "type": "bytes32", - "value": "RELAYER_ROLE" - }, - "id": 1325, - "name": "Identifier", - "src": "3894:12:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 25, - "type": "bytes32", - "value": "DEFAULT_ADMIN_ROLE" - }, - "id": 1326, - "name": "Identifier", - "src": "3908:18:4" - } - ], - "id": 1327, - "name": "FunctionCall", - "src": "3880:47:4" - } - ], - "id": 1328, - "name": "ExpressionStatement", - "src": "3880:47:4" - }, - { - "attributes": { - "assignments": [1330] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "initialRelayerCount", - "overrides": null, - "scope": 1355, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint", - "type": "uint256" - }, - "id": 1329, - "name": "ElementaryTypeName", - "src": "3938:4:4" - } - ], - "id": 1330, - "name": "VariableDeclaration", - "src": "3938:24:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "length", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1293, - "type": "address[] memory", - "value": "initialRelayers" - }, - "id": 1331, - "name": "Identifier", - "src": "3965:15:4" - } - ], - "id": 1332, - "name": "MemberAccess", - "src": "3965:22:4" - } - ], - "id": 1333, - "name": "VariableDeclarationStatement", - "src": "3938:49:4" - }, - { - "children": [ - { - "attributes": { - "assignments": [1335], - "initialValue": null - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "i", - "overrides": null, - "scope": 1354, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint", - "type": "uint256" - }, - "id": 1334, - "name": "ElementaryTypeName", - "src": "4002:4:4" - } - ], - "id": 1335, - "name": "VariableDeclaration", - "src": "4002:6:4" - } - ], - "id": 1336, - "name": "VariableDeclarationStatement", - "src": "4002:6:4" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "<", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1335, - "type": "uint256", - "value": "i" - }, - "id": 1337, - "name": "Identifier", - "src": "4010:1:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1330, - "type": "uint256", - "value": "initialRelayerCount" - }, - "id": 1338, - "name": "Identifier", - "src": "4014:19:4" - } - ], - "id": 1339, - "name": "BinaryOperation", - "src": "4010:23:4" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "++", - "prefix": false, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1335, - "type": "uint256", - "value": "i" - }, - "id": 1340, - "name": "Identifier", - "src": "4035:1:4" - } - ], - "id": 1341, - "name": "UnaryOperation", - "src": "4035:3:4" - } - ], - "id": 1342, - "name": "ExpressionStatement", - "src": "4035:3:4" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 146, - "type": "function (bytes32,address)", - "value": "grantRole" - }, - "id": 1343, - "name": "Identifier", - "src": "4054:9:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1221, - "type": "bytes32", - "value": "RELAYER_ROLE" - }, - "id": 1344, - "name": "Identifier", - "src": "4064:12:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1293, - "type": "address[] memory", - "value": "initialRelayers" - }, - "id": 1345, - "name": "Identifier", - "src": "4078:15:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1335, - "type": "uint256", - "value": "i" - }, - "id": 1346, - "name": "Identifier", - "src": "4094:1:4" - } - ], - "id": 1347, - "name": "IndexAccess", - "src": "4078:18:4" - } - ], - "id": 1348, - "name": "FunctionCall", - "src": "4054:43:4" - } - ], - "id": 1349, - "name": "ExpressionStatement", - "src": "4054:43:4" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "++", - "prefix": false, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1116, - "type": "uint256", - "value": "_totalRelayers" - }, - "id": 1350, - "name": "Identifier", - "src": "4111:14:4" - } - ], - "id": 1351, - "name": "UnaryOperation", - "src": "4111:16:4" - } - ], - "id": 1352, - "name": "ExpressionStatement", - "src": "4111:16:4" - } - ], - "id": 1353, - "name": "Block", - "src": "4040:98:4" - } - ], - "id": 1354, - "name": "ForStatement", - "src": "3997:141:4" - } - ], - "id": 1355, - "name": "Block", - "src": "3690:454:4" + "hexValue": "30", + "id": 643, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13018:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" } - ], - "id": 1356, - "name": "FunctionDefinition", - "src": "3562:582:4" - }, - { - "attributes": { - "functionSelector": "541d5548", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [null], - "name": "isRelayer", - "overrides": null, - "scope": 2244, - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - "children": [ - { - "attributes": { - "text": "@notice Returns true if {relayer} has the relayer role.\n@param relayer Address to check." - }, - "id": 1357, - "name": "StructuredDocumentation", - "src": "4150:116:4" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "relayer", - "overrides": null, - "scope": 1370, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 1358, - "name": "ElementaryTypeName", - "src": "4290:7:4" - } - ], - "id": 1359, - "name": "VariableDeclaration", - "src": "4290:15:4" - } - ], - "id": 1360, - "name": "ParameterList", - "src": "4289:17:4" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "", - "overrides": null, - "scope": 1370, - "stateVariable": false, - "storageLocation": "default", - "type": "bool", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bool", - "type": "bool" - }, - "id": 1361, - "name": "ElementaryTypeName", - "src": "4330:4:4" - } - ], - "id": 1362, - "name": "VariableDeclaration", - "src": "4330:4:4" - } - ], - "id": 1363, - "name": "ParameterList", - "src": "4329:6:4" + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 642, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13010:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" }, - { - "children": [ - { - "attributes": { - "functionReturnParameters": 1363 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 71, - "type": "function (bytes32,address) view returns (bool)", - "value": "hasRole" - }, - "id": 1364, - "name": "Identifier", - "src": "4353:7:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1221, - "type": "bytes32", - "value": "RELAYER_ROLE" - }, - "id": 1365, - "name": "Identifier", - "src": "4361:12:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1359, - "type": "address", - "value": "relayer" - }, - "id": 1366, - "name": "Identifier", - "src": "4375:7:4" - } - ], - "id": 1367, - "name": "FunctionCall", - "src": "4353:30:4" - } - ], - "id": 1368, - "name": "Return", - "src": "4346:37:4" - } - ], - "id": 1369, - "name": "Block", - "src": "4336:54:4" + "typeName": { + "id": 641, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13010:7:0", + "typeDescriptions": {} } - ], - "id": 1370, - "name": "FunctionDefinition", - "src": "4271:119:4" + }, + "id": 644, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13010:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "12999:21:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "7265736f757263654944206e6f74206d617070656420746f2068616e646c6572", + "id": 646, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13022:34:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_542d0c0b50539d1853c947fb8449b05e8626e9928b1fbf8fb55da8a4976aae52", + "typeString": "literal_string \"resourceID not mapped to handler\"" + }, + "value": "resourceID not mapped to handler" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_542d0c0b50539d1853c947fb8449b05e8626e9928b1fbf8fb55da8a4976aae52", + "typeString": "literal_string \"resourceID not mapped to handler\"" + } + ], + "id": 639, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "12991:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } }, + "id": 647, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12991:66:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 648, + "nodeType": "ExpressionStatement", + "src": "12991:66:0" + }, + { + "assignments": [ + 650 + ], + "declarations": [ { - "attributes": { - "functionSelector": "5e1fab0f", - "implemented": true, - "isConstructor": false, - "kind": "function", - "name": "renounceAdmin", - "overrides": null, - "scope": 2244, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" + "constant": false, + "id": 650, + "mutability": "mutable", + "name": "depositNonce", + "nameLocation": "13077:12:0", + "nodeType": "VariableDeclaration", + "scope": 688, + "src": "13070:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 649, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "13070:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + } + ], + "id": 655, + "initialValue": { + "id": 654, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": true, + "src": "13092:36:0", + "subExpression": { + "baseExpression": { + "id": 651, + "name": "_depositCounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 51, + "src": "13094:14:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint8_$_t_uint64_$", + "typeString": "mapping(uint8 => uint64)" + } + }, + "id": 653, + "indexExpression": { + "id": 652, + "name": "destinationChainID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 616, + "src": "13109:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "13094:34:0", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13070:58:0" + }, + { + "expression": { + "id": 662, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "baseExpression": { + "id": 656, + "name": "_depositRecords", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 61, + "src": "13139:15:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_uint8_$_t_bytes_storage_$_$", + "typeString": "mapping(uint64 => mapping(uint8 => bytes storage ref))" + } }, - "children": [ - { - "attributes": { - "text": "@notice Removes admin role from {msg.sender} and grants it to {newAdmin}.\n@notice Only callable by an address that currently has the admin role.\n@param newAdmin Address that admin role will be granted to." - }, - "id": 1371, - "name": "StructuredDocumentation", - "src": "4396:240:4" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "newAdmin", - "overrides": null, - "scope": 1390, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 1372, - "name": "ElementaryTypeName", - "src": "4664:7:4" - } - ], - "id": 1373, - "name": "VariableDeclaration", - "src": "4664:16:4" - } - ], - "id": 1374, - "name": "ParameterList", - "src": "4663:18:4" - }, - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 1377, - "name": "ParameterList", - "src": "4701:0:4" - }, - { - "attributes": { - "arguments": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1228, - "type": "modifier ()", - "value": "onlyAdmin" - }, - "id": 1375, - "name": "Identifier", - "src": "4691:9:4" - } - ], - "id": 1376, - "name": "ModifierInvocation", - "src": "4691:9:4" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 146, - "type": "function (bytes32,address)", - "value": "grantRole" - }, - "id": 1378, - "name": "Identifier", - "src": "4711:9:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 25, - "type": "bytes32", - "value": "DEFAULT_ADMIN_ROLE" - }, - "id": 1379, - "name": "Identifier", - "src": "4721:18:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1373, - "type": "address", - "value": "newAdmin" - }, - "id": 1380, - "name": "Identifier", - "src": "4741:8:4" - } - ], - "id": 1381, - "name": "FunctionCall", - "src": "4711:39:4" - } - ], - "id": 1382, - "name": "ExpressionStatement", - "src": "4711:39:4" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 194, - "type": "function (bytes32,address)", - "value": "renounceRole" - }, - "id": 1383, - "name": "Identifier", - "src": "4760:12:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 25, - "type": "bytes32", - "value": "DEFAULT_ADMIN_ROLE" - }, - "id": 1384, - "name": "Identifier", - "src": "4773:18:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "referencedDeclaration": null, - "type": "address payable" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": -15, - "type": "msg", - "value": "msg" - }, - "id": 1385, - "name": "Identifier", - "src": "4793:3:4" - } - ], - "id": 1386, - "name": "MemberAccess", - "src": "4793:10:4" - } - ], - "id": 1387, - "name": "FunctionCall", - "src": "4760:44:4" - } - ], - "id": 1388, - "name": "ExpressionStatement", - "src": "4760:44:4" - } - ], - "id": 1389, - "name": "Block", - "src": "4701:110:4" - } - ], - "id": 1390, - "name": "FunctionDefinition", - "src": "4641:170:4" + "id": 659, + "indexExpression": { + "id": 657, + "name": "depositNonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 650, + "src": "13155:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "13139:29:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint8_$_t_bytes_storage_$", + "typeString": "mapping(uint8 => bytes storage ref)" + } + }, + "id": 660, + "indexExpression": { + "id": 658, + "name": "destinationChainID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 616, + "src": "13169:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "13139:49:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage", + "typeString": "bytes storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 661, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 620, + "src": "13191:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } }, + "src": "13139:56:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage", + "typeString": "bytes storage ref" + } + }, + "id": 663, + "nodeType": "ExpressionStatement", + "src": "13139:56:0" + }, + { + "assignments": [ + 666 + ], + "declarations": [ { - "attributes": { - "functionSelector": "80ae1c28", - "implemented": true, - "isConstructor": false, - "kind": "function", - "name": "adminPauseTransfers", - "overrides": null, - "scope": 2244, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" + "constant": false, + "id": 666, + "mutability": "mutable", + "name": "depositHandler", + "nameLocation": "13224:14:0", + "nodeType": "VariableDeclaration", + "scope": 688, + "src": "13208:30:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDepositExecute_$1291", + "typeString": "contract IDepositExecute" + }, + "typeName": { + "id": 665, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 664, + "name": "IDepositExecute", + "nameLocations": [ + "13208:15:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1291, + "src": "13208:15:0" }, - "children": [ - { - "attributes": { - "text": "@notice Pauses deposits, proposal creation and voting, and deposit executions.\n@notice Only callable by an address that currently has the admin role." - }, - "id": 1391, - "name": "StructuredDocumentation", - "src": "4817:177:4" - }, - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 1392, - "name": "ParameterList", - "src": "5027:2:4" - }, - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 1395, - "name": "ParameterList", - "src": "5049:0:4" - }, - { - "attributes": { - "arguments": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1228, - "type": "modifier ()", - "value": "onlyAdmin" - }, - "id": 1393, - "name": "Identifier", - "src": "5039:9:4" - } - ], - "id": 1394, - "name": "ModifierInvocation", - "src": "5039:9:4" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "arguments": [null], - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [null], - "overloadedDeclarations": [null], - "referencedDeclaration": 2418, - "type": "function ()", - "value": "_pause" - }, - "id": 1396, - "name": "Identifier", - "src": "5059:6:4" - } - ], - "id": 1397, - "name": "FunctionCall", - "src": "5059:8:4" - } - ], - "id": 1398, - "name": "ExpressionStatement", - "src": "5059:8:4" - } - ], - "id": 1399, - "name": "Block", - "src": "5049:25:4" - } - ], - "id": 1400, - "name": "FunctionDefinition", - "src": "4999:75:4" + "referencedDeclaration": 1291, + "src": "13208:15:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDepositExecute_$1291", + "typeString": "contract IDepositExecute" + } + }, + "visibility": "internal" + } + ], + "id": 670, + "initialValue": { + "arguments": [ + { + "id": 668, + "name": "handler", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 634, + "src": "13257:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 667, + "name": "IDepositExecute", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1291, + "src": "13241:15:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IDepositExecute_$1291_$", + "typeString": "type(contract IDepositExecute)" + } }, - { - "attributes": { - "functionSelector": "ffaac0eb", - "implemented": true, - "isConstructor": false, - "kind": "function", - "name": "adminUnpauseTransfers", - "overrides": null, - "scope": 2244, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" + "id": 669, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13241:24:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDepositExecute_$1291", + "typeString": "contract IDepositExecute" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13208:57:0" + }, + { + "expression": { + "arguments": [ + { + "id": 674, + "name": "resourceID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 618, + "src": "13299:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 675, + "name": "destinationChainID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 616, + "src": "13311:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "id": 676, + "name": "depositNonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 650, + "src": "13331:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + { + "expression": { + "id": 677, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "13345:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 678, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13349:6:0", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "13345:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 679, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 620, + "src": "13357:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "expression": { + "id": 671, + "name": "depositHandler", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 666, + "src": "13276:14:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDepositExecute_$1291", + "typeString": "contract IDepositExecute" + } + }, + "id": 673, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13291:7:0", + "memberName": "deposit", + "nodeType": "MemberAccess", + "referencedDeclaration": 1282, + "src": "13276:22:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_uint8_$_t_uint64_$_t_address_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (bytes32,uint8,uint64,address,bytes memory) external" + } + }, + "id": 680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13276:86:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 681, + "nodeType": "ExpressionStatement", + "src": "13276:86:0" + }, + { + "eventCall": { + "arguments": [ + { + "id": 683, + "name": "destinationChainID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 616, + "src": "13388:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "id": 684, + "name": "resourceID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 618, + "src": "13408:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 685, + "name": "depositNonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 650, + "src": "13420:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" }, - "children": [ - { - "attributes": { - "text": "@notice Unpauses deposits, proposal creation and voting, and deposit executions.\n@notice Only callable by an address that currently has the admin role." - }, - "id": 1401, - "name": "StructuredDocumentation", - "src": "5080:179:4" - }, - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 1402, - "name": "ParameterList", - "src": "5294:2:4" - }, - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 1405, - "name": "ParameterList", - "src": "5316:0:4" - }, - { - "attributes": { - "arguments": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1228, - "type": "modifier ()", - "value": "onlyAdmin" - }, - "id": 1403, - "name": "Identifier", - "src": "5306:9:4" - } - ], - "id": 1404, - "name": "ModifierInvocation", - "src": "5306:9:4" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "arguments": [null], - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [null], - "overloadedDeclarations": [null], - "referencedDeclaration": 2434, - "type": "function ()", - "value": "_unpause" - }, - "id": 1406, - "name": "Identifier", - "src": "5326:8:4" - } - ], - "id": 1407, - "name": "FunctionCall", - "src": "5326:10:4" - } - ], - "id": 1408, - "name": "ExpressionStatement", - "src": "5326:10:4" - } - ], - "id": 1409, - "name": "Block", - "src": "5316:27:4" - } - ], - "id": 1410, - "name": "FunctionDefinition", - "src": "5264:79:4" + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "id": 682, + "name": "Deposit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 88, + "src": "13380:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_bytes32_$_t_uint64_$returns$__$", + "typeString": "function (uint8,bytes32,uint64)" + } }, + "id": 686, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13380:53:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 687, + "nodeType": "EmitStatement", + "src": "13375:58:0" + } + ] + }, + "documentation": { + "id": 614, + "nodeType": "StructuredDocumentation", + "src": "12301:425:0", + "text": "@notice Initiates a transfer using a specified handler contract.\n@notice Only callable when Bridge is not paused.\n@param destinationChainID ID of chain deposit will be bridged to.\n@param resourceID ResourceID used to find address of handler to be used for deposit.\n@param data Additional data to be passed to specified handler.\n@notice Emits {Deposit} event." + }, + "functionSelector": "05e2ca17", + "id": 689, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 623, + "kind": "modifierInvocation", + "modifierName": { + "id": 622, + "name": "whenNotPaused", + "nameLocations": [ + "12833:13:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3454, + "src": "12833:13:0" + }, + "nodeType": "ModifierInvocation", + "src": "12833:13:0" + } + ], + "name": "deposit", + "nameLocation": "12741:7:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 621, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 616, + "mutability": "mutable", + "name": "destinationChainID", + "nameLocation": "12755:18:0", + "nodeType": "VariableDeclaration", + "scope": 689, + "src": "12749:24:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 615, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "12749:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 618, + "mutability": "mutable", + "name": "resourceID", + "nameLocation": "12783:10:0", + "nodeType": "VariableDeclaration", + "scope": 689, + "src": "12775:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 617, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "12775:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 620, + "mutability": "mutable", + "name": "data", + "nameLocation": "12810:4:0", + "nodeType": "VariableDeclaration", + "scope": 689, + "src": "12795:19:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 619, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "12795:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "12748:67:0" + }, + "returnParameters": { + "id": 624, + "nodeType": "ParameterList", + "parameters": [], + "src": "12847:0:0" + }, + "scope": 1209, + "src": "12732:709:0", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 951, + "nodeType": "Block", + "src": "14196:3225:0", + "statements": [ + { + "assignments": [ + 706 + ], + "declarations": [ { - "attributes": { - "functionSelector": "4e056005", - "implemented": true, - "isConstructor": false, - "kind": "function", - "name": "adminChangeRelayerThreshold", - "overrides": null, - "scope": 2244, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - "children": [ - { - "attributes": { - "text": "@notice Modifies the number of votes required for a proposal to be considered passed.\n@notice Only callable by an address that currently has the admin role.\n@param newThreshold Value {_relayerThreshold} will be changed to.\n@notice Emits {RelayerThresholdChanged} event." - }, - "id": 1411, - "name": "StructuredDocumentation", - "src": "5349:313:4" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "newThreshold", - "overrides": null, - "scope": 1427, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint", - "type": "uint256" - }, - "id": 1412, - "name": "ElementaryTypeName", - "src": "5704:4:4" - } - ], - "id": 1413, - "name": "VariableDeclaration", - "src": "5704:17:4" - } - ], - "id": 1414, - "name": "ParameterList", - "src": "5703:19:4" - }, - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 1417, - "name": "ParameterList", - "src": "5742:0:4" - }, - { - "attributes": { - "arguments": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1228, - "type": "modifier ()", - "value": "onlyAdmin" - }, - "id": 1415, - "name": "Identifier", - "src": "5732:9:4" - } - ], - "id": 1416, - "name": "ModifierInvocation", - "src": "5732:9:4" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1114, - "type": "uint256", - "value": "_relayerThreshold" - }, - "id": 1418, - "name": "Identifier", - "src": "5752:17:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1413, - "type": "uint256", - "value": "newThreshold" - }, - "id": 1419, - "name": "Identifier", - "src": "5772:12:4" - } - ], - "id": 1420, - "name": "Assignment", - "src": "5752:32:4" - } - ], - "id": 1421, - "name": "ExpressionStatement", - "src": "5752:32:4" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 1178, - "type": "function (uint256)", - "value": "RelayerThresholdChanged" - }, - "id": 1422, - "name": "Identifier", - "src": "5799:23:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1413, - "type": "uint256", - "value": "newThreshold" - }, - "id": 1423, - "name": "Identifier", - "src": "5823:12:4" - } - ], - "id": 1424, - "name": "FunctionCall", - "src": "5799:37:4" - } - ], - "id": 1425, - "name": "EmitStatement", - "src": "5794:42:4" - } - ], - "id": 1426, - "name": "Block", - "src": "5742:101:4" - } - ], - "id": 1427, - "name": "FunctionDefinition", - "src": "5667:176:4" + "constant": false, + "id": 706, + "mutability": "mutable", + "name": "handler", + "nameLocation": "14215:7:0", + "nodeType": "VariableDeclaration", + "scope": 951, + "src": "14207:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 705, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14207:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 710, + "initialValue": { + "baseExpression": { + "id": 707, + "name": "_resourceIDToHandlerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 55, + "src": "14225:27:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + } + }, + "id": 709, + "indexExpression": { + "id": 708, + "name": "resourceID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 696, + "src": "14253:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14225:39:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14207:57:0" + }, + { + "assignments": [ + 712 + ], + "declarations": [ { - "attributes": { - "functionSelector": "cdb0f73a", - "implemented": true, - "isConstructor": false, - "kind": "function", - "name": "adminAddRelayer", - "overrides": null, - "scope": 2244, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - "children": [ - { - "attributes": { - "text": "@notice Grants {relayerAddress} the relayer role and increases {_totalRelayer} count.\n@notice Only callable by an address that currently has the admin role.\n@param relayerAddress Address of relayer to be added.\n@notice Emits {RelayerAdded} event." - }, - "id": 1428, - "name": "StructuredDocumentation", - "src": "5849:290:4" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "relayerAddress", - "overrides": null, - "scope": 1457, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 1429, - "name": "ElementaryTypeName", - "src": "6169:7:4" - } - ], - "id": 1430, - "name": "VariableDeclaration", - "src": "6169:22:4" - } - ], - "id": 1431, - "name": "ParameterList", - "src": "6168:24:4" - }, - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 1434, - "name": "ParameterList", - "src": "6212:0:4" - }, - { - "attributes": { - "arguments": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1228, - "type": "modifier ()", - "value": "onlyAdmin" - }, - "id": 1432, - "name": "Identifier", - "src": "6202:9:4" - } - ], - "id": 1433, - "name": "ModifierInvocation", - "src": "6202:9:4" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_8513154392cb347d26f1716c23a55342a9b762f4522b7062343455b658c92c85", - "typeString": "literal_string \"addr already has relayer role!\"" - } - ], - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 1435, - "name": "Identifier", - "src": "6222:7:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!", - "prefix": true, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 71, - "type": "function (bytes32,address) view returns (bool)", - "value": "hasRole" - }, - "id": 1436, - "name": "Identifier", - "src": "6231:7:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1221, - "type": "bytes32", - "value": "RELAYER_ROLE" - }, - "id": 1437, - "name": "Identifier", - "src": "6239:12:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1430, - "type": "address", - "value": "relayerAddress" - }, - "id": 1438, - "name": "Identifier", - "src": "6253:14:4" - } - ], - "id": 1439, - "name": "FunctionCall", - "src": "6231:37:4" - } - ], - "id": 1440, - "name": "UnaryOperation", - "src": "6230:38:4" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "6164647220616c7265616479206861732072656c6179657220726f6c6521", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"addr already has relayer role!\"", - "value": "addr already has relayer role!" - }, - "id": 1441, - "name": "Literal", - "src": "6270:32:4" - } - ], - "id": 1442, - "name": "FunctionCall", - "src": "6222:81:4" - } - ], - "id": 1443, - "name": "ExpressionStatement", - "src": "6222:81:4" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 146, - "type": "function (bytes32,address)", - "value": "grantRole" - }, - "id": 1444, - "name": "Identifier", - "src": "6313:9:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1221, - "type": "bytes32", - "value": "RELAYER_ROLE" - }, - "id": 1445, - "name": "Identifier", - "src": "6323:12:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1430, - "type": "address", - "value": "relayerAddress" - }, - "id": 1446, - "name": "Identifier", - "src": "6337:14:4" - } - ], - "id": 1447, - "name": "FunctionCall", - "src": "6313:39:4" - } - ], - "id": 1448, - "name": "ExpressionStatement", - "src": "6313:39:4" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 1182, - "type": "function (address)", - "value": "RelayerAdded" - }, - "id": 1449, - "name": "Identifier", - "src": "6367:12:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1430, - "type": "address", - "value": "relayerAddress" - }, - "id": 1450, - "name": "Identifier", - "src": "6380:14:4" - } - ], - "id": 1451, - "name": "FunctionCall", - "src": "6367:28:4" - } - ], - "id": 1452, - "name": "EmitStatement", - "src": "6362:33:4" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "++", - "prefix": false, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1116, - "type": "uint256", - "value": "_totalRelayers" - }, - "id": 1453, - "name": "Identifier", - "src": "6405:14:4" - } - ], - "id": 1454, - "name": "UnaryOperation", - "src": "6405:16:4" - } - ], - "id": 1455, - "name": "ExpressionStatement", - "src": "6405:16:4" - } - ], - "id": 1456, - "name": "Block", - "src": "6212:216:4" + "constant": false, + "id": 712, + "mutability": "mutable", + "name": "dataHash", + "nameLocation": "14283:8:0", + "nodeType": "VariableDeclaration", + "scope": 951, + "src": "14275:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 711, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "14275:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 720, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 716, + "name": "handler", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 706, + "src": "14321:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 717, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 698, + "src": "14330:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" } + } ], - "id": 1457, - "name": "FunctionDefinition", - "src": "6144:284:4" - }, - { - "attributes": { - "functionSelector": "9d82dd63", - "implemented": true, - "isConstructor": false, - "kind": "function", - "name": "adminRemoveRelayer", - "overrides": null, - "scope": 2244, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - "children": [ - { - "attributes": { - "text": "@notice Removes relayer role for {relayerAddress} and decreases {_totalRelayer} count.\n@notice Only callable by an address that currently has the admin role.\n@param relayerAddress Address of relayer to be removed.\n@notice Emits {RelayerRemoved} event." - }, - "id": 1458, - "name": "StructuredDocumentation", - "src": "6434:295:4" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "relayerAddress", - "overrides": null, - "scope": 1486, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 1459, - "name": "ElementaryTypeName", - "src": "6762:7:4" - } - ], - "id": 1460, - "name": "VariableDeclaration", - "src": "6762:22:4" - } - ], - "id": 1461, - "name": "ParameterList", - "src": "6761:24:4" - }, - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 1464, - "name": "ParameterList", - "src": "6805:0:4" - }, + "expression": { + "argumentTypes": [ { - "attributes": { - "arguments": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1228, - "type": "modifier ()", - "value": "onlyAdmin" - }, - "id": 1462, - "name": "Identifier", - "src": "6795:9:4" - } - ], - "id": 1463, - "name": "ModifierInvocation", - "src": "6795:9:4" + "typeIdentifier": "t_address", + "typeString": "address" }, { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_1399520dec2ce6448b61ea4bb9d4980c6bfff25cd5836058c07edd3d56f94864", - "typeString": "literal_string \"addr doesn't have relayer role!\"" - } - ], - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 1465, - "name": "Identifier", - "src": "6815:7:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 71, - "type": "function (bytes32,address) view returns (bool)", - "value": "hasRole" - }, - "id": 1466, - "name": "Identifier", - "src": "6823:7:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1221, - "type": "bytes32", - "value": "RELAYER_ROLE" - }, - "id": 1467, - "name": "Identifier", - "src": "6831:12:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1460, - "type": "address", - "value": "relayerAddress" - }, - "id": 1468, - "name": "Identifier", - "src": "6845:14:4" - } - ], - "id": 1469, - "name": "FunctionCall", - "src": "6823:37:4" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "6164647220646f65736e277420686176652072656c6179657220726f6c6521", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"addr doesn't have relayer role!\"", - "value": "addr doesn't have relayer role!" - }, - "id": 1470, - "name": "Literal", - "src": "6862:33:4" - } - ], - "id": 1471, - "name": "FunctionCall", - "src": "6815:81:4" - } - ], - "id": 1472, - "name": "ExpressionStatement", - "src": "6815:81:4" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 172, - "type": "function (bytes32,address)", - "value": "revokeRole" - }, - "id": 1473, - "name": "Identifier", - "src": "6906:10:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1221, - "type": "bytes32", - "value": "RELAYER_ROLE" - }, - "id": 1474, - "name": "Identifier", - "src": "6917:12:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1460, - "type": "address", - "value": "relayerAddress" - }, - "id": 1475, - "name": "Identifier", - "src": "6931:14:4" - } - ], - "id": 1476, - "name": "FunctionCall", - "src": "6906:40:4" - } - ], - "id": 1477, - "name": "ExpressionStatement", - "src": "6906:40:4" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 1186, - "type": "function (address)", - "value": "RelayerRemoved" - }, - "id": 1478, - "name": "Identifier", - "src": "6961:14:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1460, - "type": "address", - "value": "relayerAddress" - }, - "id": 1479, - "name": "Identifier", - "src": "6976:14:4" - } - ], - "id": 1480, - "name": "FunctionCall", - "src": "6961:30:4" - } - ], - "id": 1481, - "name": "EmitStatement", - "src": "6956:35:4" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "--", - "prefix": false, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1116, - "type": "uint256", - "value": "_totalRelayers" - }, - "id": 1482, - "name": "Identifier", - "src": "7001:14:4" - } - ], - "id": 1483, - "name": "UnaryOperation", - "src": "7001:16:4" - } - ], - "id": 1484, - "name": "ExpressionStatement", - "src": "7001:16:4" - } - ], - "id": 1485, - "name": "Block", - "src": "6805:219:4" + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" } - ], - "id": 1486, - "name": "FunctionDefinition", - "src": "6734:290:4" + ], + "expression": { + "id": 714, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967295, + "src": "14304:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 715, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "14308:12:0", + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "14304:16:0", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 718, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14304:31:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 713, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967288, + "src": "14294:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } }, + "id": 719, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14294:42:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14275:61:0" + }, + { + "assignments": [ + 722 + ], + "declarations": [ { - "attributes": { - "functionSelector": "cb10f215", - "implemented": true, - "isConstructor": false, - "kind": "function", - "name": "adminSetResource", - "overrides": null, - "scope": 2244, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - "children": [ - { - "attributes": { - "text": "@notice Sets a new resource for handler contracts that use the IERCHandler interface,\nand maps the {handlerAddress} to {resourceID} in {_resourceIDToHandlerAddress}.\n@notice Only callable by an address that currently has the admin role.\n@param handlerAddress Address of handler resource will be set for.\n@param resourceID ResourceID to be used when making deposits.\n@param tokenAddress Address of contract to be called when a deposit is made and a deposited is executed." - }, - "id": 1487, - "name": "StructuredDocumentation", - "src": "7030:530:4" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "handlerAddress", - "overrides": null, - "scope": 1518, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 1488, - "name": "ElementaryTypeName", - "src": "7591:7:4" - } - ], - "id": 1489, - "name": "VariableDeclaration", - "src": "7591:22:4" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "resourceID", - "overrides": null, - "scope": 1518, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1490, - "name": "ElementaryTypeName", - "src": "7615:7:4" - } - ], - "id": 1491, - "name": "VariableDeclaration", - "src": "7615:18:4" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "tokenAddress", - "overrides": null, - "scope": 1518, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 1492, - "name": "ElementaryTypeName", - "src": "7635:7:4" - } - ], - "id": 1493, - "name": "VariableDeclaration", - "src": "7635:20:4" - } - ], - "id": 1494, - "name": "ParameterList", - "src": "7590:66:4" - }, - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 1497, - "name": "ParameterList", - "src": "7676:0:4" - }, - { - "attributes": { - "arguments": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1228, - "type": "modifier ()", - "value": "onlyAdmin" - }, - "id": 1495, - "name": "Identifier", - "src": "7666:9:4" - } - ], - "id": 1496, - "name": "ModifierInvocation", - "src": "7666:9:4" + "constant": false, + "id": 722, + "mutability": "mutable", + "name": "nonceAndID", + "nameLocation": "14354:10:0", + "nodeType": "VariableDeclaration", + "scope": 951, + "src": "14347:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + }, + "typeName": { + "id": 721, + "name": "uint72", + "nodeType": "ElementaryTypeName", + "src": "14347:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + } + }, + "visibility": "internal" + } + ], + "id": 735, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + }, + "id": 734, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + }, + "id": 728, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 725, + "name": "depositNonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 694, + "src": "14375:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "id": 724, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14368:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint72_$", + "typeString": "type(uint72)" + }, + "typeName": { + "id": 723, + "name": "uint72", + "nodeType": "ElementaryTypeName", + "src": "14368:6:0", + "typeDescriptions": {} + } }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1154, - "type": "mapping(bytes32 => address)", - "value": "_resourceIDToHandlerAddress" - }, - "id": 1498, - "name": "Identifier", - "src": "7686:27:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1491, - "type": "bytes32", - "value": "resourceID" - }, - "id": 1499, - "name": "Identifier", - "src": "7714:10:4" - } - ], - "id": 1500, - "name": "IndexAccess", - "src": "7686:39:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1489, - "type": "address", - "value": "handlerAddress" - }, - "id": 1501, - "name": "Identifier", - "src": "7728:14:4" - } - ], - "id": 1502, - "name": "Assignment", - "src": "7686:56:4" - } - ], - "id": 1503, - "name": "ExpressionStatement", - "src": "7686:56:4" - }, - { - "attributes": { - "assignments": [1505] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "handler", - "overrides": null, - "scope": 1517, - "stateVariable": false, - "storageLocation": "default", - "type": "contract IERCHandler", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "IERCHandler", - "referencedDeclaration": 2318, - "type": "contract IERCHandler" - }, - "id": 1504, - "name": "UserDefinedTypeName", - "src": "7752:11:4" - } - ], - "id": 1505, - "name": "VariableDeclaration", - "src": "7752:19:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "contract IERCHandler", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 2318, - "type": "type(contract IERCHandler)", - "value": "IERCHandler" - }, - "id": 1506, - "name": "Identifier", - "src": "7774:11:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1489, - "type": "address", - "value": "handlerAddress" - }, - "id": 1507, - "name": "Identifier", - "src": "7786:14:4" - } - ], - "id": 1508, - "name": "FunctionCall", - "src": "7774:27:4" - } - ], - "id": 1509, - "name": "VariableDeclarationStatement", - "src": "7752:49:4" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "setResource", - "referencedDeclaration": 2291, - "type": "function (bytes32,address) external" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1505, - "type": "contract IERCHandler", - "value": "handler" - }, - "id": 1510, - "name": "Identifier", - "src": "7811:7:4" - } - ], - "id": 1512, - "name": "MemberAccess", - "src": "7811:19:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1491, - "type": "bytes32", - "value": "resourceID" - }, - "id": 1513, - "name": "Identifier", - "src": "7831:10:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1493, - "type": "address", - "value": "tokenAddress" - }, - "id": 1514, - "name": "Identifier", - "src": "7843:12:4" - } - ], - "id": 1515, - "name": "FunctionCall", - "src": "7811:45:4" - } - ], - "id": 1516, - "name": "ExpressionStatement", - "src": "7811:45:4" - } - ], - "id": 1517, - "name": "Block", - "src": "7676:187:4" + "id": 726, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14368:20:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "38", + "id": 727, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14392:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "src": "14368:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + } + } + ], + "id": 729, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "14367:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + } + }, + "nodeType": "BinaryOperation", + "operator": "|", + "rightExpression": { + "arguments": [ + { + "id": 732, + "name": "chainID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 692, + "src": "14404:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } ], - "id": 1518, - "name": "FunctionDefinition", - "src": "7565:298:4" + "id": 731, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14397:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint72_$", + "typeString": "type(uint72)" + }, + "typeName": { + "id": 730, + "name": "uint72", + "nodeType": "ElementaryTypeName", + "src": "14397:6:0", + "typeDescriptions": {} + } + }, + "id": 733, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14397:15:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + } }, + "src": "14367:45:0", + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14347:65:0" + }, + { + "assignments": [ + 738 + ], + "declarations": [ { - "attributes": { - "functionSelector": "e8437ee7", - "implemented": true, - "isConstructor": false, - "kind": "function", - "name": "adminSetGenericResource", - "overrides": null, - "scope": 2244, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" + "constant": false, + "id": 738, + "mutability": "mutable", + "name": "proposal", + "nameLocation": "14440:8:0", + "nodeType": "VariableDeclaration", + "scope": 951, + "src": "14423:25:0", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$47_storage_ptr", + "typeString": "struct Bridge.Proposal" + }, + "typeName": { + "id": 737, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 736, + "name": "Proposal", + "nameLocations": [ + "14423:8:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 47, + "src": "14423:8:0" + }, + "referencedDeclaration": 47, + "src": "14423:8:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$47_storage_ptr", + "typeString": "struct Bridge.Proposal" + } + }, + "visibility": "internal" + } + ], + "id": 744, + "initialValue": { + "baseExpression": { + "baseExpression": { + "id": 739, + "name": "_proposals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 68, + "src": "14451:10:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint72_$_t_mapping$_t_bytes32_$_t_struct$_Proposal_$47_storage_$_$", + "typeString": "mapping(uint72 => mapping(bytes32 => struct Bridge.Proposal storage ref))" + } + }, + "id": 741, + "indexExpression": { + "id": 740, + "name": "nonceAndID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 722, + "src": "14462:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14451:22:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$47_storage_$", + "typeString": "mapping(bytes32 => struct Bridge.Proposal storage ref)" + } + }, + "id": 743, + "indexExpression": { + "id": 742, + "name": "dataHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 712, + "src": "14474:8:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14451:32:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$47_storage", + "typeString": "struct Bridge.Proposal storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14423:60:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 753, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 746, + "name": "_resourceIDToHandlerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 55, + "src": "14504:27:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + } + }, + "id": 748, + "indexExpression": { + "id": 747, + "name": "resourceID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 696, + "src": "14532:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14504:39:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, - "children": [ + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ { - "attributes": { - "text": "@notice Sets a new resource for handler contracts that use the IGenericHandler interface,\nand maps the {handlerAddress} to {resourceID} in {_resourceIDToHandlerAddress}.\n@notice Only callable by an address that currently has the admin role.\n@param handlerAddress Address of handler resource will be set for.\n@param resourceID ResourceID to be used when making deposits.\n@param contractAddress Address of contract to be called when a deposit is made and a deposited is executed." - }, - "id": 1519, - "name": "StructuredDocumentation", - "src": "7869:537:4" + "hexValue": "30", + "id": 751, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14555:1:0", + "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": 750, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14547:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" }, + "typeName": { + "id": 749, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14547:7:0", + "typeDescriptions": {} + } + }, + "id": 752, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14547:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "14504:53:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "6e6f2068616e646c657220666f72207265736f757263654944", + "id": 754, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14559:27:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e9d3c8def96ec5b61b3d5e8e38d358587f69ed955aa1f36ba2f95c28a40ffe20", + "typeString": "literal_string \"no handler for resourceID\"" + }, + "value": "no handler for resourceID" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e9d3c8def96ec5b61b3d5e8e38d358587f69ed955aa1f36ba2f95c28a40ffe20", + "typeString": "literal_string \"no handler for resourceID\"" + } + ], + "id": 745, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "14496:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 755, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14496:91:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 756, + "nodeType": "ExpressionStatement", + "src": "14496:91:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 764, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "handlerAddress", - "overrides": null, - "scope": 1556, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 1520, - "name": "ElementaryTypeName", - "src": "8453:7:4" - } - ], - "id": 1521, - "name": "VariableDeclaration", - "src": "8453:22:4" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "resourceID", - "overrides": null, - "scope": 1556, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1522, - "name": "ElementaryTypeName", - "src": "8485:7:4" - } - ], - "id": 1523, - "name": "VariableDeclaration", - "src": "8485:18:4" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "contractAddress", - "overrides": null, - "scope": 1556, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 1524, - "name": "ElementaryTypeName", - "src": "8513:7:4" - } - ], - "id": 1525, - "name": "VariableDeclaration", - "src": "8513:23:4" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "depositFunctionSig", - "overrides": null, - "scope": 1556, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes4", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes4", - "type": "bytes4" - }, - "id": 1526, - "name": "ElementaryTypeName", - "src": "8546:6:4" - } - ], - "id": 1527, - "name": "VariableDeclaration", - "src": "8546:25:4" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "executeFunctionSig", - "overrides": null, - "scope": 1556, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes4", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes4", - "type": "bytes4" - }, - "id": 1528, - "name": "ElementaryTypeName", - "src": "8581:6:4" - } - ], - "id": 1529, - "name": "VariableDeclaration", - "src": "8581:25:4" - } - ], - "id": 1530, - "name": "ParameterList", - "src": "8443:169:4" + "expression": { + "id": 760, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 738, + "src": "14611:8:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$47_storage_ptr", + "typeString": "struct Bridge.Proposal storage pointer" + } + }, + "id": 761, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14620:7:0", + "memberName": "_status", + "nodeType": "MemberAccess", + "referencedDeclaration": 44, + "src": "14611:16:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ProposalStatus_$31", + "typeString": "enum Bridge.ProposalStatus" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_enum$_ProposalStatus_$31", + "typeString": "enum Bridge.ProposalStatus" + } + ], + "id": 759, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14606:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" }, - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 1533, - "name": "ParameterList", - "src": "8632:0:4" + "typeName": { + "id": 758, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "14606:4:0", + "typeDescriptions": {} + } + }, + "id": 762, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14606:22:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "hexValue": "31", + "id": 763, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14632:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "14606:27:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "70726f706f73616c20616c7265616479207061737365642f65786563757465642f63616e63656c6c6564", + "id": 765, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14635:44:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c48a67927cb12b6986df316341a7e026082eb20c4db86a85c59231eb345d8194", + "typeString": "literal_string \"proposal already passed/executed/cancelled\"" + }, + "value": "proposal already passed/executed/cancelled" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c48a67927cb12b6986df316341a7e026082eb20c4db86a85c59231eb345d8194", + "typeString": "literal_string \"proposal already passed/executed/cancelled\"" + } + ], + "id": 757, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "14598:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 766, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14598:82:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 767, + "nodeType": "ExpressionStatement", + "src": "14598:82:0" + }, + { + "expression": { + "arguments": [ + { + "id": 777, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "14699:54:0", + "subExpression": { + "baseExpression": { + "baseExpression": { + "baseExpression": { + "id": 769, + "name": "_hasVotedOnProposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 76, + "src": "14700:19:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint72_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$_$", + "typeString": "mapping(uint72 => mapping(bytes32 => mapping(address => bool)))" + } + }, + "id": 771, + "indexExpression": { + "id": 770, + "name": "nonceAndID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 722, + "src": "14720:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14700:31:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(bytes32 => mapping(address => bool))" + } }, - { - "attributes": { - "arguments": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1228, - "type": "modifier ()", - "value": "onlyAdmin" - }, - "id": 1531, - "name": "Identifier", - "src": "8622:9:4" - } - ], - "id": 1532, - "name": "ModifierInvocation", - "src": "8622:9:4" + "id": 773, + "indexExpression": { + "id": 772, + "name": "dataHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 712, + "src": "14732:8:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1154, - "type": "mapping(bytes32 => address)", - "value": "_resourceIDToHandlerAddress" - }, - "id": 1534, - "name": "Identifier", - "src": "8642:27:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1523, - "type": "bytes32", - "value": "resourceID" - }, - "id": 1535, - "name": "Identifier", - "src": "8670:10:4" - } - ], - "id": 1536, - "name": "IndexAccess", - "src": "8642:39:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1521, - "type": "address", - "value": "handlerAddress" - }, - "id": 1537, - "name": "Identifier", - "src": "8684:14:4" - } - ], - "id": 1538, - "name": "Assignment", - "src": "8642:56:4" - } - ], - "id": 1539, - "name": "ExpressionStatement", - "src": "8642:56:4" - }, - { - "attributes": { - "assignments": [1541] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "handler", - "overrides": null, - "scope": 1555, - "stateVariable": false, - "storageLocation": "default", - "type": "contract IGenericHandler", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "IGenericHandler", - "referencedDeclaration": 2334, - "type": "contract IGenericHandler" - }, - "id": 1540, - "name": "UserDefinedTypeName", - "src": "8708:15:4" - } - ], - "id": 1541, - "name": "VariableDeclaration", - "src": "8708:23:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "contract IGenericHandler", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 2334, - "type": "type(contract IGenericHandler)", - "value": "IGenericHandler" - }, - "id": 1542, - "name": "Identifier", - "src": "8734:15:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1521, - "type": "address", - "value": "handlerAddress" - }, - "id": 1543, - "name": "Identifier", - "src": "8750:14:4" - } - ], - "id": 1544, - "name": "FunctionCall", - "src": "8734:31:4" - } - ], - "id": 1545, - "name": "VariableDeclarationStatement", - "src": "8708:57:4" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "setResource", - "referencedDeclaration": 2333, - "type": "function (bytes32,address,bytes4,bytes4) external" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1541, - "type": "contract IGenericHandler", - "value": "handler" - }, - "id": 1546, - "name": "Identifier", - "src": "8775:7:4" - } - ], - "id": 1548, - "name": "MemberAccess", - "src": "8775:19:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1523, - "type": "bytes32", - "value": "resourceID" - }, - "id": 1549, - "name": "Identifier", - "src": "8795:10:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1525, - "type": "address", - "value": "contractAddress" - }, - "id": 1550, - "name": "Identifier", - "src": "8807:15:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1527, - "type": "bytes4", - "value": "depositFunctionSig" - }, - "id": 1551, - "name": "Identifier", - "src": "8824:18:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1529, - "type": "bytes4", - "value": "executeFunctionSig" - }, - "id": 1552, - "name": "Identifier", - "src": "8844:18:4" - } - ], - "id": 1553, - "name": "FunctionCall", - "src": "8775:88:4" - } - ], - "id": 1554, - "name": "ExpressionStatement", - "src": "8775:88:4" - } - ], - "id": 1555, - "name": "Block", - "src": "8632:238:4" + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14700:41:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" } - ], - "id": 1556, - "name": "FunctionDefinition", - "src": "8411:459:4" + }, + "id": 776, + "indexExpression": { + "expression": { + "id": 774, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "14742:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 775, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14746:6:0", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "14742:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14700:53:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "72656c6179657220616c726561647920766f746564", + "id": 778, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14755:23:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0bc9c5100729666c219a147072032fe3fda273fedfa160b31a35f38bd9d0632b", + "typeString": "literal_string \"relayer already voted\"" + }, + "value": "relayer already voted" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0bc9c5100729666c219a147072032fe3fda273fedfa160b31a35f38bd9d0632b", + "typeString": "literal_string \"relayer already voted\"" + } + ], + "id": 768, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "14691:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } }, - { - "attributes": { - "functionSelector": "8c0c2631", - "implemented": true, - "isConstructor": false, - "kind": "function", - "name": "adminSetBurnable", - "overrides": null, - "scope": 2244, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" + "id": 779, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14691:88:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 780, + "nodeType": "ExpressionStatement", + "src": "14691:88:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 787, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "expression": { + "id": 783, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 738, + "src": "14801:8:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$47_storage_ptr", + "typeString": "struct Bridge.Proposal storage pointer" + } + }, + "id": 784, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14810:7:0", + "memberName": "_status", + "nodeType": "MemberAccess", + "referencedDeclaration": 44, + "src": "14801:16:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ProposalStatus_$31", + "typeString": "enum Bridge.ProposalStatus" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_enum$_ProposalStatus_$31", + "typeString": "enum Bridge.ProposalStatus" + } + ], + "id": 782, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14796:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" }, - "children": [ - { - "attributes": { - "text": "@notice Sets a resource as burnable for handler contracts that use the IERCHandler interface.\n@notice Only callable by an address that currently has the admin role.\n@param handlerAddress Address of handler resource will be set for.\n@param tokenAddress Address of contract to be called when a deposit is made and a deposited is executed." + "typeName": { + "id": 781, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "14796:4:0", + "typeDescriptions": {} + } + }, + "id": 785, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14796:22:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 786, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14822:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "14796:27:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 879, + "nodeType": "Block", + "src": "15379:1026:0", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 842, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - "id": 1557, - "name": "StructuredDocumentation", - "src": "8876:380:4" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "handlerAddress", - "overrides": null, - "scope": 1579, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 1558, - "name": "ElementaryTypeName", - "src": "9287:7:4" - } - ], - "id": 1559, - "name": "VariableDeclaration", - "src": "9287:22:4" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "tokenAddress", - "overrides": null, - "scope": 1579, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 1560, - "name": "ElementaryTypeName", - "src": "9311:7:4" - } - ], - "id": 1561, - "name": "VariableDeclaration", - "src": "9311:20:4" + "id": 839, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 835, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967292, + "src": "15399:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" } - ], - "id": 1562, - "name": "ParameterList", - "src": "9286:46:4" - }, - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 1565, - "name": "ParameterList", - "src": "9352:0:4" - }, - { - "attributes": { - "arguments": null + }, + "id": 836, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15405:6:0", + "memberName": "number", + "nodeType": "MemberAccess", + "src": "15399:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1228, - "type": "modifier ()", - "value": "onlyAdmin" - }, - "id": 1563, - "name": "Identifier", - "src": "9342:9:4" - } - ], - "id": 1564, - "name": "ModifierInvocation", - "src": "9342:9:4" - }, - { - "children": [ - { - "attributes": { - "assignments": [1567] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "handler", - "overrides": null, - "scope": 1578, - "stateVariable": false, - "storageLocation": "default", - "type": "contract IERCHandler", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "IERCHandler", - "referencedDeclaration": 2318, - "type": "contract IERCHandler" - }, - "id": 1566, - "name": "UserDefinedTypeName", - "src": "9362:11:4" - } - ], - "id": 1567, - "name": "VariableDeclaration", - "src": "9362:19:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "contract IERCHandler", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 2318, - "type": "type(contract IERCHandler)", - "value": "IERCHandler" - }, - "id": 1568, - "name": "Identifier", - "src": "9384:11:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1559, - "type": "address", - "value": "handlerAddress" - }, - "id": 1569, - "name": "Identifier", - "src": "9396:14:4" - } - ], - "id": 1570, - "name": "FunctionCall", - "src": "9384:27:4" - } - ], - "id": 1571, - "name": "VariableDeclarationStatement", - "src": "9362:49:4" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "setBurnable", - "referencedDeclaration": 2297, - "type": "function (address) external" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1567, - "type": "contract IERCHandler", - "value": "handler" - }, - "id": 1572, - "name": "Identifier", - "src": "9421:7:4" - } - ], - "id": 1574, - "name": "MemberAccess", - "src": "9421:19:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1561, - "type": "address", - "value": "tokenAddress" - }, - "id": 1575, - "name": "Identifier", - "src": "9441:12:4" - } - ], - "id": 1576, - "name": "FunctionCall", - "src": "9421:33:4" - } - ], - "id": 1577, - "name": "ExpressionStatement", - "src": "9421:33:4" + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "expression": { + "id": 837, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 738, + "src": "15414:8:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$47_storage_ptr", + "typeString": "struct Bridge.Proposal storage pointer" } - ], - "id": 1578, - "name": "Block", - "src": "9352:109:4" + }, + "id": 838, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15423:14:0", + "memberName": "_proposedBlock", + "nodeType": "MemberAccess", + "referencedDeclaration": 46, + "src": "15414:23:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "15399:38:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 840, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "15398:40:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ], - "id": 1579, - "name": "FunctionDefinition", - "src": "9261:200:4" - }, - { - "attributes": { - "functionSelector": "b56bcaf1", - "implemented": true, - "isConstructor": false, - "kind": "function", - "name": "adminSetDecimals", - "overrides": null, - "scope": 2244, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 841, + "name": "_expiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 22, + "src": "15441:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "15398:50:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } }, - "children": [ + "falseBody": { + "id": 877, + "nodeType": "Block", + "src": "15810:582:0", + "statements": [ { - "attributes": { - "text": "@notice Sets a resource as burnable for handler contracts that use the IERCHandler interface.\n@notice Only callable by an address that currently has the admin role.\n@param handlerAddress Address of handler resource will be set for.\n@param tokenAddress Address of contract to be called when a deposit is made and a deposited is executed." - }, - "id": 1580, - "name": "StructuredDocumentation", - "src": "9467:380:4" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "handlerAddress", - "overrides": null, - "scope": 1608, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 1581, - "name": "ElementaryTypeName", - "src": "9878:7:4" - } - ], - "id": 1582, - "name": "VariableDeclaration", - "src": "9878:22:4" + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 864, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 861, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 738, + "src": "16234:8:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$47_storage_ptr", + "typeString": "struct Bridge.Proposal storage pointer" + } + }, + "id": 862, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16243:11:0", + "memberName": "_resourceID", + "nodeType": "MemberAccess", + "referencedDeclaration": 33, + "src": "16234:20:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 863, + "name": "resourceID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 696, + "src": "16258:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "tokenAddress", - "overrides": null, - "scope": 1608, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 1583, - "name": "ElementaryTypeName", - "src": "9902:7:4" - } - ], - "id": 1584, - "name": "VariableDeclaration", - "src": "9902:20:4" + "src": "16234:34:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4368656174696e67205269736b3b2052656c6179657220766f746520776974682077726f6e67207265736f757263654944", + "id": 865, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16270:51:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3ca28279e933d133e5e14119fc1dd87d7dc7c6fddf46d790067cbb252463d448", + "typeString": "literal_string \"Cheating Risk; Relayer vote with wrong resourceID\"" }, + "value": "Cheating Risk; Relayer vote with wrong resourceID" + } + ], + "expression": { + "argumentTypes": [ { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "srcDecimals", - "overrides": null, - "scope": 1608, - "stateVariable": false, - "storageLocation": "default", - "type": "uint8", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint8", - "type": "uint8" - }, - "id": 1585, - "name": "ElementaryTypeName", - "src": "9924:5:4" - } - ], - "id": 1586, - "name": "VariableDeclaration", - "src": "9924:17:4" + "typeIdentifier": "t_bool", + "typeString": "bool" }, { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "destDecimals", - "overrides": null, - "scope": 1608, - "stateVariable": false, - "storageLocation": "default", - "type": "uint8", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint8", - "type": "uint8" - }, - "id": 1587, - "name": "ElementaryTypeName", - "src": "9943:5:4" - } - ], - "id": 1588, - "name": "VariableDeclaration", - "src": "9943:18:4" + "typeIdentifier": "t_stringliteral_3ca28279e933d133e5e14119fc1dd87d7dc7c6fddf46d790067cbb252463d448", + "typeString": "literal_string \"Cheating Risk; Relayer vote with wrong resourceID\"" } - ], - "id": 1589, - "name": "ParameterList", - "src": "9877:85:4" - }, - { - "attributes": { - "parameters": [null] + ], + "id": 860, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "16226:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } }, - "children": [], - "id": 1592, - "name": "ParameterList", - "src": "9982:0:4" + "id": 866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16226:96:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 867, + "nodeType": "ExpressionStatement", + "src": "16226:96:0" }, { - "attributes": { - "arguments": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1228, - "type": "modifier ()", - "value": "onlyAdmin" - }, - "id": 1590, - "name": "Identifier", - "src": "9972:9:4" + "expression": { + "arguments": [ + { + "expression": { + "id": 873, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "16365:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 874, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16369:6:0", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "16365:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } + } ], - "id": 1591, - "name": "ModifierInvocation", - "src": "9972:9:4" - }, - { - "children": [ - { - "attributes": { - "assignments": [1594] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "handler", - "overrides": null, - "scope": 1607, - "stateVariable": false, - "storageLocation": "default", - "type": "contract IERCHandler", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "IERCHandler", - "referencedDeclaration": 2318, - "type": "contract IERCHandler" - }, - "id": 1593, - "name": "UserDefinedTypeName", - "src": "9992:11:4" - } - ], - "id": 1594, - "name": "VariableDeclaration", - "src": "9992:19:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "contract IERCHandler", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 2318, - "type": "type(contract IERCHandler)", - "value": "IERCHandler" - }, - "id": 1595, - "name": "Identifier", - "src": "10014:11:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1582, - "type": "address", - "value": "handlerAddress" - }, - "id": 1596, - "name": "Identifier", - "src": "10026:14:4" - } - ], - "id": 1597, - "name": "FunctionCall", - "src": "10014:27:4" - } - ], - "id": 1598, - "name": "VariableDeclarationStatement", - "src": "9992:49:4" - }, + "expression": { + "argumentTypes": [ { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "setDecimals", - "referencedDeclaration": 2307, - "type": "function (address,uint8,uint8) external" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1594, - "type": "contract IERCHandler", - "value": "handler" - }, - "id": 1599, - "name": "Identifier", - "src": "10051:7:4" - } - ], - "id": 1601, - "name": "MemberAccess", - "src": "10051:19:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1584, - "type": "address", - "value": "tokenAddress" - }, - "id": 1602, - "name": "Identifier", - "src": "10071:12:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1586, - "type": "uint8", - "value": "srcDecimals" - }, - "id": 1603, - "name": "Identifier", - "src": "10085:11:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1588, - "type": "uint8", - "value": "destDecimals" - }, - "id": 1604, - "name": "Identifier", - "src": "10098:12:4" - } - ], - "id": 1605, - "name": "FunctionCall", - "src": "10051:60:4" - } - ], - "id": 1606, - "name": "ExpressionStatement", - "src": "10051:60:4" + "typeIdentifier": "t_address", + "typeString": "address" } - ], - "id": 1607, - "name": "Block", - "src": "9982:136:4" + ], + "expression": { + "expression": { + "id": 868, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 738, + "src": "16341:8:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$47_storage_ptr", + "typeString": "struct Bridge.Proposal storage pointer" + } + }, + "id": 871, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16350:9:0", + "memberName": "_yesVotes", + "nodeType": "MemberAccess", + "referencedDeclaration": 38, + "src": "16341:18:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 872, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16360:4:0", + "memberName": "push", + "nodeType": "MemberAccess", + "src": "16341:23:0", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$", + "typeString": "function (address[] storage pointer,address)" + } + }, + "id": 875, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16341:35:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 876, + "nodeType": "ExpressionStatement", + "src": "16341:35:0" } - ], - "id": 1608, - "name": "FunctionDefinition", - "src": "9852:266:4" - }, - { - "attributes": { - "functionSelector": "edc20c3c", - "implemented": true, - "isConstructor": false, - "kind": "function", - "name": "adminSetDepositNonce", - "overrides": null, - "scope": 2244, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" + ] }, - "children": [ + "id": 878, + "nodeType": "IfStatement", + "src": "15394:998:0", + "trueBody": { + "id": 859, + "nodeType": "Block", + "src": "15450:354:0", + "statements": [ { - "attributes": { - "text": "@notice Sets a initial deposit nonce for dest chan, this is used to migrate to a new bridge contract.\n@param chainId Dest chain id.\n@param depositNonce Initial deposit nonce." + "expression": { + "id": 848, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 843, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 738, + "src": "15637:8:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$47_storage_ptr", + "typeString": "struct Bridge.Proposal storage pointer" + } + }, + "id": 845, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "15646:7:0", + "memberName": "_status", + "nodeType": "MemberAccess", + "referencedDeclaration": 44, + "src": "15637:16:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ProposalStatus_$31", + "typeString": "enum Bridge.ProposalStatus" + } }, - "id": 1609, - "name": "StructuredDocumentation", - "src": "10124:210:4" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "chainId", - "overrides": null, - "scope": 1625, - "stateVariable": false, - "storageLocation": "default", - "type": "uint8", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint8", - "type": "uint8" - }, - "id": 1610, - "name": "ElementaryTypeName", - "src": "10369:5:4" - } - ], - "id": 1611, - "name": "VariableDeclaration", - "src": "10369:13:4" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "depositNonce", - "overrides": null, - "scope": 1625, - "stateVariable": false, - "storageLocation": "default", - "type": "uint64", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint64", - "type": "uint64" - }, - "id": 1612, - "name": "ElementaryTypeName", - "src": "10384:6:4" - } - ], - "id": 1613, - "name": "VariableDeclaration", - "src": "10384:19:4" + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 846, + "name": "ProposalStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 31, + "src": "15656:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$31_$", + "typeString": "type(enum Bridge.ProposalStatus)" } - ], - "id": 1614, - "name": "ParameterList", - "src": "10368:36:4" - }, - { - "attributes": { - "parameters": [null] + }, + "id": 847, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "15671:9:0", + "memberName": "Cancelled", + "nodeType": "MemberAccess", + "referencedDeclaration": 30, + "src": "15656:24:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ProposalStatus_$31", + "typeString": "enum Bridge.ProposalStatus" + } }, - "children": [], - "id": 1617, - "name": "ParameterList", - "src": "10424:0:4" + "src": "15637:43:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ProposalStatus_$31", + "typeString": "enum Bridge.ProposalStatus" + } + }, + "id": 849, + "nodeType": "ExpressionStatement", + "src": "15637:43:0" }, { - "attributes": { - "arguments": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1228, - "type": "modifier ()", - "value": "onlyAdmin" - }, - "id": 1615, - "name": "Identifier", - "src": "10414:9:4" + "eventCall": { + "arguments": [ + { + "id": 851, + "name": "chainID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 692, + "src": "15718:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" } - ], - "id": 1616, - "name": "ModifierInvocation", - "src": "10414:9:4" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "uint64" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "uint64" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1150, - "type": "mapping(uint8 => uint64)", - "value": "_depositCounts" - }, - "id": 1618, - "name": "Identifier", - "src": "10434:14:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1611, - "type": "uint8", - "value": "chainId" - }, - "id": 1619, - "name": "Identifier", - "src": "10449:7:4" - } - ], - "id": 1620, - "name": "IndexAccess", - "src": "10434:23:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1613, - "type": "uint64", - "value": "depositNonce" - }, - "id": 1621, - "name": "Identifier", - "src": "10460:12:4" - } - ], - "id": 1622, - "name": "Assignment", - "src": "10434:38:4" - } - ], - "id": 1623, - "name": "ExpressionStatement", - "src": "10434:38:4" + }, + { + "id": 852, + "name": "depositNonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 694, + "src": "15727:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + { + "expression": { + "id": 853, + "name": "ProposalStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 31, + "src": "15741:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$31_$", + "typeString": "type(enum Bridge.ProposalStatus)" + } + }, + "id": 854, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "15756:9:0", + "memberName": "Cancelled", + "nodeType": "MemberAccess", + "referencedDeclaration": 30, + "src": "15741:24:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ProposalStatus_$31", + "typeString": "enum Bridge.ProposalStatus" + } + }, + { + "id": 855, + "name": "resourceID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 696, + "src": "15767:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 856, + "name": "dataHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 712, + "src": "15779:8:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } + } ], - "id": 1624, - "name": "Block", - "src": "10424:55:4" - } - ], - "id": 1625, - "name": "FunctionDefinition", - "src": "10339:140:4" - }, - { - "attributes": { - "functionSelector": "a9cf69fa", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [null], - "name": "getProposal", - "overrides": null, - "scope": 2244, - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - "children": [ - { - "attributes": { - "text": "@notice Returns a proposal.\n@param originChainID Chain ID deposit originated from.\n@param depositNonce ID of proposal generated by proposal's origin Bridge contract.\n@param dataHash Hash of data to be provided when deposit proposal is executed.\n@return Proposal which consists of:\n- _dataHash Hash of data to be provided when deposit proposal is executed.\n- _yesVotes Number of votes in favor of proposal.\n- _noVotes Number of votes against proposal.\n- _status Current status of proposal." - }, - "id": 1626, - "name": "StructuredDocumentation", - "src": "10485:572:4" - }, - { - "children": [ + "expression": { + "argumentTypes": [ { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "originChainID", - "overrides": null, - "scope": 1659, - "stateVariable": false, - "storageLocation": "default", - "type": "uint8", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint8", - "type": "uint8" - }, - "id": 1627, - "name": "ElementaryTypeName", - "src": "11083:5:4" - } - ], - "id": 1628, - "name": "VariableDeclaration", - "src": "11083:19:4" + "typeIdentifier": "t_uint8", + "typeString": "uint8" }, { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "depositNonce", - "overrides": null, - "scope": 1659, - "stateVariable": false, - "storageLocation": "default", - "type": "uint64", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint64", - "type": "uint64" - }, - "id": 1629, - "name": "ElementaryTypeName", - "src": "11104:6:4" - } - ], - "id": 1630, - "name": "VariableDeclaration", - "src": "11104:19:4" + "typeIdentifier": "t_uint64", + "typeString": "uint64" }, { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "dataHash", - "overrides": null, - "scope": 1659, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1631, - "name": "ElementaryTypeName", - "src": "11125:7:4" - } - ], - "id": 1632, - "name": "VariableDeclaration", - "src": "11125:16:4" + "typeIdentifier": "t_enum$_ProposalStatus_$31", + "typeString": "enum Bridge.ProposalStatus" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } - ], - "id": 1633, - "name": "ParameterList", - "src": "11082:60:4" + ], + "id": 850, + "name": "ProposalEvent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 101, + "src": "15704:13:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_uint64_$_t_enum$_ProposalStatus_$31_$_t_bytes32_$_t_bytes32_$returns$__$", + "typeString": "function (uint8,uint64,enum Bridge.ProposalStatus,bytes32,bytes32)" + } + }, + "id": 857, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15704:84:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 858, + "nodeType": "EmitStatement", + "src": "15699:89:0" + } + ] + } + } + ] + }, + "id": 880, + "nodeType": "IfStatement", + "src": "14792:1613:0", + "trueBody": { + "id": 834, + "nodeType": "Block", + "src": "14825:548:0", + "statements": [ + { + "expression": { + "id": 789, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": true, + "src": "14840:17:0", + "subExpression": { + "id": 788, + "name": "_totalProposals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 18, + "src": "14842:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 790, + "nodeType": "ExpressionStatement", + "src": "14840:17:0" + }, + { + "expression": { + "id": 814, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "baseExpression": { + "id": 791, + "name": "_proposals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 68, + "src": "14872:10:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint72_$_t_mapping$_t_bytes32_$_t_struct$_Proposal_$47_storage_$_$", + "typeString": "mapping(uint72 => mapping(bytes32 => struct Bridge.Proposal storage ref))" + } + }, + "id": 794, + "indexExpression": { + "id": 792, + "name": "nonceAndID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 722, + "src": "14883:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14872:22:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$47_storage_$", + "typeString": "mapping(bytes32 => struct Bridge.Proposal storage ref)" + } }, - { - "children": [ + "id": 795, + "indexExpression": { + "id": 793, + "name": "dataHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 712, + "src": "14895:8:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "14872:32:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$47_storage", + "typeString": "struct Bridge.Proposal storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 797, + "name": "resourceID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 696, + "src": "14949:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 798, + "name": "dataHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 712, + "src": "14990:8:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "hexValue": "31", + "id": 802, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15043:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "", - "overrides": null, - "scope": 1659, - "stateVariable": false, - "storageLocation": "memory", - "type": "struct Bridge.Proposal", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "Proposal", - "referencedDeclaration": 1146, - "type": "struct Bridge.Proposal" - }, - "id": 1634, - "name": "UserDefinedTypeName", - "src": "11166:8:4" - } - ], - "id": 1635, - "name": "VariableDeclaration", - "src": "11166:15:4" + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "id": 801, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "15029:13:0", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (address[] memory)" + }, + "typeName": { + "baseType": { + "id": 799, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15033:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 800, + "nodeType": "ArrayTypeName", + "src": "15033:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" } + } + }, + "id": 803, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15029:16:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 807, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15089:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } ], - "id": 1636, - "name": "ParameterList", - "src": "11165:17:4" - }, - { - "children": [ + "expression": { + "argumentTypes": [ { - "attributes": { - "assignments": [1638] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "nonceAndID", - "overrides": null, - "scope": 1658, - "stateVariable": false, - "storageLocation": "default", - "type": "uint72", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint72", - "type": "uint72" - }, - "id": 1637, - "name": "ElementaryTypeName", - "src": "11193:6:4" - } - ], - "id": 1638, - "name": "VariableDeclaration", - "src": "11193:17:4" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "|", - "type": "uint72" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "type": "uint72" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "<<", - "type": "uint72" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "uint72", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(uint72)" - }, - "children": [ - { - "attributes": { - "name": "uint72", - "type": null - }, - "id": 1639, - "name": "ElementaryTypeName", - "src": "11214:6:4" - } - ], - "id": 1640, - "name": "ElementaryTypeNameExpression", - "src": "11214:6:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1630, - "type": "uint64", - "value": "depositNonce" - }, - "id": 1641, - "name": "Identifier", - "src": "11221:12:4" - } - ], - "id": 1642, - "name": "FunctionCall", - "src": "11214:20:4" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "38", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 8", - "value": "8" - }, - "id": 1643, - "name": "Literal", - "src": "11238:1:4" - } - ], - "id": 1644, - "name": "BinaryOperation", - "src": "11214:25:4" - } - ], - "id": 1645, - "name": "TupleExpression", - "src": "11213:27:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "uint72", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(uint72)" - }, - "children": [ - { - "attributes": { - "name": "uint72", - "type": null - }, - "id": 1646, - "name": "ElementaryTypeName", - "src": "11243:6:4" - } - ], - "id": 1647, - "name": "ElementaryTypeNameExpression", - "src": "11243:6:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1628, - "type": "uint8", - "value": "originChainID" - }, - "id": 1648, - "name": "Identifier", - "src": "11250:13:4" - } - ], - "id": 1649, - "name": "FunctionCall", - "src": "11243:21:4" - } - ], - "id": 1650, - "name": "BinaryOperation", - "src": "11213:51:4" - } - ], - "id": 1651, - "name": "VariableDeclarationStatement", - "src": "11193:71:4" + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 806, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "15075:13:0", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (address[] memory)" + }, + "typeName": { + "baseType": { + "id": 804, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15079:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, - { - "attributes": { - "functionReturnParameters": 1636 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct Bridge.Proposal storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "mapping(bytes32 => struct Bridge.Proposal storage ref)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1166, - "type": "mapping(uint72 => mapping(bytes32 => struct Bridge.Proposal storage ref))", - "value": "_proposals" - }, - "id": 1652, - "name": "Identifier", - "src": "11281:10:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1638, - "type": "uint72", - "value": "nonceAndID" - }, - "id": 1653, - "name": "Identifier", - "src": "11292:10:4" - } - ], - "id": 1654, - "name": "IndexAccess", - "src": "11281:22:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1632, - "type": "bytes32", - "value": "dataHash" - }, - "id": 1655, - "name": "Identifier", - "src": "11304:8:4" - } - ], - "id": 1656, - "name": "IndexAccess", - "src": "11281:32:4" - } - ], - "id": 1657, - "name": "Return", - "src": "11274:39:4" + "id": 805, + "nodeType": "ArrayTypeName", + "src": "15079:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" } - ], - "id": 1658, - "name": "Block", - "src": "11183:137:4" - } - ], - "id": 1659, - "name": "FunctionDefinition", - "src": "11062:258:4" - }, - { - "attributes": { - "functionSelector": "91c404ac", - "implemented": true, - "isConstructor": false, - "kind": "function", - "name": "adminChangeFee", - "overrides": null, - "scope": 2244, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - "children": [ - { - "attributes": { - "text": "@notice Changes deposit fee.\n@notice Only callable by admin.\n@param newFee Value {_fee} will be updated to." + } + }, + "id": 808, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15075:16:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + { + "expression": { + "id": 809, + "name": "ProposalStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 31, + "src": "15120:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$31_$", + "typeString": "type(enum Bridge.ProposalStatus)" + } + }, + "id": 810, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "15135:6:0", + "memberName": "Active", + "nodeType": "MemberAccess", + "referencedDeclaration": 27, + "src": "15120:21:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ProposalStatus_$31", + "typeString": "enum Bridge.ProposalStatus" + } + }, + { + "expression": { + "id": 811, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967292, + "src": "15177:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 812, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15183:6:0", + "memberName": "number", + "nodeType": "MemberAccess", + "src": "15177:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + { + "typeIdentifier": "t_enum$_ProposalStatus_$31", + "typeString": "enum Bridge.ProposalStatus" }, - "id": 1660, - "name": "StructuredDocumentation", - "src": "11326:143:4" + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 796, + "name": "Proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "14907:8:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_Proposal_$47_storage_ptr_$", + "typeString": "type(struct Bridge.Proposal storage pointer)" + } }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "newFee", - "overrides": null, - "scope": 1679, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint", - "type": "uint256" - }, - "id": 1661, - "name": "ElementaryTypeName", - "src": "11498:4:4" - } - ], - "id": 1662, - "name": "VariableDeclaration", - "src": "11498:11:4" - } - ], - "id": 1663, - "name": "ParameterList", - "src": "11497:13:4" + "id": 813, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "nameLocations": [ + "14935:11:0", + "14978:9:0", + "15017:9:0", + "15064:8:0", + "15110:7:0", + "15160:14:0" + ], + "names": [ + "_resourceID", + "_dataHash", + "_yesVotes", + "_noVotes", + "_status", + "_proposedBlock" + ], + "nodeType": "FunctionCall", + "src": "14907:302:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$47_memory_ptr", + "typeString": "struct Bridge.Proposal memory" + } + }, + "src": "14872:337:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$47_storage", + "typeString": "struct Bridge.Proposal storage ref" + } + }, + "id": 815, + "nodeType": "ExpressionStatement", + "src": "14872:337:0" + }, + { + "expression": { + "id": 823, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 816, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 738, + "src": "15226:8:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$47_storage_ptr", + "typeString": "struct Bridge.Proposal storage pointer" + } + }, + "id": 819, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15235:9:0", + "memberName": "_yesVotes", + "nodeType": "MemberAccess", + "referencedDeclaration": 38, + "src": "15226:18:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } }, - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 1666, - "name": "ParameterList", - "src": "11530:0:4" + "id": 820, + "indexExpression": { + "hexValue": "30", + "id": 818, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15245:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" }, - { - "attributes": { - "arguments": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1228, - "type": "modifier ()", - "value": "onlyAdmin" - }, - "id": 1664, - "name": "Identifier", - "src": "11520:9:4" - } - ], - "id": 1665, - "name": "ModifierInvocation", - "src": "11520:9:4" + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "15226:21:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 821, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "15250:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_db095f13e245243418ee9a5b7ae0408e2f6a2092be336cf2ec7b5f2ae85b9133", - "typeString": "literal_string \"Current fee is equal to new fee\"" - } - ], - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 1667, - "name": "Identifier", - "src": "11540:7:4" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1120, - "type": "uint256", - "value": "_fee" - }, - "id": 1668, - "name": "Identifier", - "src": "11548:4:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1662, - "type": "uint256", - "value": "newFee" - }, - "id": 1669, - "name": "Identifier", - "src": "11556:6:4" - } - ], - "id": 1670, - "name": "BinaryOperation", - "src": "11548:14:4" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "43757272656e742066656520697320657175616c20746f206e657720666565", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"Current fee is equal to new fee\"", - "value": "Current fee is equal to new fee" - }, - "id": 1671, - "name": "Literal", - "src": "11564:33:4" - } - ], - "id": 1672, - "name": "FunctionCall", - "src": "11540:58:4" - } - ], - "id": 1673, - "name": "ExpressionStatement", - "src": "11540:58:4" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1120, - "type": "uint256", - "value": "_fee" - }, - "id": 1674, - "name": "Identifier", - "src": "11608:4:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1662, - "type": "uint256", - "value": "newFee" - }, - "id": 1675, - "name": "Identifier", - "src": "11615:6:4" - } - ], - "id": 1676, - "name": "Assignment", - "src": "11608:13:4" - } - ], - "id": 1677, - "name": "ExpressionStatement", - "src": "11608:13:4" - } - ], - "id": 1678, - "name": "Block", - "src": "11530:98:4" + "id": 822, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15254:6:0", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "15250:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } - ], - "id": 1679, - "name": "FunctionDefinition", - "src": "11474:154:4" - }, - { - "attributes": { - "functionSelector": "780cf004", - "implemented": true, - "isConstructor": false, - "kind": "function", - "name": "adminWithdraw", - "overrides": null, - "scope": 2244, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" + }, + "src": "15226:34:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, - "children": [ + "id": 824, + "nodeType": "ExpressionStatement", + "src": "15226:34:0" + }, + { + "eventCall": { + "arguments": [ { - "attributes": { - "text": "@notice Used to manually withdraw funds from ERC safes.\n@param handlerAddress Address of handler to withdraw from.\n@param tokenAddress Address of token to withdraw.\n@param recipient Address to withdraw tokens to.\n@param amountOrTokenID Either the amount of ERC20 tokens or the ERC721 token ID to withdraw." - }, - "id": 1680, - "name": "StructuredDocumentation", - "src": "11634:357:4" + "id": 826, + "name": "chainID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 692, + "src": "15294:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } }, { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "handlerAddress", - "overrides": null, - "scope": 1708, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 1681, - "name": "ElementaryTypeName", - "src": "12028:7:4" - } - ], - "id": 1682, - "name": "VariableDeclaration", - "src": "12028:22:4" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "tokenAddress", - "overrides": null, - "scope": 1708, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 1683, - "name": "ElementaryTypeName", - "src": "12060:7:4" - } - ], - "id": 1684, - "name": "VariableDeclaration", - "src": "12060:20:4" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "recipient", - "overrides": null, - "scope": 1708, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 1685, - "name": "ElementaryTypeName", - "src": "12090:7:4" - } - ], - "id": 1686, - "name": "VariableDeclaration", - "src": "12090:17:4" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "amountOrTokenID", - "overrides": null, - "scope": 1708, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 1687, - "name": "ElementaryTypeName", - "src": "12117:7:4" - } - ], - "id": 1688, - "name": "VariableDeclaration", - "src": "12117:23:4" - } - ], - "id": 1689, - "name": "ParameterList", - "src": "12018:128:4" + "id": 827, + "name": "depositNonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 694, + "src": "15303:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } }, { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 1692, - "name": "ParameterList", - "src": "12166:0:4" + "expression": { + "id": 828, + "name": "ProposalStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 31, + "src": "15317:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$31_$", + "typeString": "type(enum Bridge.ProposalStatus)" + } + }, + "id": 829, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "15332:6:0", + "memberName": "Active", + "nodeType": "MemberAccess", + "referencedDeclaration": 27, + "src": "15317:21:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ProposalStatus_$31", + "typeString": "enum Bridge.ProposalStatus" + } }, { - "attributes": { - "arguments": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1228, - "type": "modifier ()", - "value": "onlyAdmin" - }, - "id": 1690, - "name": "Identifier", - "src": "12156:9:4" - } - ], - "id": 1691, - "name": "ModifierInvocation", - "src": "12156:9:4" + "id": 830, + "name": "resourceID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 696, + "src": "15340:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } }, { - "children": [ - { - "attributes": { - "assignments": [1694] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "handler", - "overrides": null, - "scope": 1707, - "stateVariable": false, - "storageLocation": "default", - "type": "contract IERCHandler", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "IERCHandler", - "referencedDeclaration": 2318, - "type": "contract IERCHandler" - }, - "id": 1693, - "name": "UserDefinedTypeName", - "src": "12176:11:4" - } - ], - "id": 1694, - "name": "VariableDeclaration", - "src": "12176:19:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "contract IERCHandler", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 2318, - "type": "type(contract IERCHandler)", - "value": "IERCHandler" - }, - "id": 1695, - "name": "Identifier", - "src": "12198:11:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1682, - "type": "address", - "value": "handlerAddress" - }, - "id": 1696, - "name": "Identifier", - "src": "12210:14:4" - } - ], - "id": 1697, - "name": "FunctionCall", - "src": "12198:27:4" - } - ], - "id": 1698, - "name": "VariableDeclarationStatement", - "src": "12176:49:4" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "withdraw", - "referencedDeclaration": 2317, - "type": "function (address,address,uint256) external" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1694, - "type": "contract IERCHandler", - "value": "handler" - }, - "id": 1699, - "name": "Identifier", - "src": "12235:7:4" - } - ], - "id": 1701, - "name": "MemberAccess", - "src": "12235:16:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1684, - "type": "address", - "value": "tokenAddress" - }, - "id": 1702, - "name": "Identifier", - "src": "12252:12:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1686, - "type": "address", - "value": "recipient" - }, - "id": 1703, - "name": "Identifier", - "src": "12266:9:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1688, - "type": "uint256", - "value": "amountOrTokenID" - }, - "id": 1704, - "name": "Identifier", - "src": "12277:15:4" - } - ], - "id": 1705, - "name": "FunctionCall", - "src": "12235:58:4" - } - ], - "id": 1706, - "name": "ExpressionStatement", - "src": "12235:58:4" - } - ], - "id": 1707, - "name": "Block", - "src": "12166:134:4" + "id": 831, + "name": "dataHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 712, + "src": "15352:8:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } } - ], - "id": 1708, - "name": "FunctionDefinition", - "src": "11996:304:4" - }, - { - "attributes": { - "functionSelector": "05e2ca17", - "implemented": true, - "isConstructor": false, - "kind": "function", - "name": "deposit", - "overrides": null, - "scope": 2244, - "stateMutability": "payable", - "virtual": false, - "visibility": "external" + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_enum$_ProposalStatus_$31", + "typeString": "enum Bridge.ProposalStatus" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 825, + "name": "ProposalEvent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 101, + "src": "15280:13:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_uint64_$_t_enum$_ProposalStatus_$31_$_t_bytes32_$_t_bytes32_$returns$__$", + "typeString": "function (uint8,uint64,enum Bridge.ProposalStatus,bytes32,bytes32)" + } + }, + "id": 832, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15280:81:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } }, - "children": [ - { - "attributes": { - "text": "@notice Initiates a transfer using a specified handler contract.\n@notice Only callable when Bridge is not paused.\n@param destinationChainID ID of chain deposit will be bridged to.\n@param resourceID ResourceID used to find address of handler to be used for deposit.\n@param data Additional data to be passed to specified handler.\n@notice Emits {Deposit} event." + "id": 833, + "nodeType": "EmitStatement", + "src": "15275:86:0" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_enum$_ProposalStatus_$31", + "typeString": "enum Bridge.ProposalStatus" + }, + "id": 885, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 881, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 738, + "src": "16419:8:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$47_storage_ptr", + "typeString": "struct Bridge.Proposal storage pointer" + } + }, + "id": 882, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16428:7:0", + "memberName": "_status", + "nodeType": "MemberAccess", + "referencedDeclaration": 44, + "src": "16419:16:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ProposalStatus_$31", + "typeString": "enum Bridge.ProposalStatus" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "id": 883, + "name": "ProposalStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 31, + "src": "16439:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$31_$", + "typeString": "type(enum Bridge.ProposalStatus)" + } + }, + "id": 884, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "16454:9:0", + "memberName": "Cancelled", + "nodeType": "MemberAccess", + "referencedDeclaration": 30, + "src": "16439:24:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ProposalStatus_$31", + "typeString": "enum Bridge.ProposalStatus" + } + }, + "src": "16419:44:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 950, + "nodeType": "IfStatement", + "src": "16415:997:0", + "trueBody": { + "id": 949, + "nodeType": "Block", + "src": "16465:947:0", + "statements": [ + { + "expression": { + "id": 895, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "baseExpression": { + "baseExpression": { + "id": 886, + "name": "_hasVotedOnProposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 76, + "src": "16480:19:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint72_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$_$", + "typeString": "mapping(uint72 => mapping(bytes32 => mapping(address => bool)))" + } }, - "id": 1709, - "name": "StructuredDocumentation", - "src": "12306:418:4" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "destinationChainID", - "overrides": null, - "scope": 1783, - "stateVariable": false, - "storageLocation": "default", - "type": "uint8", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint8", - "type": "uint8" - }, - "id": 1710, - "name": "ElementaryTypeName", - "src": "12746:5:4" - } - ], - "id": 1711, - "name": "VariableDeclaration", - "src": "12746:24:4" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "resourceID", - "overrides": null, - "scope": 1783, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1712, - "name": "ElementaryTypeName", - "src": "12772:7:4" - } - ], - "id": 1713, - "name": "VariableDeclaration", - "src": "12772:18:4" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "data", - "overrides": null, - "scope": 1783, - "stateVariable": false, - "storageLocation": "calldata", - "type": "bytes", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes", - "type": "bytes" - }, - "id": 1714, - "name": "ElementaryTypeName", - "src": "12792:5:4" - } - ], - "id": 1715, - "name": "VariableDeclaration", - "src": "12792:19:4" - } - ], - "id": 1716, - "name": "ParameterList", - "src": "12745:67:4" - }, - { - "attributes": { - "parameters": [null] + "id": 891, + "indexExpression": { + "id": 887, + "name": "nonceAndID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 722, + "src": "16500:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + } }, - "children": [], - "id": 1719, - "name": "ParameterList", - "src": "12844:0:4" + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16480:31:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(bytes32 => mapping(address => bool))" + } + }, + "id": 892, + "indexExpression": { + "id": 888, + "name": "dataHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 712, + "src": "16512:8:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16480:41:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } }, - { - "attributes": { - "arguments": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 2375, - "type": "modifier ()", - "value": "whenNotPaused" - }, - "id": 1717, - "name": "Identifier", - "src": "12830:13:4" - } - ], - "id": 1718, - "name": "ModifierInvocation", - "src": "12830:13:4" + "id": 893, + "indexExpression": { + "expression": { + "id": 889, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "16522:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 890, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16526:6:0", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "16522:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_2a2431514317abe5c8b163ccf132d16516b7e676afbb7d1bf5781dba4082d9d5", - "typeString": "literal_string \"Incorrect fee supplied\"" - } - ], - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 1720, - "name": "Identifier", - "src": "12854:7:4" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "value", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": -15, - "type": "msg", - "value": "msg" - }, - "id": 1721, - "name": "Identifier", - "src": "12862:3:4" - } - ], - "id": 1722, - "name": "MemberAccess", - "src": "12862:9:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1120, - "type": "uint256", - "value": "_fee" - }, - "id": 1723, - "name": "Identifier", - "src": "12875:4:4" - } - ], - "id": 1724, - "name": "BinaryOperation", - "src": "12862:17:4" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "496e636f72726563742066656520737570706c696564", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"Incorrect fee supplied\"", - "value": "Incorrect fee supplied" - }, - "id": 1725, - "name": "Literal", - "src": "12881:24:4" - } - ], - "id": 1726, - "name": "FunctionCall", - "src": "12854:52:4" - } - ], - "id": 1727, - "name": "ExpressionStatement", - "src": "12854:52:4" - }, - { - "attributes": { - "assignments": [1729] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "handler", - "overrides": null, - "scope": 1782, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 1728, - "name": "ElementaryTypeName", - "src": "12917:7:4" - } - ], - "id": 1729, - "name": "VariableDeclaration", - "src": "12917:15:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1154, - "type": "mapping(bytes32 => address)", - "value": "_resourceIDToHandlerAddress" - }, - "id": 1730, - "name": "Identifier", - "src": "12935:27:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1713, - "type": "bytes32", - "value": "resourceID" - }, - "id": 1731, - "name": "Identifier", - "src": "12963:10:4" - } - ], - "id": 1732, - "name": "IndexAccess", - "src": "12935:39:4" - } - ], - "id": 1733, - "name": "VariableDeclarationStatement", - "src": "12917:57:4" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_542d0c0b50539d1853c947fb8449b05e8626e9928b1fbf8fb55da8a4976aae52", - "typeString": "literal_string \"resourceID not mapped to handler\"" - } - ], - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 1734, - "name": "Identifier", - "src": "12984:7:4" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1729, - "type": "address", - "value": "handler" - }, - "id": 1735, - "name": "Identifier", - "src": "12992:7:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "address payable", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": null - }, - "id": 1736, - "name": "ElementaryTypeName", - "src": "13003:7:4" - } - ], - "id": 1737, - "name": "ElementaryTypeNameExpression", - "src": "13003:7:4" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 1738, - "name": "Literal", - "src": "13011:1:4" - } - ], - "id": 1739, - "name": "FunctionCall", - "src": "13003:10:4" - } - ], - "id": 1740, - "name": "BinaryOperation", - "src": "12992:21:4" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "7265736f757263654944206e6f74206d617070656420746f2068616e646c6572", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"resourceID not mapped to handler\"", - "value": "resourceID not mapped to handler" - }, - "id": 1741, - "name": "Literal", - "src": "13015:34:4" - } - ], - "id": 1742, - "name": "FunctionCall", - "src": "12984:66:4" - } - ], - "id": 1743, - "name": "ExpressionStatement", - "src": "12984:66:4" - }, - { - "attributes": { - "assignments": [1745] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "depositNonce", - "overrides": null, - "scope": 1782, - "stateVariable": false, - "storageLocation": "default", - "type": "uint64", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint64", - "type": "uint64" - }, - "id": 1744, - "name": "ElementaryTypeName", - "src": "13061:6:4" - } - ], - "id": 1745, - "name": "VariableDeclaration", - "src": "13061:19:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "++", - "prefix": true, - "type": "uint64" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "uint64" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1150, - "type": "mapping(uint8 => uint64)", - "value": "_depositCounts" - }, - "id": 1746, - "name": "Identifier", - "src": "13085:14:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1711, - "type": "uint8", - "value": "destinationChainID" - }, - "id": 1747, - "name": "Identifier", - "src": "13100:18:4" - } - ], - "id": 1748, - "name": "IndexAccess", - "src": "13085:34:4" - } - ], - "id": 1749, - "name": "UnaryOperation", - "src": "13083:36:4" - } - ], - "id": 1750, - "name": "VariableDeclarationStatement", - "src": "13061:58:4" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "bytes storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "bytes storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "mapping(uint8 => bytes storage ref)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1160, - "type": "mapping(uint64 => mapping(uint8 => bytes storage ref))", - "value": "_depositRecords" - }, - "id": 1751, - "name": "Identifier", - "src": "13129:15:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1745, - "type": "uint64", - "value": "depositNonce" - }, - "id": 1752, - "name": "Identifier", - "src": "13145:12:4" - } - ], - "id": 1754, - "name": "IndexAccess", - "src": "13129:29:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1711, - "type": "uint8", - "value": "destinationChainID" - }, - "id": 1753, - "name": "Identifier", - "src": "13159:18:4" - } - ], - "id": 1755, - "name": "IndexAccess", - "src": "13129:49:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1715, - "type": "bytes calldata", - "value": "data" - }, - "id": 1756, - "name": "Identifier", - "src": "13181:4:4" - } - ], - "id": 1757, - "name": "Assignment", - "src": "13129:56:4" - } - ], - "id": 1758, - "name": "ExpressionStatement", - "src": "13129:56:4" - }, - { - "attributes": { - "assignments": [1760] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "depositHandler", - "overrides": null, - "scope": 1782, - "stateVariable": false, - "storageLocation": "default", - "type": "contract IDepositExecute", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "IDepositExecute", - "referencedDeclaration": 2280, - "type": "contract IDepositExecute" - }, - "id": 1759, - "name": "UserDefinedTypeName", - "src": "13196:15:4" - } - ], - "id": 1760, - "name": "VariableDeclaration", - "src": "13196:30:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "contract IDepositExecute", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 2280, - "type": "type(contract IDepositExecute)", - "value": "IDepositExecute" - }, - "id": 1761, - "name": "Identifier", - "src": "13229:15:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1729, - "type": "address", - "value": "handler" - }, - "id": 1762, - "name": "Identifier", - "src": "13245:7:4" - } - ], - "id": 1763, - "name": "FunctionCall", - "src": "13229:24:4" - } - ], - "id": 1764, - "name": "VariableDeclarationStatement", - "src": "13196:57:4" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "deposit", - "referencedDeclaration": 2271, - "type": "function (bytes32,uint8,uint64,address,bytes memory) external" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1760, - "type": "contract IDepositExecute", - "value": "depositHandler" - }, - "id": 1765, - "name": "Identifier", - "src": "13263:14:4" - } - ], - "id": 1767, - "name": "MemberAccess", - "src": "13263:22:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1713, - "type": "bytes32", - "value": "resourceID" - }, - "id": 1768, - "name": "Identifier", - "src": "13286:10:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1711, - "type": "uint8", - "value": "destinationChainID" - }, - "id": 1769, - "name": "Identifier", - "src": "13298:18:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1745, - "type": "uint64", - "value": "depositNonce" - }, - "id": 1770, - "name": "Identifier", - "src": "13318:12:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "referencedDeclaration": null, - "type": "address payable" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": -15, - "type": "msg", - "value": "msg" - }, - "id": 1771, - "name": "Identifier", - "src": "13332:3:4" - } - ], - "id": 1772, - "name": "MemberAccess", - "src": "13332:10:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1715, - "type": "bytes calldata", - "value": "data" - }, - "id": 1773, - "name": "Identifier", - "src": "13344:4:4" - } - ], - "id": 1774, - "name": "FunctionCall", - "src": "13263:86:4" - } - ], - "id": 1775, - "name": "ExpressionStatement", - "src": "13263:86:4" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 1194, - "type": "function (uint8,bytes32,uint64)", - "value": "Deposit" - }, - "id": 1776, - "name": "Identifier", - "src": "13365:7:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1711, - "type": "uint8", - "value": "destinationChainID" - }, - "id": 1777, - "name": "Identifier", - "src": "13373:18:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1713, - "type": "bytes32", - "value": "resourceID" - }, - "id": 1778, - "name": "Identifier", - "src": "13393:10:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1745, - "type": "uint64", - "value": "depositNonce" - }, - "id": 1779, - "name": "Identifier", - "src": "13405:12:4" - } - ], - "id": 1780, - "name": "FunctionCall", - "src": "13365:53:4" - } - ], - "id": 1781, - "name": "EmitStatement", - "src": "13360:58:4" - } - ], - "id": 1782, - "name": "Block", - "src": "12844:581:4" + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "16480:53:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } - ], - "id": 1783, - "name": "FunctionDefinition", - "src": "12729:696:4" - }, - { - "attributes": { - "functionSelector": "1ff013f1", - "implemented": true, - "isConstructor": false, - "kind": "function", - "name": "voteProposal", - "overrides": null, - "scope": 2244, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 894, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16536:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "16480:60:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } }, - "children": [ - { - "attributes": { - "text": "@notice When called, {msg.sender} will be marked as voting in favor of proposal.\n@notice Only callable by relayers when Bridge is not paused.\n@param chainID ID of chain deposit originated from.\n@param depositNonce ID of deposited generated by origin Bridge contract.\n@param dataHash Hash of data provided when deposit was made.\n@notice Proposal must not have already been passed or executed.\n@notice {msg.sender} must not have already voted on proposal.\n@notice Emits {ProposalEvent} event with status indicating the proposal status.\n@notice Emits {ProposalVote} event." - }, - "id": 1784, - "name": "StructuredDocumentation", - "src": "13431:653:4" + "id": 896, + "nodeType": "ExpressionStatement", + "src": "16480:60:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 905, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "chainID", - "overrides": null, - "scope": 2012, - "stateVariable": false, - "storageLocation": "default", - "type": "uint8", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint8", - "type": "uint8" - }, - "id": 1785, - "name": "ElementaryTypeName", - "src": "14111:5:4" - } - ], - "id": 1786, - "name": "VariableDeclaration", - "src": "14111:13:4" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "depositNonce", - "overrides": null, - "scope": 2012, - "stateVariable": false, - "storageLocation": "default", - "type": "uint64", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint64", - "type": "uint64" - }, - "id": 1787, - "name": "ElementaryTypeName", - "src": "14126:6:4" - } - ], - "id": 1788, - "name": "VariableDeclaration", - "src": "14126:19:4" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "resourceID", - "overrides": null, - "scope": 2012, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1789, - "name": "ElementaryTypeName", - "src": "14147:7:4" - } - ], - "id": 1790, - "name": "VariableDeclaration", - "src": "14147:18:4" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "dataHash", - "overrides": null, - "scope": 2012, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1791, - "name": "ElementaryTypeName", - "src": "14167:7:4" - } - ], - "id": 1792, - "name": "VariableDeclaration", - "src": "14167:16:4" - } - ], - "id": 1793, - "name": "ParameterList", - "src": "14110:74:4" + "id": 899, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 897, + "name": "_relayerThreshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16, + "src": "16688:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, - { - "attributes": { - "parameters": [null] + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "hexValue": "31", + "id": 898, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16709:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "16688:22:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 904, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 900, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 738, + "src": "16714:8:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$47_storage_ptr", + "typeString": "struct Bridge.Proposal storage pointer" + } }, - "children": [], - "id": 1798, - "name": "ParameterList", - "src": "14221:0:4" + "id": 901, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16723:9:0", + "memberName": "_yesVotes", + "nodeType": "MemberAccess", + "referencedDeclaration": 38, + "src": "16714:18:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 902, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16733:6:0", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "16714:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, - { - "attributes": { - "arguments": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1242, - "type": "modifier ()", - "value": "onlyRelayers" - }, - "id": 1794, - "name": "Identifier", - "src": "14194:12:4" - } - ], - "id": 1795, - "name": "ModifierInvocation", - "src": "14194:12:4" + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 903, + "name": "_relayerThreshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16, + "src": "16743:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, + "src": "16714:46:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "16688:72:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 948, + "nodeType": "IfStatement", + "src": "16684:717:0", + "trueBody": { + "id": 947, + "nodeType": "Block", + "src": "16762:639:0", + "statements": [ { - "attributes": { - "arguments": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 2375, - "type": "modifier ()", - "value": "whenNotPaused" - }, - "id": 1796, - "name": "Identifier", - "src": "14207:13:4" + "condition": { + "arguments": [ + { + "id": 907, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 698, + "src": "16802:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + { + "id": 908, + "name": "resourceID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 696, + "src": "16808:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } + } ], - "id": 1797, - "name": "ModifierInvocation", - "src": "14207:13:4" - }, - { - "children": [ - { - "attributes": { - "assignments": [1800] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "nonceAndID", - "overrides": null, - "scope": 2011, - "stateVariable": false, - "storageLocation": "default", - "type": "uint72", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint72", - "type": "uint72" - }, - "id": 1799, - "name": "ElementaryTypeName", - "src": "14232:6:4" - } - ], - "id": 1800, - "name": "VariableDeclaration", - "src": "14232:17:4" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "|", - "type": "uint72" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "type": "uint72" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "<<", - "type": "uint72" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "uint72", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(uint72)" - }, - "children": [ - { - "attributes": { - "name": "uint72", - "type": null - }, - "id": 1801, - "name": "ElementaryTypeName", - "src": "14253:6:4" - } - ], - "id": 1802, - "name": "ElementaryTypeNameExpression", - "src": "14253:6:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1788, - "type": "uint64", - "value": "depositNonce" - }, - "id": 1803, - "name": "Identifier", - "src": "14260:12:4" - } - ], - "id": 1804, - "name": "FunctionCall", - "src": "14253:20:4" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "38", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 8", - "value": "8" - }, - "id": 1805, - "name": "Literal", - "src": "14277:1:4" - } - ], - "id": 1806, - "name": "BinaryOperation", - "src": "14253:25:4" - } - ], - "id": 1807, - "name": "TupleExpression", - "src": "14252:27:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "uint72", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(uint72)" - }, - "children": [ - { - "attributes": { - "name": "uint72", - "type": null - }, - "id": 1808, - "name": "ElementaryTypeName", - "src": "14282:6:4" - } - ], - "id": 1809, - "name": "ElementaryTypeNameExpression", - "src": "14282:6:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1786, - "type": "uint8", - "value": "chainID" - }, - "id": 1810, - "name": "Identifier", - "src": "14289:7:4" - } - ], - "id": 1811, - "name": "FunctionCall", - "src": "14282:15:4" - } - ], - "id": 1812, - "name": "BinaryOperation", - "src": "14252:45:4" - } - ], - "id": 1813, - "name": "VariableDeclarationStatement", - "src": "14232:65:4" - }, - { - "attributes": { - "assignments": [1815] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "proposal", - "overrides": null, - "scope": 2011, - "stateVariable": false, - "storageLocation": "storage", - "type": "struct Bridge.Proposal", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "Proposal", - "referencedDeclaration": 1146, - "type": "struct Bridge.Proposal" - }, - "id": 1814, - "name": "UserDefinedTypeName", - "src": "14307:8:4" - } - ], - "id": 1815, - "name": "VariableDeclaration", - "src": "14307:25:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct Bridge.Proposal storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "mapping(bytes32 => struct Bridge.Proposal storage ref)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1166, - "type": "mapping(uint72 => mapping(bytes32 => struct Bridge.Proposal storage ref))", - "value": "_proposals" - }, - "id": 1816, - "name": "Identifier", - "src": "14335:10:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1800, - "type": "uint72", - "value": "nonceAndID" - }, - "id": 1817, - "name": "Identifier", - "src": "14346:10:4" - } - ], - "id": 1818, - "name": "IndexAccess", - "src": "14335:22:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1792, - "type": "bytes32", - "value": "dataHash" - }, - "id": 1819, - "name": "Identifier", - "src": "14358:8:4" - } - ], - "id": 1820, - "name": "IndexAccess", - "src": "14335:32:4" - } - ], - "id": 1821, - "name": "VariableDeclarationStatement", - "src": "14307:60:4" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_e9d3c8def96ec5b61b3d5e8e38d358587f69ed955aa1f36ba2f95c28a40ffe20", - "typeString": "literal_string \"no handler for resourceID\"" - } - ], - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 1822, - "name": "Identifier", - "src": "14378:7:4" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1154, - "type": "mapping(bytes32 => address)", - "value": "_resourceIDToHandlerAddress" - }, - "id": 1823, - "name": "Identifier", - "src": "14386:27:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1790, - "type": "bytes32", - "value": "resourceID" - }, - "id": 1824, - "name": "Identifier", - "src": "14414:10:4" - } - ], - "id": 1825, - "name": "IndexAccess", - "src": "14386:39:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "address payable", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": null - }, - "id": 1826, - "name": "ElementaryTypeName", - "src": "14429:7:4" - } - ], - "id": 1827, - "name": "ElementaryTypeNameExpression", - "src": "14429:7:4" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 1828, - "name": "Literal", - "src": "14437:1:4" - } - ], - "id": 1829, - "name": "FunctionCall", - "src": "14429:10:4" - } - ], - "id": 1830, - "name": "BinaryOperation", - "src": "14386:53:4" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "6e6f2068616e646c657220666f72207265736f757263654944", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"no handler for resourceID\"", - "value": "no handler for resourceID" - }, - "id": 1831, - "name": "Literal", - "src": "14441:27:4" - } - ], - "id": 1832, - "name": "FunctionCall", - "src": "14378:91:4" - } - ], - "id": 1833, - "name": "ExpressionStatement", - "src": "14378:91:4" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_c48a67927cb12b6986df316341a7e026082eb20c4db86a85c59231eb345d8194", - "typeString": "literal_string \"proposal already passed/executed/cancelled\"" - } - ], - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 1834, - "name": "Identifier", - "src": "14479:7:4" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "<=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "uint256", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(uint256)" - }, - "children": [ - { - "attributes": { - "name": "uint", - "type": null - }, - "id": 1835, - "name": "ElementaryTypeName", - "src": "14487:4:4" - } - ], - "id": 1836, - "name": "ElementaryTypeNameExpression", - "src": "14487:4:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "_status", - "referencedDeclaration": 1143, - "type": "enum Bridge.ProposalStatus" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1815, - "type": "struct Bridge.Proposal storage pointer", - "value": "proposal" - }, - "id": 1837, - "name": "Identifier", - "src": "14492:8:4" - } - ], - "id": 1838, - "name": "MemberAccess", - "src": "14492:16:4" - } - ], - "id": 1839, - "name": "FunctionCall", - "src": "14487:22:4" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "31", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 1", - "value": "1" - }, - "id": 1840, - "name": "Literal", - "src": "14513:1:4" - } - ], - "id": 1841, - "name": "BinaryOperation", - "src": "14487:27:4" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "70726f706f73616c20616c7265616479207061737365642f65786563757465642f63616e63656c6c6564", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"proposal already passed/executed/cancelled\"", - "value": "proposal already passed/executed/cancelled" - }, - "id": 1842, - "name": "Literal", - "src": "14516:44:4" - } - ], - "id": 1843, - "name": "FunctionCall", - "src": "14479:82:4" - } - ], - "id": 1844, - "name": "ExpressionStatement", - "src": "14479:82:4" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_0bc9c5100729666c219a147072032fe3fda273fedfa160b31a35f38bd9d0632b", - "typeString": "literal_string \"relayer already voted\"" - } - ], - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 1845, - "name": "Identifier", - "src": "14571:7:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!", - "prefix": true, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "mapping(address => bool)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "mapping(bytes32 => mapping(address => bool))" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1174, - "type": "mapping(uint72 => mapping(bytes32 => mapping(address => bool)))", - "value": "_hasVotedOnProposal" - }, - "id": 1846, - "name": "Identifier", - "src": "14580:19:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1800, - "type": "uint72", - "value": "nonceAndID" - }, - "id": 1847, - "name": "Identifier", - "src": "14600:10:4" - } - ], - "id": 1848, - "name": "IndexAccess", - "src": "14580:31:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1792, - "type": "bytes32", - "value": "dataHash" - }, - "id": 1849, - "name": "Identifier", - "src": "14612:8:4" - } - ], - "id": 1850, - "name": "IndexAccess", - "src": "14580:41:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "referencedDeclaration": null, - "type": "address payable" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": -15, - "type": "msg", - "value": "msg" - }, - "id": 1851, - "name": "Identifier", - "src": "14622:3:4" - } - ], - "id": 1852, - "name": "MemberAccess", - "src": "14622:10:4" - } - ], - "id": 1853, - "name": "IndexAccess", - "src": "14580:53:4" - } - ], - "id": 1854, - "name": "UnaryOperation", - "src": "14579:54:4" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "72656c6179657220616c726561647920766f746564", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"relayer already voted\"", - "value": "relayer already voted" - }, - "id": 1855, - "name": "Literal", - "src": "14635:23:4" - } - ], - "id": 1856, - "name": "FunctionCall", - "src": "14571:88:4" - } - ], - "id": 1857, - "name": "ExpressionStatement", - "src": "14571:88:4" - }, + "expression": { + "argumentTypes": [ { - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "uint256", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(uint256)" - }, - "children": [ - { - "attributes": { - "name": "uint", - "type": null - }, - "id": 1858, - "name": "ElementaryTypeName", - "src": "14674:4:4" - } - ], - "id": 1859, - "name": "ElementaryTypeNameExpression", - "src": "14674:4:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "_status", - "referencedDeclaration": 1143, - "type": "enum Bridge.ProposalStatus" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1815, - "type": "struct Bridge.Proposal storage pointer", - "value": "proposal" - }, - "id": 1860, - "name": "Identifier", - "src": "14679:8:4" - } - ], - "id": 1861, - "name": "MemberAccess", - "src": "14679:16:4" - } - ], - "id": 1862, - "name": "FunctionCall", - "src": "14674:22:4" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 1863, - "name": "Literal", - "src": "14700:1:4" - } - ], - "id": 1864, - "name": "BinaryOperation", - "src": "14674:27:4" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "++", - "prefix": true, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1118, - "type": "uint256", - "value": "_totalProposals" - }, - "id": 1865, - "name": "Identifier", - "src": "14719:15:4" - } - ], - "id": 1866, - "name": "UnaryOperation", - "src": "14717:17:4" - } - ], - "id": 1867, - "name": "ExpressionStatement", - "src": "14717:17:4" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "struct Bridge.Proposal storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "struct Bridge.Proposal storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "mapping(bytes32 => struct Bridge.Proposal storage ref)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1166, - "type": "mapping(uint72 => mapping(bytes32 => struct Bridge.Proposal storage ref))", - "value": "_proposals" - }, - "id": 1868, - "name": "Identifier", - "src": "14748:10:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1800, - "type": "uint72", - "value": "nonceAndID" - }, - "id": 1869, - "name": "Identifier", - "src": "14759:10:4" - } - ], - "id": 1871, - "name": "IndexAccess", - "src": "14748:22:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1792, - "type": "bytes32", - "value": "dataHash" - }, - "id": 1870, - "name": "Identifier", - "src": "14771:8:4" - } - ], - "id": 1872, - "name": "IndexAccess", - "src": "14748:32:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": true, - "lValueRequested": false, - "names": [ - "_resourceID", - "_dataHash", - "_yesVotes", - "_noVotes", - "_status", - "_proposedBlock" - ], - "tryCall": false, - "type": "struct Bridge.Proposal memory", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 1146, - "type": "type(struct Bridge.Proposal storage pointer)", - "value": "Proposal" - }, - "id": 1873, - "name": "Identifier", - "src": "14783:8:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1790, - "type": "bytes32", - "value": "resourceID" - }, - "id": 1874, - "name": "Identifier", - "src": "14824:10:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1792, - "type": "bytes32", - "value": "dataHash" - }, - "id": 1875, - "name": "Identifier", - "src": "14864:8:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "address[] memory", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "function (uint256) pure returns (address[] memory)" - }, - "children": [ - { - "attributes": { - "length": null, - "type": "address[]" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 1876, - "name": "ElementaryTypeName", - "src": "14906:7:4" - } - ], - "id": 1877, - "name": "ArrayTypeName", - "src": "14906:9:4" - } - ], - "id": 1878, - "name": "NewExpression", - "src": "14902:13:4" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "31", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 1", - "value": "1" - }, - "id": 1879, - "name": "Literal", - "src": "14916:1:4" - } - ], - "id": 1880, - "name": "FunctionCall", - "src": "14902:16:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "address[] memory", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "function (uint256) pure returns (address[] memory)" - }, - "children": [ - { - "attributes": { - "length": null, - "type": "address[]" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 1881, - "name": "ElementaryTypeName", - "src": "14951:7:4" - } - ], - "id": 1882, - "name": "ArrayTypeName", - "src": "14951:9:4" - } - ], - "id": 1883, - "name": "NewExpression", - "src": "14947:13:4" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 1884, - "name": "Literal", - "src": "14961:1:4" - } - ], - "id": 1885, - "name": "FunctionCall", - "src": "14947:16:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "member_name": "Active", - "referencedDeclaration": null, - "type": "enum Bridge.ProposalStatus" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1131, - "type": "type(enum Bridge.ProposalStatus)", - "value": "ProposalStatus" - }, - "id": 1886, - "name": "Identifier", - "src": "14991:14:4" - } - ], - "id": 1887, - "name": "MemberAccess", - "src": "14991:21:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "number", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": -4, - "type": "block", - "value": "block" - }, - "id": 1888, - "name": "Identifier", - "src": "15047:5:4" - } - ], - "id": 1889, - "name": "MemberAccess", - "src": "15047:12:4" - } - ], - "id": 1890, - "name": "FunctionCall", - "src": "14783:295:4" - } - ], - "id": 1891, - "name": "Assignment", - "src": "14748:330:4" - } - ], - "id": 1892, - "name": "ExpressionStatement", - "src": "14748:330:4" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "_yesVotes", - "referencedDeclaration": 1138, - "type": "address[] storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1815, - "type": "struct Bridge.Proposal storage pointer", - "value": "proposal" - }, - "id": 1893, - "name": "Identifier", - "src": "15093:8:4" - } - ], - "id": 1896, - "name": "MemberAccess", - "src": "15093:18:4" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 1895, - "name": "Literal", - "src": "15112:1:4" - } - ], - "id": 1897, - "name": "IndexAccess", - "src": "15093:21:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "referencedDeclaration": null, - "type": "address payable" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": -15, - "type": "msg", - "value": "msg" - }, - "id": 1898, - "name": "Identifier", - "src": "15117:3:4" - } - ], - "id": 1899, - "name": "MemberAccess", - "src": "15117:10:4" - } - ], - "id": 1900, - "name": "Assignment", - "src": "15093:34:4" - } - ], - "id": 1901, - "name": "ExpressionStatement", - "src": "15093:34:4" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 1206, - "type": "function (uint8,uint64,enum Bridge.ProposalStatus,bytes32,bytes32)", - "value": "ProposalEvent" - }, - "id": 1902, - "name": "Identifier", - "src": "15146:13:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1786, - "type": "uint8", - "value": "chainID" - }, - "id": 1903, - "name": "Identifier", - "src": "15160:7:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1788, - "type": "uint64", - "value": "depositNonce" - }, - "id": 1904, - "name": "Identifier", - "src": "15169:12:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "member_name": "Active", - "referencedDeclaration": null, - "type": "enum Bridge.ProposalStatus" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1131, - "type": "type(enum Bridge.ProposalStatus)", - "value": "ProposalStatus" - }, - "id": 1905, - "name": "Identifier", - "src": "15183:14:4" - } - ], - "id": 1906, - "name": "MemberAccess", - "src": "15183:21:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1790, - "type": "bytes32", - "value": "resourceID" - }, - "id": 1907, - "name": "Identifier", - "src": "15206:10:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1792, - "type": "bytes32", - "value": "dataHash" - }, - "id": 1908, - "name": "Identifier", - "src": "15218:8:4" - } - ], - "id": 1909, - "name": "FunctionCall", - "src": "15146:81:4" - } - ], - "id": 1910, - "name": "EmitStatement", - "src": "15141:86:4" - } - ], - "id": 1911, - "name": "Block", - "src": "14703:535:4" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": ">", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 2455, - "type": "function (uint256,uint256) pure returns (uint256)", - "value": "sub" - }, - "id": 1912, - "name": "Identifier", - "src": "15262:3:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "number", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": -4, - "type": "block", - "value": "block" - }, - "id": 1913, - "name": "Identifier", - "src": "15266:5:4" - } - ], - "id": 1914, - "name": "MemberAccess", - "src": "15266:12:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "_proposedBlock", - "referencedDeclaration": 1145, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1815, - "type": "struct Bridge.Proposal storage pointer", - "value": "proposal" - }, - "id": 1915, - "name": "Identifier", - "src": "15280:8:4" - } - ], - "id": 1916, - "name": "MemberAccess", - "src": "15280:23:4" - } - ], - "id": 1917, - "name": "FunctionCall", - "src": "15262:42:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1122, - "type": "uint256", - "value": "_expiry" - }, - "id": 1918, - "name": "Identifier", - "src": "15307:7:4" - } - ], - "id": 1919, - "name": "BinaryOperation", - "src": "15262:52:4" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "enum Bridge.ProposalStatus" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "member_name": "_status", - "referencedDeclaration": 1143, - "type": "enum Bridge.ProposalStatus" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1815, - "type": "struct Bridge.Proposal storage pointer", - "value": "proposal" - }, - "id": 1920, - "name": "Identifier", - "src": "15500:8:4" - } - ], - "id": 1922, - "name": "MemberAccess", - "src": "15500:16:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "member_name": "Cancelled", - "referencedDeclaration": null, - "type": "enum Bridge.ProposalStatus" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1131, - "type": "type(enum Bridge.ProposalStatus)", - "value": "ProposalStatus" - }, - "id": 1923, - "name": "Identifier", - "src": "15519:14:4" - } - ], - "id": 1924, - "name": "MemberAccess", - "src": "15519:24:4" - } - ], - "id": 1925, - "name": "Assignment", - "src": "15500:43:4" - } - ], - "id": 1926, - "name": "ExpressionStatement", - "src": "15500:43:4" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1206, - "type": "function (uint8,uint64,enum Bridge.ProposalStatus,bytes32,bytes32)", - "value": "ProposalEvent" - }, - "id": 1927, - "name": "Identifier", - "src": "15566:13:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1786, - "type": "uint8", - "value": "chainID" - }, - "id": 1928, - "name": "Identifier", - "src": "15580:7:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1788, - "type": "uint64", - "value": "depositNonce" - }, - "id": 1929, - "name": "Identifier", - "src": "15589:12:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "member_name": "Cancelled", - "referencedDeclaration": null, - "type": "enum Bridge.ProposalStatus" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1131, - "type": "type(enum Bridge.ProposalStatus)", - "value": "ProposalStatus" - }, - "id": 1930, - "name": "Identifier", - "src": "15603:14:4" - } - ], - "id": 1931, - "name": "MemberAccess", - "src": "15603:24:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1790, - "type": "bytes32", - "value": "resourceID" - }, - "id": 1932, - "name": "Identifier", - "src": "15629:10:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1792, - "type": "bytes32", - "value": "dataHash" - }, - "id": 1933, - "name": "Identifier", - "src": "15641:8:4" - } - ], - "id": 1934, - "name": "FunctionCall", - "src": "15566:84:4" - } - ], - "id": 1935, - "name": "EmitStatement", - "src": "15561:89:4" - } - ], - "id": 1936, - "name": "Block", - "src": "15316:349:4" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_e3209b3b3221a11cdef33af435affcc74bff38eb4aaafc629c451edb5bb6cf58", - "typeString": "literal_string \"datahash mismatch\"" - } - ], - "overloadedDeclarations": [ - -18, -18 - ], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 1937, - "name": "Identifier", - "src": "15689:7:4" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1792, - "type": "bytes32", - "value": "dataHash" - }, - "id": 1938, - "name": "Identifier", - "src": "15697:8:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "_dataHash", - "referencedDeclaration": 1135, - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1815, - "type": "struct Bridge.Proposal storage pointer", - "value": "proposal" - }, - "id": 1939, - "name": "Identifier", - "src": "15709:8:4" - } - ], - "id": 1940, - "name": "MemberAccess", - "src": "15709:18:4" - } - ], - "id": 1941, - "name": "BinaryOperation", - "src": "15697:30:4" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "6461746168617368206d69736d61746368", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"datahash mismatch\"", - "value": "datahash mismatch" - }, - "id": 1942, - "name": "Literal", - "src": "15729:19:4" - } - ], - "id": 1943, - "name": "FunctionCall", - "src": "15689:60:4" - } - ], - "id": 1944, - "name": "ExpressionStatement", - "src": "15689:60:4" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "push", - "referencedDeclaration": null, - "type": "function (address)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "_yesVotes", - "referencedDeclaration": 1138, - "type": "address[] storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1815, - "type": "struct Bridge.Proposal storage pointer", - "value": "proposal" - }, - "id": 1945, - "name": "Identifier", - "src": "15767:8:4" - } - ], - "id": 1948, - "name": "MemberAccess", - "src": "15767:18:4" - } - ], - "id": 1949, - "name": "MemberAccess", - "src": "15767:23:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "referencedDeclaration": null, - "type": "address payable" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": -15, - "type": "msg", - "value": "msg" - }, - "id": 1950, - "name": "Identifier", - "src": "15791:3:4" - } - ], - "id": 1951, - "name": "MemberAccess", - "src": "15791:10:4" - } - ], - "id": 1952, - "name": "FunctionCall", - "src": "15767:35:4" - } - ], - "id": 1953, - "name": "ExpressionStatement", - "src": "15767:35:4" - } - ], - "id": 1954, - "name": "Block", - "src": "15671:146:4" - } - ], - "id": 1955, - "name": "IfStatement", - "src": "15258:559:4" - } - ], - "id": 1956, - "name": "Block", - "src": "15244:584:4" - } - ], - "id": 1957, - "name": "IfStatement", - "src": "14670:1158:4" + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" }, { - "attributes": { - "falseBody": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "_status", - "referencedDeclaration": 1143, - "type": "enum Bridge.ProposalStatus" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1815, - "type": "struct Bridge.Proposal storage pointer", - "value": "proposal" - }, - "id": 1958, - "name": "Identifier", - "src": "15841:8:4" - } - ], - "id": 1959, - "name": "MemberAccess", - "src": "15841:16:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "member_name": "Cancelled", - "referencedDeclaration": null, - "type": "enum Bridge.ProposalStatus" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1131, - "type": "type(enum Bridge.ProposalStatus)", - "value": "ProposalStatus" - }, - "id": 1960, - "name": "Identifier", - "src": "15861:14:4" - } - ], - "id": 1961, - "name": "MemberAccess", - "src": "15861:24:4" - } - ], - "id": 1962, - "name": "BinaryOperation", - "src": "15841:44:4" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "mapping(address => bool)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "mapping(bytes32 => mapping(address => bool))" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1174, - "type": "mapping(uint72 => mapping(bytes32 => mapping(address => bool)))", - "value": "_hasVotedOnProposal" - }, - "id": 1963, - "name": "Identifier", - "src": "15901:19:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1800, - "type": "uint72", - "value": "nonceAndID" - }, - "id": 1964, - "name": "Identifier", - "src": "15921:10:4" - } - ], - "id": 1968, - "name": "IndexAccess", - "src": "15901:31:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1792, - "type": "bytes32", - "value": "dataHash" - }, - "id": 1965, - "name": "Identifier", - "src": "15933:8:4" - } - ], - "id": 1969, - "name": "IndexAccess", - "src": "15901:41:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "referencedDeclaration": null, - "type": "address payable" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": -15, - "type": "msg", - "value": "msg" - }, - "id": 1966, - "name": "Identifier", - "src": "15943:3:4" - } - ], - "id": 1967, - "name": "MemberAccess", - "src": "15943:10:4" - } - ], - "id": 1970, - "name": "IndexAccess", - "src": "15901:53:4" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "74727565", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "bool", - "type": "bool", - "value": "true" - }, - "id": 1971, - "name": "Literal", - "src": "15957:4:4" - } - ], - "id": 1972, - "name": "Assignment", - "src": "15901:60:4" - } - ], - "id": 1973, - "name": "ExpressionStatement", - "src": "15901:60:4" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 1216, - "type": "function (uint8,uint64,enum Bridge.ProposalStatus,bytes32)", - "value": "ProposalVote" - }, - "id": 1974, - "name": "Identifier", - "src": "15980:12:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1786, - "type": "uint8", - "value": "chainID" - }, - "id": 1975, - "name": "Identifier", - "src": "15993:7:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1788, - "type": "uint64", - "value": "depositNonce" - }, - "id": 1976, - "name": "Identifier", - "src": "16002:12:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "_status", - "referencedDeclaration": 1143, - "type": "enum Bridge.ProposalStatus" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1815, - "type": "struct Bridge.Proposal storage pointer", - "value": "proposal" - }, - "id": 1977, - "name": "Identifier", - "src": "16016:8:4" - } - ], - "id": 1978, - "name": "MemberAccess", - "src": "16016:16:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1790, - "type": "bytes32", - "value": "resourceID" - }, - "id": 1979, - "name": "Identifier", - "src": "16034:10:4" - } - ], - "id": 1980, - "name": "FunctionCall", - "src": "15980:65:4" - } - ], - "id": 1981, - "name": "EmitStatement", - "src": "15975:70:4" - }, - { - "attributes": { - "falseBody": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "||", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "<=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1114, - "type": "uint256", - "value": "_relayerThreshold" - }, - "id": 1982, - "name": "Identifier", - "src": "16189:17:4" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "31", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 1", - "value": "1" - }, - "id": 1983, - "name": "Literal", - "src": "16210:1:4" - } - ], - "id": 1984, - "name": "BinaryOperation", - "src": "16189:22:4" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": ">=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "length", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "_yesVotes", - "referencedDeclaration": 1138, - "type": "address[] storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1815, - "type": "struct Bridge.Proposal storage pointer", - "value": "proposal" - }, - "id": 1985, - "name": "Identifier", - "src": "16215:8:4" - } - ], - "id": 1986, - "name": "MemberAccess", - "src": "16215:18:4" - } - ], - "id": 1987, - "name": "MemberAccess", - "src": "16215:25:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1114, - "type": "uint256", - "value": "_relayerThreshold" - }, - "id": 1988, - "name": "Identifier", - "src": "16244:17:4" - } - ], - "id": 1989, - "name": "BinaryOperation", - "src": "16215:46:4" - } - ], - "id": 1990, - "name": "BinaryOperation", - "src": "16189:72:4" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "enum Bridge.ProposalStatus" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "member_name": "_status", - "referencedDeclaration": 1143, - "type": "enum Bridge.ProposalStatus" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1815, - "type": "struct Bridge.Proposal storage pointer", - "value": "proposal" - }, - "id": 1991, - "name": "Identifier", - "src": "16281:8:4" - } - ], - "id": 1993, - "name": "MemberAccess", - "src": "16281:16:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "member_name": "Passed", - "referencedDeclaration": null, - "type": "enum Bridge.ProposalStatus" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1131, - "type": "type(enum Bridge.ProposalStatus)", - "value": "ProposalStatus" - }, - "id": 1994, - "name": "Identifier", - "src": "16300:14:4" - } - ], - "id": 1995, - "name": "MemberAccess", - "src": "16300:21:4" - } - ], - "id": 1996, - "name": "Assignment", - "src": "16281:40:4" - } - ], - "id": 1997, - "name": "ExpressionStatement", - "src": "16281:40:4" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1206, - "type": "function (uint8,uint64,enum Bridge.ProposalStatus,bytes32,bytes32)", - "value": "ProposalEvent" - }, - "id": 1998, - "name": "Identifier", - "src": "16345:13:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1786, - "type": "uint8", - "value": "chainID" - }, - "id": 1999, - "name": "Identifier", - "src": "16359:7:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1788, - "type": "uint64", - "value": "depositNonce" - }, - "id": 2000, - "name": "Identifier", - "src": "16368:12:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "member_name": "Passed", - "referencedDeclaration": null, - "type": "enum Bridge.ProposalStatus" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1131, - "type": "type(enum Bridge.ProposalStatus)", - "value": "ProposalStatus" - }, - "id": 2001, - "name": "Identifier", - "src": "16382:14:4" - } - ], - "id": 2002, - "name": "MemberAccess", - "src": "16382:21:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1790, - "type": "bytes32", - "value": "resourceID" - }, - "id": 2003, - "name": "Identifier", - "src": "16405:10:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1792, - "type": "bytes32", - "value": "dataHash" - }, - "id": 2004, - "name": "Identifier", - "src": "16417:8:4" - } - ], - "id": 2005, - "name": "FunctionCall", - "src": "16345:81:4" - } - ], - "id": 2006, - "name": "EmitStatement", - "src": "16340:86:4" - } - ], - "id": 2007, - "name": "Block", - "src": "16263:178:4" - } - ], - "id": 2008, - "name": "IfStatement", - "src": "16185:256:4" - } - ], - "id": 2009, - "name": "Block", - "src": "15887:564:4" - } - ], - "id": 2010, - "name": "IfStatement", - "src": "15837:614:4" + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } - ], - "id": 2011, - "name": "Block", - "src": "14221:2237:4" - } - ], - "id": 2012, - "name": "FunctionDefinition", - "src": "14089:2369:4" - }, - { - "attributes": { - "functionSelector": "17f03ce5", - "implemented": true, - "isConstructor": false, - "kind": "function", - "name": "cancelProposal", - "overrides": null, - "scope": 2244, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "text": "@notice Executes a deposit proposal that is considered passed using a specified handler contract.\n@notice Only callable by relayers when Bridge is not paused.\n@param chainID ID of chain deposit originated from.\n@param depositNonce ID of deposited generated by origin Bridge contract.\n@param dataHash Hash of data originally provided when deposit was made.\n@notice Proposal must be past expiry threshold.\n@notice Emits {ProposalEvent} event with status {Cancelled}." + ], + "id": 906, + "name": "_executeProposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1160, + "src": "16785:16:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_calldata_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (bytes calldata,bytes32) returns (bool)" + } }, - "id": 2013, - "name": "StructuredDocumentation", - "src": "16464:532:4" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "chainID", - "overrides": null, - "scope": 2087, - "stateVariable": false, - "storageLocation": "default", - "type": "uint8", - "value": null, - "visibility": "internal" + "id": 909, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16785:34:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 945, + "nodeType": "Block", + "src": "17052:334:0", + "statements": [ + { + "expression": { + "id": 933, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 928, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 738, + "src": "17188:8:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$47_storage_ptr", + "typeString": "struct Bridge.Proposal storage pointer" + } }, - "children": [ - { - "attributes": { - "name": "uint8", - "type": "uint8" - }, - "id": 2014, - "name": "ElementaryTypeName", - "src": "17025:5:4" - } - ], - "id": 2015, - "name": "VariableDeclaration", - "src": "17025:13:4" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "depositNonce", - "overrides": null, - "scope": 2087, - "stateVariable": false, - "storageLocation": "default", - "type": "uint64", - "value": null, - "visibility": "internal" + "id": 930, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "17197:7:0", + "memberName": "_status", + "nodeType": "MemberAccess", + "referencedDeclaration": 44, + "src": "17188:16:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ProposalStatus_$31", + "typeString": "enum Bridge.ProposalStatus" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 931, + "name": "ProposalStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 31, + "src": "17207:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$31_$", + "typeString": "type(enum Bridge.ProposalStatus)" + } }, - "children": [ - { - "attributes": { - "name": "uint64", - "type": "uint64" - }, - "id": 2016, - "name": "ElementaryTypeName", - "src": "17040:6:4" - } - ], - "id": 2017, - "name": "VariableDeclaration", - "src": "17040:19:4" + "id": 932, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "17222:6:0", + "memberName": "Passed", + "nodeType": "MemberAccess", + "referencedDeclaration": 28, + "src": "17207:21:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ProposalStatus_$31", + "typeString": "enum Bridge.ProposalStatus" + } + }, + "src": "17188:40:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ProposalStatus_$31", + "typeString": "enum Bridge.ProposalStatus" + } }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "dataHash", - "overrides": null, - "scope": 2087, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" + "id": 934, + "nodeType": "ExpressionStatement", + "src": "17188:40:0" + }, + { + "eventCall": { + "arguments": [ + { + "id": 936, + "name": "chainID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 692, + "src": "17270:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 2018, - "name": "ElementaryTypeName", - "src": "17061:7:4" - } - ], - "id": 2019, - "name": "VariableDeclaration", - "src": "17061:16:4" - } - ], - "id": 2020, - "name": "ParameterList", - "src": "17024:54:4" - }, - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 2023, - "name": "ParameterList", - "src": "17105:0:4" - }, - { - "attributes": { - "arguments": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1235, - "type": "modifier ()", - "value": "onlyAdminOrRelayer" + { + "id": 937, + "name": "depositNonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 694, + "src": "17279:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } }, - "id": 2021, - "name": "Identifier", - "src": "17086:18:4" - } - ], - "id": 2022, - "name": "ModifierInvocation", - "src": "17086:18:4" - }, - { - "children": [ - { - "attributes": { - "assignments": [2025] + { + "expression": { + "id": 938, + "name": "ProposalStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 31, + "src": "17293:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$31_$", + "typeString": "type(enum Bridge.ProposalStatus)" + } + }, + "id": 939, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "17308:6:0", + "memberName": "Passed", + "nodeType": "MemberAccess", + "referencedDeclaration": 28, + "src": "17293:21:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ProposalStatus_$31", + "typeString": "enum Bridge.ProposalStatus" + } }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "nonceAndID", - "overrides": null, - "scope": 2086, - "stateVariable": false, - "storageLocation": "default", - "type": "uint72", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint72", - "type": "uint72" - }, - "id": 2024, - "name": "ElementaryTypeName", - "src": "17115:6:4" - } - ], - "id": 2025, - "name": "VariableDeclaration", - "src": "17115:17:4" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "|", - "type": "uint72" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "type": "uint72" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "<<", - "type": "uint72" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "uint72", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(uint72)" - }, - "children": [ - { - "attributes": { - "name": "uint72", - "type": null - }, - "id": 2026, - "name": "ElementaryTypeName", - "src": "17136:6:4" - } - ], - "id": 2027, - "name": "ElementaryTypeNameExpression", - "src": "17136:6:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 2017, - "type": "uint64", - "value": "depositNonce" - }, - "id": 2028, - "name": "Identifier", - "src": "17143:12:4" - } - ], - "id": 2029, - "name": "FunctionCall", - "src": "17136:20:4" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "38", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 8", - "value": "8" - }, - "id": 2030, - "name": "Literal", - "src": "17160:1:4" - } - ], - "id": 2031, - "name": "BinaryOperation", - "src": "17136:25:4" - } - ], - "id": 2032, - "name": "TupleExpression", - "src": "17135:27:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "uint72", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(uint72)" - }, - "children": [ - { - "attributes": { - "name": "uint72", - "type": null - }, - "id": 2033, - "name": "ElementaryTypeName", - "src": "17165:6:4" - } - ], - "id": 2034, - "name": "ElementaryTypeNameExpression", - "src": "17165:6:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 2015, - "type": "uint8", - "value": "chainID" - }, - "id": 2035, - "name": "Identifier", - "src": "17172:7:4" - } - ], - "id": 2036, - "name": "FunctionCall", - "src": "17165:15:4" - } - ], - "id": 2037, - "name": "BinaryOperation", - "src": "17135:45:4" - } - ], - "id": 2038, - "name": "VariableDeclarationStatement", - "src": "17115:65:4" - }, - { - "attributes": { - "assignments": [2040] + { + "id": 940, + "name": "resourceID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 696, + "src": "17316:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "proposal", - "overrides": null, - "scope": 2086, - "stateVariable": false, - "storageLocation": "storage", - "type": "struct Bridge.Proposal", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "Proposal", - "referencedDeclaration": 1146, - "type": "struct Bridge.Proposal" - }, - "id": 2039, - "name": "UserDefinedTypeName", - "src": "17190:8:4" - } - ], - "id": 2040, - "name": "VariableDeclaration", - "src": "17190:25:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct Bridge.Proposal storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "mapping(bytes32 => struct Bridge.Proposal storage ref)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1166, - "type": "mapping(uint72 => mapping(bytes32 => struct Bridge.Proposal storage ref))", - "value": "_proposals" - }, - "id": 2041, - "name": "Identifier", - "src": "17218:10:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 2025, - "type": "uint72", - "value": "nonceAndID" - }, - "id": 2042, - "name": "Identifier", - "src": "17229:10:4" - } - ], - "id": 2043, - "name": "IndexAccess", - "src": "17218:22:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 2019, - "type": "bytes32", - "value": "dataHash" - }, - "id": 2044, - "name": "Identifier", - "src": "17241:8:4" - } - ], - "id": 2045, - "name": "IndexAccess", - "src": "17218:32:4" - } - ], - "id": 2046, - "name": "VariableDeclarationStatement", - "src": "17190:60:4" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_3e17bfcd355060e4798c0d940327e9e82091039c8817e9bd1bb8653b1bc06f8f", - "typeString": "literal_string \"Proposal already cancelled\"" - } - ], - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 2047, - "name": "Identifier", - "src": "17261:7:4" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "_status", - "referencedDeclaration": 1143, - "type": "enum Bridge.ProposalStatus" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 2040, - "type": "struct Bridge.Proposal storage pointer", - "value": "proposal" - }, - "id": 2048, - "name": "Identifier", - "src": "17269:8:4" - } - ], - "id": 2049, - "name": "MemberAccess", - "src": "17269:16:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "member_name": "Cancelled", - "referencedDeclaration": null, - "type": "enum Bridge.ProposalStatus" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1131, - "type": "type(enum Bridge.ProposalStatus)", - "value": "ProposalStatus" - }, - "id": 2050, - "name": "Identifier", - "src": "17289:14:4" - } - ], - "id": 2051, - "name": "MemberAccess", - "src": "17289:24:4" - } - ], - "id": 2052, - "name": "BinaryOperation", - "src": "17269:44:4" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "50726f706f73616c20616c72656164792063616e63656c6c6564", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"Proposal already cancelled\"", - "value": "Proposal already cancelled" - }, - "id": 2053, - "name": "Literal", - "src": "17315:28:4" - } - ], - "id": 2054, - "name": "FunctionCall", - "src": "17261:83:4" - } - ], - "id": 2055, - "name": "ExpressionStatement", - "src": "17261:83:4" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_683f5cd388e83d1592bd1ca665f25f51ebccd4deed2b3fc92e3fe6b96cb47225", - "typeString": "literal_string \"Proposal not at expiry threshold\"" - } - ], - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 2056, - "name": "Identifier", - "src": "17354:7:4" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": ">", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 2455, - "type": "function (uint256,uint256) pure returns (uint256)", - "value": "sub" - }, - "id": 2057, - "name": "Identifier", - "src": "17362:3:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "number", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": -4, - "type": "block", - "value": "block" - }, - "id": 2058, - "name": "Identifier", - "src": "17366:5:4" - } - ], - "id": 2059, - "name": "MemberAccess", - "src": "17366:12:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "_proposedBlock", - "referencedDeclaration": 1145, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 2040, - "type": "struct Bridge.Proposal storage pointer", - "value": "proposal" - }, - "id": 2060, - "name": "Identifier", - "src": "17380:8:4" - } - ], - "id": 2061, - "name": "MemberAccess", - "src": "17380:23:4" - } - ], - "id": 2062, - "name": "FunctionCall", - "src": "17362:42:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1122, - "type": "uint256", - "value": "_expiry" - }, - "id": 2063, - "name": "Identifier", - "src": "17407:7:4" - } - ], - "id": 2064, - "name": "BinaryOperation", - "src": "17362:52:4" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "50726f706f73616c206e6f7420617420657870697279207468726573686f6c64", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"Proposal not at expiry threshold\"", - "value": "Proposal not at expiry threshold" - }, - "id": 2065, - "name": "Literal", - "src": "17416:34:4" - } - ], - "id": 2066, - "name": "FunctionCall", - "src": "17354:97:4" - } - ], - "id": 2067, - "name": "ExpressionStatement", - "src": "17354:97:4" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "enum Bridge.ProposalStatus" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "member_name": "_status", - "referencedDeclaration": 1143, - "type": "enum Bridge.ProposalStatus" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 2040, - "type": "struct Bridge.Proposal storage pointer", - "value": "proposal" - }, - "id": 2068, - "name": "Identifier", - "src": "17462:8:4" - } - ], - "id": 2070, - "name": "MemberAccess", - "src": "17462:16:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "member_name": "Cancelled", - "referencedDeclaration": null, - "type": "enum Bridge.ProposalStatus" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1131, - "type": "type(enum Bridge.ProposalStatus)", - "value": "ProposalStatus" - }, - "id": 2071, - "name": "Identifier", - "src": "17481:14:4" - } - ], - "id": 2072, - "name": "MemberAccess", - "src": "17481:24:4" - } - ], - "id": 2073, - "name": "Assignment", - "src": "17462:43:4" - } + { + "id": 941, + "name": "dataHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 712, + "src": "17328:8:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_enum$_ProposalStatus_$31", + "typeString": "enum Bridge.ProposalStatus" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } ], - "id": 2074, - "name": "ExpressionStatement", - "src": "17462:43:4" + "id": 935, + "name": "ProposalEvent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 101, + "src": "17256:13:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_uint64_$_t_enum$_ProposalStatus_$31_$_t_bytes32_$_t_bytes32_$returns$__$", + "typeString": "function (uint8,uint64,enum Bridge.ProposalStatus,bytes32,bytes32)" + } + }, + "id": 942, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17256:81:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 943, + "nodeType": "EmitStatement", + "src": "17251:86:0" + }, + { + "functionReturnParameters": 704, + "id": 944, + "nodeType": "Return", + "src": "17360:7:0" + } + ] + }, + "id": 946, + "nodeType": "IfStatement", + "src": "16781:605:0", + "trueBody": { + "id": 927, + "nodeType": "Block", + "src": "16821:225:0", + "statements": [ + { + "expression": { + "id": 915, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 910, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 738, + "src": "16844:8:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$47_storage_ptr", + "typeString": "struct Bridge.Proposal storage pointer" + } + }, + "id": 912, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "16853:7:0", + "memberName": "_status", + "nodeType": "MemberAccess", + "referencedDeclaration": 44, + "src": "16844:16:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ProposalStatus_$31", + "typeString": "enum Bridge.ProposalStatus" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 913, + "name": "ProposalStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 31, + "src": "16863:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$31_$", + "typeString": "type(enum Bridge.ProposalStatus)" + } + }, + "id": 914, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "16878:8:0", + "memberName": "Executed", + "nodeType": "MemberAccess", + "referencedDeclaration": 29, + "src": "16863:23:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ProposalStatus_$31", + "typeString": "enum Bridge.ProposalStatus" + } + }, + "src": "16844:42:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ProposalStatus_$31", + "typeString": "enum Bridge.ProposalStatus" + } }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 1206, - "type": "function (uint8,uint64,enum Bridge.ProposalStatus,bytes32,bytes32)", - "value": "ProposalEvent" - }, - "id": 2075, - "name": "Identifier", - "src": "17520:13:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 2015, - "type": "uint8", - "value": "chainID" - }, - "id": 2076, - "name": "Identifier", - "src": "17534:7:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 2017, - "type": "uint64", - "value": "depositNonce" - }, - "id": 2077, - "name": "Identifier", - "src": "17543:12:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "member_name": "Cancelled", - "referencedDeclaration": null, - "type": "enum Bridge.ProposalStatus" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1131, - "type": "type(enum Bridge.ProposalStatus)", - "value": "ProposalStatus" - }, - "id": 2078, - "name": "Identifier", - "src": "17557:14:4" - } - ], - "id": 2079, - "name": "MemberAccess", - "src": "17557:24:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "_resourceID", - "referencedDeclaration": 1133, - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 2040, - "type": "struct Bridge.Proposal storage pointer", - "value": "proposal" - }, - "id": 2080, - "name": "Identifier", - "src": "17583:8:4" - } - ], - "id": 2081, - "name": "MemberAccess", - "src": "17583:20:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "_dataHash", - "referencedDeclaration": 1135, - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 2040, - "type": "struct Bridge.Proposal storage pointer", - "value": "proposal" - }, - "id": 2082, - "name": "Identifier", - "src": "17605:8:4" - } - ], - "id": 2083, - "name": "MemberAccess", - "src": "17605:18:4" - } - ], - "id": 2084, - "name": "FunctionCall", - "src": "17520:104:4" - } + "id": 916, + "nodeType": "ExpressionStatement", + "src": "16844:42:0" + }, + { + "eventCall": { + "arguments": [ + { + "id": 918, + "name": "chainID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 692, + "src": "16928:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "id": 919, + "name": "depositNonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 694, + "src": "16937:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + { + "expression": { + "id": 920, + "name": "ProposalStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 31, + "src": "16951:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$31_$", + "typeString": "type(enum Bridge.ProposalStatus)" + } + }, + "id": 921, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "16966:8:0", + "memberName": "Executed", + "nodeType": "MemberAccess", + "referencedDeclaration": 29, + "src": "16951:23:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ProposalStatus_$31", + "typeString": "enum Bridge.ProposalStatus" + } + }, + { + "id": 922, + "name": "resourceID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 696, + "src": "16976:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 923, + "name": "dataHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 712, + "src": "16988:8:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_enum$_ProposalStatus_$31", + "typeString": "enum Bridge.ProposalStatus" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } ], - "id": 2085, - "name": "EmitStatement", - "src": "17515:109:4" - } - ], - "id": 2086, - "name": "Block", - "src": "17105:527:4" + "id": 917, + "name": "ProposalEvent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 101, + "src": "16914:13:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_uint64_$_t_enum$_ProposalStatus_$31_$_t_bytes32_$_t_bytes32_$returns$__$", + "typeString": "function (uint8,uint64,enum Bridge.ProposalStatus,bytes32,bytes32)" + } + }, + "id": 924, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16914:83:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 925, + "nodeType": "EmitStatement", + "src": "16909:88:0" + }, + { + "functionReturnParameters": 704, + "id": 926, + "nodeType": "Return", + "src": "17020:7:0" + } + ] + } + } + ] + } + } + ] + } + } + ] + }, + "documentation": { + "id": 690, + "nodeType": "StructuredDocumentation", + "src": "13449:606:0", + "text": "@notice When called, {msg.sender} will be marked as voting in favor of proposal.\n@notice Only callable by relayers when Bridge is not paused.\n@param chainID ID of chain deposit originated from.\n@param depositNonce ID of deposited generated by origin Bridge contract.\n@param data Data provided when deposit was made.\n@notice Proposal must not have already been passed or executed.\n@notice {msg.sender} must not have already voted on proposal.\n@notice Emits {ProposalEvent} event with status indicating the proposal status." + }, + "functionSelector": "c0331b3e", + "id": 952, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 701, + "kind": "modifierInvocation", + "modifierName": { + "id": 700, + "name": "onlyRelayers", + "nameLocations": [ + "14169:12:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 156, + "src": "14169:12:0" + }, + "nodeType": "ModifierInvocation", + "src": "14169:12:0" + }, + { + "id": 703, + "kind": "modifierInvocation", + "modifierName": { + "id": 702, + "name": "whenNotPaused", + "nameLocations": [ + "14182:13:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3454, + "src": "14182:13:0" + }, + "nodeType": "ModifierInvocation", + "src": "14182:13:0" + } + ], + "name": "voteProposal", + "nameLocation": "14070:12:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 699, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 692, + "mutability": "mutable", + "name": "chainID", + "nameLocation": "14089:7:0", + "nodeType": "VariableDeclaration", + "scope": 952, + "src": "14083:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 691, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "14083:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 694, + "mutability": "mutable", + "name": "depositNonce", + "nameLocation": "14105:12:0", + "nodeType": "VariableDeclaration", + "scope": 952, + "src": "14098:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 693, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "14098:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 696, + "mutability": "mutable", + "name": "resourceID", + "nameLocation": "14127:10:0", + "nodeType": "VariableDeclaration", + "scope": 952, + "src": "14119:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 695, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "14119:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 698, + "mutability": "mutable", + "name": "data", + "nameLocation": "14154:4:0", + "nodeType": "VariableDeclaration", + "scope": 952, + "src": "14139:19:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 697, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "14139:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "14082:77:0" + }, + "returnParameters": { + "id": 704, + "nodeType": "ParameterList", + "parameters": [], + "src": "14196:0:0" + }, + "scope": 1209, + "src": "14061:3360:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1027, + "nodeType": "Block", + "src": "18079:535:0", + "statements": [ + { + "assignments": [ + 965 + ], + "declarations": [ + { + "constant": false, + "id": 965, + "mutability": "mutable", + "name": "nonceAndID", + "nameLocation": "18097:10:0", + "nodeType": "VariableDeclaration", + "scope": 1027, + "src": "18090:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + }, + "typeName": { + "id": 964, + "name": "uint72", + "nodeType": "ElementaryTypeName", + "src": "18090:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + } + }, + "visibility": "internal" + } + ], + "id": 978, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + }, + "id": 977, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + }, + "id": 971, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 968, + "name": "depositNonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 957, + "src": "18118:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "id": 967, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "18111:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint72_$", + "typeString": "type(uint72)" + }, + "typeName": { + "id": 966, + "name": "uint72", + "nodeType": "ElementaryTypeName", + "src": "18111:6:0", + "typeDescriptions": {} + } + }, + "id": 969, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18111:20:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "38", + "id": 970, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18135:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "src": "18111:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + } + } + ], + "id": 972, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "18110:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + } + }, + "nodeType": "BinaryOperation", + "operator": "|", + "rightExpression": { + "arguments": [ + { + "id": 975, + "name": "chainID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 955, + "src": "18147:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } ], - "id": 2087, - "name": "FunctionDefinition", - "src": "17001:631:4" + "id": 974, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "18140:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint72_$", + "typeString": "type(uint72)" + }, + "typeName": { + "id": 973, + "name": "uint72", + "nodeType": "ElementaryTypeName", + "src": "18140:6:0", + "typeDescriptions": {} + } + }, + "id": 976, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18140:15:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + } }, + "src": "18110:45:0", + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "18090:65:0" + }, + { + "assignments": [ + 981 + ], + "declarations": [ { - "attributes": { - "functionSelector": "4454b20d", - "implemented": true, - "isConstructor": false, - "kind": "function", - "name": "executeProposal", - "overrides": null, - "scope": 2244, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" + "constant": false, + "id": 981, + "mutability": "mutable", + "name": "proposal", + "nameLocation": "18183:8:0", + "nodeType": "VariableDeclaration", + "scope": 1027, + "src": "18166:25:0", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$47_storage_ptr", + "typeString": "struct Bridge.Proposal" + }, + "typeName": { + "id": 980, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 979, + "name": "Proposal", + "nameLocations": [ + "18166:8:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 47, + "src": "18166:8:0" }, - "children": [ - { - "attributes": { - "text": "@notice Executes a deposit proposal that is considered passed using a specified handler contract.\n@notice Only callable by relayers when Bridge is not paused.\n@param chainID ID of chain deposit originated from.\n@param resourceID ResourceID to be used when making deposits.\n@param depositNonce ID of deposited generated by origin Bridge contract.\n@param data Data originally provided when deposit was made.\n@notice Proposal must have Passed status.\n@notice Hash of {data} must equal proposal's {dataHash}.\n@notice Emits {ProposalEvent} event with status {Executed}." - }, - "id": 2088, - "name": "StructuredDocumentation", - "src": "17638:648:4" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "chainID", - "overrides": null, - "scope": 2195, - "stateVariable": false, - "storageLocation": "default", - "type": "uint8", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint8", - "type": "uint8" - }, - "id": 2089, - "name": "ElementaryTypeName", - "src": "18316:5:4" - } - ], - "id": 2090, - "name": "VariableDeclaration", - "src": "18316:13:4" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "depositNonce", - "overrides": null, - "scope": 2195, - "stateVariable": false, - "storageLocation": "default", - "type": "uint64", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint64", - "type": "uint64" - }, - "id": 2091, - "name": "ElementaryTypeName", - "src": "18331:6:4" - } - ], - "id": 2092, - "name": "VariableDeclaration", - "src": "18331:19:4" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "data", - "overrides": null, - "scope": 2195, - "stateVariable": false, - "storageLocation": "calldata", - "type": "bytes", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes", - "type": "bytes" - }, - "id": 2093, - "name": "ElementaryTypeName", - "src": "18352:5:4" - } - ], - "id": 2094, - "name": "VariableDeclaration", - "src": "18352:19:4" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "resourceID", - "overrides": null, - "scope": 2195, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 2095, - "name": "ElementaryTypeName", - "src": "18373:7:4" - } - ], - "id": 2096, - "name": "VariableDeclaration", - "src": "18373:18:4" - } - ], - "id": 2097, - "name": "ParameterList", - "src": "18315:77:4" - }, - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 2102, - "name": "ParameterList", - "src": "18429:0:4" - }, + "referencedDeclaration": 47, + "src": "18166:8:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$47_storage_ptr", + "typeString": "struct Bridge.Proposal" + } + }, + "visibility": "internal" + } + ], + "id": 987, + "initialValue": { + "baseExpression": { + "baseExpression": { + "id": 982, + "name": "_proposals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 68, + "src": "18194:10:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint72_$_t_mapping$_t_bytes32_$_t_struct$_Proposal_$47_storage_$_$", + "typeString": "mapping(uint72 => mapping(bytes32 => struct Bridge.Proposal storage ref))" + } + }, + "id": 984, + "indexExpression": { + "id": 983, + "name": "nonceAndID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 965, + "src": "18205:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18194:22:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$47_storage_$", + "typeString": "mapping(bytes32 => struct Bridge.Proposal storage ref)" + } + }, + "id": 986, + "indexExpression": { + "id": 985, + "name": "dataHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 959, + "src": "18217:8:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18194:32:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$47_storage", + "typeString": "struct Bridge.Proposal storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "18166:60:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_enum$_ProposalStatus_$31", + "typeString": "enum Bridge.ProposalStatus" + }, + "id": 993, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 989, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 981, + "src": "18247:8:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$47_storage_ptr", + "typeString": "struct Bridge.Proposal storage pointer" + } + }, + "id": 990, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18256:7:0", + "memberName": "_status", + "nodeType": "MemberAccess", + "referencedDeclaration": 44, + "src": "18247:16:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ProposalStatus_$31", + "typeString": "enum Bridge.ProposalStatus" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "id": 991, + "name": "ProposalStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 31, + "src": "18267:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$31_$", + "typeString": "type(enum Bridge.ProposalStatus)" + } + }, + "id": 992, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "18282:9:0", + "memberName": "Cancelled", + "nodeType": "MemberAccess", + "referencedDeclaration": 30, + "src": "18267:24:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ProposalStatus_$31", + "typeString": "enum Bridge.ProposalStatus" + } + }, + "src": "18247:44:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "50726f706f73616c20616c72656164792063616e63656c6c6564", + "id": 994, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18293:28:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3e17bfcd355060e4798c0d940327e9e82091039c8817e9bd1bb8653b1bc06f8f", + "typeString": "literal_string \"Proposal already cancelled\"" + }, + "value": "Proposal already cancelled" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3e17bfcd355060e4798c0d940327e9e82091039c8817e9bd1bb8653b1bc06f8f", + "typeString": "literal_string \"Proposal already cancelled\"" + } + ], + "id": 988, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "18239:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 995, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18239:83:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 996, + "nodeType": "ExpressionStatement", + "src": "18239:83:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1005, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ { - "attributes": { - "arguments": null + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1002, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 998, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967292, + "src": "18342:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1242, - "type": "modifier ()", - "value": "onlyRelayers" - }, - "id": 2098, - "name": "Identifier", - "src": "18402:12:4" - } - ], - "id": 2099, - "name": "ModifierInvocation", - "src": "18402:12:4" - }, - { - "attributes": { - "arguments": null + "id": 999, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18348:6:0", + "memberName": "number", + "nodeType": "MemberAccess", + "src": "18342:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "expression": { + "id": 1000, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 981, + "src": "18357:8:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$47_storage_ptr", + "typeString": "struct Bridge.Proposal storage pointer" + } }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 2375, - "type": "modifier ()", - "value": "whenNotPaused" - }, - "id": 2100, - "name": "Identifier", - "src": "18415:13:4" - } - ], - "id": 2101, - "name": "ModifierInvocation", - "src": "18415:13:4" - }, - { - "children": [ - { - "attributes": { - "assignments": [2104] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "handler", - "overrides": null, - "scope": 2194, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 2103, - "name": "ElementaryTypeName", - "src": "18439:7:4" - } - ], - "id": 2104, - "name": "VariableDeclaration", - "src": "18439:15:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1154, - "type": "mapping(bytes32 => address)", - "value": "_resourceIDToHandlerAddress" - }, - "id": 2105, - "name": "Identifier", - "src": "18457:27:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 2096, - "type": "bytes32", - "value": "resourceID" - }, - "id": 2106, - "name": "Identifier", - "src": "18485:10:4" - } - ], - "id": 2107, - "name": "IndexAccess", - "src": "18457:39:4" - } - ], - "id": 2108, - "name": "VariableDeclarationStatement", - "src": "18439:57:4" - }, - { - "attributes": { - "assignments": [2110] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "nonceAndID", - "overrides": null, - "scope": 2194, - "stateVariable": false, - "storageLocation": "default", - "type": "uint72", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint72", - "type": "uint72" - }, - "id": 2109, - "name": "ElementaryTypeName", - "src": "18506:6:4" - } - ], - "id": 2110, - "name": "VariableDeclaration", - "src": "18506:17:4" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "|", - "type": "uint72" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "type": "uint72" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint72", - "typeString": "uint72" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "<<", - "type": "uint72" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "uint72", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(uint72)" - }, - "children": [ - { - "attributes": { - "name": "uint72", - "type": null - }, - "id": 2111, - "name": "ElementaryTypeName", - "src": "18527:6:4" - } - ], - "id": 2112, - "name": "ElementaryTypeNameExpression", - "src": "18527:6:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 2092, - "type": "uint64", - "value": "depositNonce" - }, - "id": 2113, - "name": "Identifier", - "src": "18534:12:4" - } - ], - "id": 2114, - "name": "FunctionCall", - "src": "18527:20:4" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "38", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 8", - "value": "8" - }, - "id": 2115, - "name": "Literal", - "src": "18551:1:4" - } - ], - "id": 2116, - "name": "BinaryOperation", - "src": "18527:25:4" - } - ], - "id": 2117, - "name": "TupleExpression", - "src": "18526:27:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "uint72", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(uint72)" - }, - "children": [ - { - "attributes": { - "name": "uint72", - "type": null - }, - "id": 2118, - "name": "ElementaryTypeName", - "src": "18556:6:4" - } - ], - "id": 2119, - "name": "ElementaryTypeNameExpression", - "src": "18556:6:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 2090, - "type": "uint8", - "value": "chainID" - }, - "id": 2120, - "name": "Identifier", - "src": "18563:7:4" - } - ], - "id": 2121, - "name": "FunctionCall", - "src": "18556:15:4" - } - ], - "id": 2122, - "name": "BinaryOperation", - "src": "18526:45:4" - } - ], - "id": 2123, - "name": "VariableDeclarationStatement", - "src": "18506:65:4" - }, - { - "attributes": { - "assignments": [2125] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "dataHash", - "overrides": null, - "scope": 2194, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 2124, - "name": "ElementaryTypeName", - "src": "18581:7:4" - } - ], - "id": 2125, - "name": "VariableDeclaration", - "src": "18581:16:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "bytes32", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": -8, - "type": "function (bytes memory) pure returns (bytes32)", - "value": "keccak256" - }, - "id": 2126, - "name": "Identifier", - "src": "18600:9:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "bytes memory", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "member_name": "encodePacked", - "referencedDeclaration": null, - "type": "function () pure returns (bytes memory)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": -1, - "type": "abi", - "value": "abi" - }, - "id": 2127, - "name": "Identifier", - "src": "18610:3:4" - } - ], - "id": 2128, - "name": "MemberAccess", - "src": "18610:16:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 2104, - "type": "address", - "value": "handler" - }, - "id": 2129, - "name": "Identifier", - "src": "18627:7:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 2094, - "type": "bytes calldata", - "value": "data" - }, - "id": 2130, - "name": "Identifier", - "src": "18636:4:4" - } - ], - "id": 2131, - "name": "FunctionCall", - "src": "18610:31:4" - } - ], - "id": 2132, - "name": "FunctionCall", - "src": "18600:42:4" - } - ], - "id": 2133, - "name": "VariableDeclarationStatement", - "src": "18581:61:4" - }, - { - "attributes": { - "assignments": [2135] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "proposal", - "overrides": null, - "scope": 2194, - "stateVariable": false, - "storageLocation": "storage", - "type": "struct Bridge.Proposal", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "Proposal", - "referencedDeclaration": 1146, - "type": "struct Bridge.Proposal" - }, - "id": 2134, - "name": "UserDefinedTypeName", - "src": "18652:8:4" - } - ], - "id": 2135, - "name": "VariableDeclaration", - "src": "18652:25:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct Bridge.Proposal storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "mapping(bytes32 => struct Bridge.Proposal storage ref)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1166, - "type": "mapping(uint72 => mapping(bytes32 => struct Bridge.Proposal storage ref))", - "value": "_proposals" - }, - "id": 2136, - "name": "Identifier", - "src": "18680:10:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 2110, - "type": "uint72", - "value": "nonceAndID" - }, - "id": 2137, - "name": "Identifier", - "src": "18691:10:4" - } - ], - "id": 2138, - "name": "IndexAccess", - "src": "18680:22:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 2125, - "type": "bytes32", - "value": "dataHash" - }, - "id": 2139, - "name": "Identifier", - "src": "18703:8:4" - } - ], - "id": 2140, - "name": "IndexAccess", - "src": "18680:32:4" - } - ], - "id": 2141, - "name": "VariableDeclarationStatement", - "src": "18652:60:4" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_00b04c534306f551d2ead1f9f63f0158b74c6c6e51741a5b803ded09eea1e088", - "typeString": "literal_string \"proposal already transferred\"" - } - ], - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 2142, - "name": "Identifier", - "src": "18723:7:4" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "_status", - "referencedDeclaration": 1143, - "type": "enum Bridge.ProposalStatus" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 2135, - "type": "struct Bridge.Proposal storage pointer", - "value": "proposal" - }, - "id": 2143, - "name": "Identifier", - "src": "18731:8:4" - } - ], - "id": 2144, - "name": "MemberAccess", - "src": "18731:16:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "member_name": "Passed", - "referencedDeclaration": null, - "type": "enum Bridge.ProposalStatus" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1131, - "type": "type(enum Bridge.ProposalStatus)", - "value": "ProposalStatus" - }, - "id": 2145, - "name": "Identifier", - "src": "18751:14:4" - } - ], - "id": 2146, - "name": "MemberAccess", - "src": "18751:21:4" - } - ], - "id": 2147, - "name": "BinaryOperation", - "src": "18731:41:4" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "70726f706f73616c20616c7265616479207472616e73666572726564", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"proposal already transferred\"", - "value": "proposal already transferred" - }, - "id": 2148, - "name": "Literal", - "src": "18774:30:4" - } - ], - "id": 2149, - "name": "FunctionCall", - "src": "18723:82:4" - } - ], - "id": 2150, - "name": "ExpressionStatement", - "src": "18723:82:4" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_37d86f109f909109dc6877be2d485881af52bdb007799914a63fc66c911a84aa", - "typeString": "literal_string \"data doesn't match datahash\"" - } - ], - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 2151, - "name": "Identifier", - "src": "18815:7:4" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 2125, - "type": "bytes32", - "value": "dataHash" - }, - "id": 2152, - "name": "Identifier", - "src": "18823:8:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "_dataHash", - "referencedDeclaration": 1135, - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 2135, - "type": "struct Bridge.Proposal storage pointer", - "value": "proposal" - }, - "id": 2153, - "name": "Identifier", - "src": "18835:8:4" - } - ], - "id": 2154, - "name": "MemberAccess", - "src": "18835:18:4" - } - ], - "id": 2155, - "name": "BinaryOperation", - "src": "18823:30:4" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "6461746120646f65736e2774206d61746368206461746168617368", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"data doesn't match datahash\"", - "value": "data doesn't match datahash" - }, - "id": 2156, - "name": "Literal", - "src": "18855:29:4" - } - ], - "id": 2157, - "name": "FunctionCall", - "src": "18815:70:4" - } - ], - "id": 2158, - "name": "ExpressionStatement", - "src": "18815:70:4" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "enum Bridge.ProposalStatus" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "member_name": "_status", - "referencedDeclaration": 1143, - "type": "enum Bridge.ProposalStatus" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 2135, - "type": "struct Bridge.Proposal storage pointer", - "value": "proposal" - }, - "id": 2159, - "name": "Identifier", - "src": "18896:8:4" - } - ], - "id": 2161, - "name": "MemberAccess", - "src": "18896:16:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "member_name": "Executed", - "referencedDeclaration": null, - "type": "enum Bridge.ProposalStatus" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1131, - "type": "type(enum Bridge.ProposalStatus)", - "value": "ProposalStatus" - }, - "id": 2162, - "name": "Identifier", - "src": "18915:14:4" - } - ], - "id": 2163, - "name": "MemberAccess", - "src": "18915:23:4" - } - ], - "id": 2164, - "name": "Assignment", - "src": "18896:42:4" - } - ], - "id": 2165, - "name": "ExpressionStatement", - "src": "18896:42:4" - }, - { - "attributes": { - "assignments": [2167] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "depositHandler", - "overrides": null, - "scope": 2194, - "stateVariable": false, - "storageLocation": "default", - "type": "contract IDepositExecute", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "IDepositExecute", - "referencedDeclaration": 2280, - "type": "contract IDepositExecute" - }, - "id": 2166, - "name": "UserDefinedTypeName", - "src": "18949:15:4" - } - ], - "id": 2167, - "name": "VariableDeclaration", - "src": "18949:30:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "contract IDepositExecute", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 2280, - "type": "type(contract IDepositExecute)", - "value": "IDepositExecute" - }, - "id": 2168, - "name": "Identifier", - "src": "18982:15:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1154, - "type": "mapping(bytes32 => address)", - "value": "_resourceIDToHandlerAddress" - }, - "id": 2169, - "name": "Identifier", - "src": "18998:27:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "_resourceID", - "referencedDeclaration": 1133, - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 2135, - "type": "struct Bridge.Proposal storage pointer", - "value": "proposal" - }, - "id": 2170, - "name": "Identifier", - "src": "19026:8:4" - } - ], - "id": 2171, - "name": "MemberAccess", - "src": "19026:20:4" - } - ], - "id": 2172, - "name": "IndexAccess", - "src": "18998:49:4" - } - ], - "id": 2173, - "name": "FunctionCall", - "src": "18982:66:4" - } - ], - "id": 2174, - "name": "VariableDeclarationStatement", - "src": "18949:99:4" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "executeProposal", - "referencedDeclaration": 2279, - "type": "function (bytes32,bytes memory) external" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 2167, - "type": "contract IDepositExecute", - "value": "depositHandler" - }, - "id": 2175, - "name": "Identifier", - "src": "19058:14:4" - } - ], - "id": 2177, - "name": "MemberAccess", - "src": "19058:30:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "_resourceID", - "referencedDeclaration": 1133, - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 2135, - "type": "struct Bridge.Proposal storage pointer", - "value": "proposal" - }, - "id": 2178, - "name": "Identifier", - "src": "19089:8:4" - } - ], - "id": 2179, - "name": "MemberAccess", - "src": "19089:20:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 2094, - "type": "bytes calldata", - "value": "data" - }, - "id": 2180, - "name": "Identifier", - "src": "19111:4:4" - } - ], - "id": 2181, - "name": "FunctionCall", - "src": "19058:58:4" - } - ], - "id": 2182, - "name": "ExpressionStatement", - "src": "19058:58:4" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_enum$_ProposalStatus_$1131", - "typeString": "enum Bridge.ProposalStatus" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 1206, - "type": "function (uint8,uint64,enum Bridge.ProposalStatus,bytes32,bytes32)", - "value": "ProposalEvent" - }, - "id": 2183, - "name": "Identifier", - "src": "19132:13:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 2090, - "type": "uint8", - "value": "chainID" - }, - "id": 2184, - "name": "Identifier", - "src": "19146:7:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 2092, - "type": "uint64", - "value": "depositNonce" - }, - "id": 2185, - "name": "Identifier", - "src": "19155:12:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "_status", - "referencedDeclaration": 1143, - "type": "enum Bridge.ProposalStatus" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 2135, - "type": "struct Bridge.Proposal storage pointer", - "value": "proposal" - }, - "id": 2186, - "name": "Identifier", - "src": "19169:8:4" - } - ], - "id": 2187, - "name": "MemberAccess", - "src": "19169:16:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "_resourceID", - "referencedDeclaration": 1133, - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 2135, - "type": "struct Bridge.Proposal storage pointer", - "value": "proposal" - }, - "id": 2188, - "name": "Identifier", - "src": "19187:8:4" - } - ], - "id": 2189, - "name": "MemberAccess", - "src": "19187:20:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "_dataHash", - "referencedDeclaration": 1135, - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 2135, - "type": "struct Bridge.Proposal storage pointer", - "value": "proposal" - }, - "id": 2190, - "name": "Identifier", - "src": "19209:8:4" - } - ], - "id": 2191, - "name": "MemberAccess", - "src": "19209:18:4" - } - ], - "id": 2192, - "name": "FunctionCall", - "src": "19132:96:4" - } - ], - "id": 2193, - "name": "EmitStatement", - "src": "19127:101:4" - } - ], - "id": 2194, - "name": "Block", - "src": "18429:806:4" + "id": 1001, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18366:14:0", + "memberName": "_proposedBlock", + "nodeType": "MemberAccess", + "referencedDeclaration": 46, + "src": "18357:23:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18342:38:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1003, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "18341:40:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 1004, + "name": "_expiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 22, + "src": "18384:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18341:50:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "50726f706f73616c206e6f7420617420657870697279207468726573686f6c64", + "id": 1006, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18393:34:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_683f5cd388e83d1592bd1ca665f25f51ebccd4deed2b3fc92e3fe6b96cb47225", + "typeString": "literal_string \"Proposal not at expiry threshold\"" + }, + "value": "Proposal not at expiry threshold" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_683f5cd388e83d1592bd1ca665f25f51ebccd4deed2b3fc92e3fe6b96cb47225", + "typeString": "literal_string \"Proposal not at expiry threshold\"" + } + ], + "id": 997, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "18333:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1007, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18333:95:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1008, + "nodeType": "ExpressionStatement", + "src": "18333:95:0" + }, + { + "expression": { + "id": 1014, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 1009, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 981, + "src": "18441:8:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$47_storage_ptr", + "typeString": "struct Bridge.Proposal storage pointer" + } + }, + "id": 1011, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "18450:7:0", + "memberName": "_status", + "nodeType": "MemberAccess", + "referencedDeclaration": 44, + "src": "18441:16:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ProposalStatus_$31", + "typeString": "enum Bridge.ProposalStatus" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 1012, + "name": "ProposalStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 31, + "src": "18460:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$31_$", + "typeString": "type(enum Bridge.ProposalStatus)" + } + }, + "id": 1013, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "18475:9:0", + "memberName": "Cancelled", + "nodeType": "MemberAccess", + "referencedDeclaration": 30, + "src": "18460:24:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ProposalStatus_$31", + "typeString": "enum Bridge.ProposalStatus" + } + }, + "src": "18441:43:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ProposalStatus_$31", + "typeString": "enum Bridge.ProposalStatus" + } + }, + "id": 1015, + "nodeType": "ExpressionStatement", + "src": "18441:43:0" + }, + { + "eventCall": { + "arguments": [ + { + "id": 1017, + "name": "chainID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 955, + "src": "18514:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "id": 1018, + "name": "depositNonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 957, + "src": "18523:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + { + "expression": { + "id": 1019, + "name": "ProposalStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 31, + "src": "18537:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$31_$", + "typeString": "type(enum Bridge.ProposalStatus)" + } + }, + "id": 1020, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "18552:9:0", + "memberName": "Cancelled", + "nodeType": "MemberAccess", + "referencedDeclaration": 30, + "src": "18537:24:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ProposalStatus_$31", + "typeString": "enum Bridge.ProposalStatus" + } + }, + { + "expression": { + "id": 1021, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 981, + "src": "18563:8:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$47_storage_ptr", + "typeString": "struct Bridge.Proposal storage pointer" + } + }, + "id": 1022, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18572:11:0", + "memberName": "_resourceID", + "nodeType": "MemberAccess", + "referencedDeclaration": 33, + "src": "18563:20:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 1023, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 981, + "src": "18585:8:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$47_storage_ptr", + "typeString": "struct Bridge.Proposal storage pointer" + } + }, + "id": 1024, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18594:9:0", + "memberName": "_dataHash", + "nodeType": "MemberAccess", + "referencedDeclaration": 35, + "src": "18585:18:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_enum$_ProposalStatus_$31", + "typeString": "enum Bridge.ProposalStatus" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1016, + "name": "ProposalEvent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 101, + "src": "18500:13:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_uint64_$_t_enum$_ProposalStatus_$31_$_t_bytes32_$_t_bytes32_$returns$__$", + "typeString": "function (uint8,uint64,enum Bridge.ProposalStatus,bytes32,bytes32)" + } + }, + "id": 1025, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18500:104:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1026, + "nodeType": "EmitStatement", + "src": "18495:109:0" + } + ] + }, + "documentation": { + "id": 953, + "nodeType": "StructuredDocumentation", + "src": "17429:540:0", + "text": "@notice Executes a deposit proposal that is considered passed using a specified handler contract.\n@notice Only callable by relayers when Bridge is not paused.\n@param chainID ID of chain deposit originated from.\n@param depositNonce ID of deposited generated by origin Bridge contract.\n@param dataHash Hash of data originally provided when deposit was made.\n@notice Proposal must be past expiry threshold.\n@notice Emits {ProposalEvent} event with status {Cancelled}." + }, + "functionSelector": "17f03ce5", + "id": 1028, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 962, + "kind": "modifierInvocation", + "modifierName": { + "id": 961, + "name": "onlyAdminOrRelayer", + "nameLocations": [ + "18060:18:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 143, + "src": "18060:18:0" + }, + "nodeType": "ModifierInvocation", + "src": "18060:18:0" + } + ], + "name": "cancelProposal", + "nameLocation": "17984:14:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 960, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 955, + "mutability": "mutable", + "name": "chainID", + "nameLocation": "18005:7:0", + "nodeType": "VariableDeclaration", + "scope": 1028, + "src": "17999:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 954, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "17999:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 957, + "mutability": "mutable", + "name": "depositNonce", + "nameLocation": "18021:12:0", + "nodeType": "VariableDeclaration", + "scope": 1028, + "src": "18014:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 956, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "18014:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 959, + "mutability": "mutable", + "name": "dataHash", + "nameLocation": "18043:8:0", + "nodeType": "VariableDeclaration", + "scope": 1028, + "src": "18035:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 958, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "18035:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "17998:54:0" + }, + "returnParameters": { + "id": 963, + "nodeType": "ParameterList", + "parameters": [], + "src": "18079:0:0" + }, + "scope": 1209, + "src": "17975:639:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 1125, + "nodeType": "Block", + "src": "19435:822:0", + "statements": [ + { + "assignments": [ + 1045 + ], + "declarations": [ + { + "constant": false, + "id": 1045, + "mutability": "mutable", + "name": "handler", + "nameLocation": "19454:7:0", + "nodeType": "VariableDeclaration", + "scope": 1125, + "src": "19446:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1044, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "19446:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 1049, + "initialValue": { + "baseExpression": { + "id": 1046, + "name": "_resourceIDToHandlerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 55, + "src": "19464:27:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + } + }, + "id": 1048, + "indexExpression": { + "id": 1047, + "name": "resourceID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1037, + "src": "19492:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19464:39:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "19446:57:0" + }, + { + "assignments": [ + 1051 + ], + "declarations": [ + { + "constant": false, + "id": 1051, + "mutability": "mutable", + "name": "nonceAndID", + "nameLocation": "19521:10:0", + "nodeType": "VariableDeclaration", + "scope": 1125, + "src": "19514:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + }, + "typeName": { + "id": 1050, + "name": "uint72", + "nodeType": "ElementaryTypeName", + "src": "19514:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + } + }, + "visibility": "internal" + } + ], + "id": 1064, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + }, + "id": 1063, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + }, + "id": 1057, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 1054, + "name": "depositNonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1033, + "src": "19542:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "id": 1053, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "19535:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint72_$", + "typeString": "type(uint72)" + }, + "typeName": { + "id": 1052, + "name": "uint72", + "nodeType": "ElementaryTypeName", + "src": "19535:6:0", + "typeDescriptions": {} + } + }, + "id": 1055, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19535:20:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "38", + "id": 1056, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19559:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "src": "19535:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + } + } + ], + "id": 1058, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "19534:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + } + }, + "nodeType": "BinaryOperation", + "operator": "|", + "rightExpression": { + "arguments": [ + { + "id": 1061, + "name": "chainID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1031, + "src": "19571:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } ], - "id": 2195, - "name": "FunctionDefinition", - "src": "18291:944:4" + "id": 1060, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "19564:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint72_$", + "typeString": "type(uint72)" + }, + "typeName": { + "id": 1059, + "name": "uint72", + "nodeType": "ElementaryTypeName", + "src": "19564:6:0", + "typeDescriptions": {} + } + }, + "id": 1062, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19564:15:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + } }, + "src": "19534:45:0", + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "19514:65:0" + }, + { + "assignments": [ + 1066 + ], + "declarations": [ { - "attributes": { - "functionSelector": "4603ae38", - "implemented": true, - "isConstructor": false, - "kind": "function", - "name": "transferFunds", - "overrides": null, - "scope": 2244, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - "children": [ - { - "attributes": { - "text": "@notice Transfers eth in the contract to the specified addresses. The parameters addrs and amounts are mapped 1-1.\nThis means that the address at index 0 for addrs will receive the amount (in WEI) from amounts at index 0.\n@param addrs Array of addresses to transfer {amounts} to.\n@param amounts Array of amonuts to transfer to {addrs}." - }, - "id": 2196, - "name": "StructuredDocumentation", - "src": "19241:379:4" - }, + "constant": false, + "id": 1066, + "mutability": "mutable", + "name": "dataHash", + "nameLocation": "19598:8:0", + "nodeType": "VariableDeclaration", + "scope": 1125, + "src": "19590:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1065, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "19590:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 1074, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 1070, + "name": "handler", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "19636:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1071, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1035, + "src": "19645:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "addrs", - "overrides": null, - "scope": 2243, - "stateVariable": false, - "storageLocation": "calldata", - "type": "address payable[]", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "length": null, - "type": "address payable[]" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "payable", - "type": "address payable" - }, - "id": 2197, - "name": "ElementaryTypeName", - "src": "19648:15:4" - } - ], - "id": 2198, - "name": "ArrayTypeName", - "src": "19648:17:4" - } - ], - "id": 2199, - "name": "VariableDeclaration", - "src": "19648:32:4" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "amounts", - "overrides": null, - "scope": 2243, - "stateVariable": false, - "storageLocation": "calldata", - "type": "uint256[]", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "length": null, - "type": "uint256[]" - }, - "children": [ - { - "attributes": { - "name": "uint", - "type": "uint256" - }, - "id": 2200, - "name": "ElementaryTypeName", - "src": "19682:4:4" - } - ], - "id": 2201, - "name": "ArrayTypeName", - "src": "19682:6:4" - } - ], - "id": 2202, - "name": "VariableDeclaration", - "src": "19682:23:4" - } - ], - "id": 2203, - "name": "ParameterList", - "src": "19647:59:4" + "typeIdentifier": "t_address", + "typeString": "address" }, { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 2206, - "name": "ParameterList", - "src": "19726:0:4" - }, + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "expression": { + "id": 1068, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967295, + "src": "19619:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 1069, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "19623:12:0", + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "19619:16:0", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 1072, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19619:31:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 1067, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967288, + "src": "19609:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 1073, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19609:42:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "19590:61:0" + }, + { + "assignments": [ + 1077 + ], + "declarations": [ + { + "constant": false, + "id": 1077, + "mutability": "mutable", + "name": "proposal", + "nameLocation": "19679:8:0", + "nodeType": "VariableDeclaration", + "scope": 1125, + "src": "19662:25:0", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$47_storage_ptr", + "typeString": "struct Bridge.Proposal" + }, + "typeName": { + "id": 1076, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1075, + "name": "Proposal", + "nameLocations": [ + "19662:8:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 47, + "src": "19662:8:0" + }, + "referencedDeclaration": 47, + "src": "19662:8:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$47_storage_ptr", + "typeString": "struct Bridge.Proposal" + } + }, + "visibility": "internal" + } + ], + "id": 1083, + "initialValue": { + "baseExpression": { + "baseExpression": { + "id": 1078, + "name": "_proposals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 68, + "src": "19690:10:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint72_$_t_mapping$_t_bytes32_$_t_struct$_Proposal_$47_storage_$_$", + "typeString": "mapping(uint72 => mapping(bytes32 => struct Bridge.Proposal storage ref))" + } + }, + "id": 1080, + "indexExpression": { + "id": 1079, + "name": "nonceAndID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1051, + "src": "19701:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19690:22:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$47_storage_$", + "typeString": "mapping(bytes32 => struct Bridge.Proposal storage ref)" + } + }, + "id": 1082, + "indexExpression": { + "id": 1081, + "name": "dataHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1066, + "src": "19713:8:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19690:32:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$47_storage", + "typeString": "struct Bridge.Proposal storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "19662:60:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 1088, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 1085, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1077, + "src": "19838:8:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$47_storage_ptr", + "typeString": "struct Bridge.Proposal storage pointer" + } + }, + "id": 1086, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "19847:11:0", + "memberName": "_resourceID", + "nodeType": "MemberAccess", + "referencedDeclaration": 33, + "src": "19838:20:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 1087, + "name": "resourceID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1037, + "src": "19862:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "19838:34:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "77726f6e67207265736f75726365206964", + "id": 1089, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19874:19:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6f5f0c76e88f1c140f3e9c711e5c310ff25b0603c6ab9a22a7e2208facd52f66", + "typeString": "literal_string \"wrong resource id\"" + }, + "value": "wrong resource id" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_6f5f0c76e88f1c140f3e9c711e5c310ff25b0603c6ab9a22a7e2208facd52f66", + "typeString": "literal_string \"wrong resource id\"" + } + ], + "id": 1084, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "19830:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1090, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19830:64:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1091, + "nodeType": "ExpressionStatement", + "src": "19830:64:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_enum$_ProposalStatus_$31", + "typeString": "enum Bridge.ProposalStatus" + }, + "id": 1097, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 1093, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1077, + "src": "19913:8:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$47_storage_ptr", + "typeString": "struct Bridge.Proposal storage pointer" + } + }, + "id": 1094, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "19922:7:0", + "memberName": "_status", + "nodeType": "MemberAccess", + "referencedDeclaration": 44, + "src": "19913:16:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ProposalStatus_$31", + "typeString": "enum Bridge.ProposalStatus" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 1095, + "name": "ProposalStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 31, + "src": "19933:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$31_$", + "typeString": "type(enum Bridge.ProposalStatus)" + } + }, + "id": 1096, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "19948:6:0", + "memberName": "Passed", + "nodeType": "MemberAccess", + "referencedDeclaration": 28, + "src": "19933:21:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ProposalStatus_$31", + "typeString": "enum Bridge.ProposalStatus" + } + }, + "src": "19913:41:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "70726f706f73616c20616c7265616479207472616e736665727265642f6e6f742066696e616c697a656420796574", + "id": 1098, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19956:48:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_99947723bb2aab9f1adafa6512ffb2988cfd5728a2666cb670b21fa44ce4eb80", + "typeString": "literal_string \"proposal already transferred/not finalized yet\"" + }, + "value": "proposal already transferred/not finalized yet" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_99947723bb2aab9f1adafa6512ffb2988cfd5728a2666cb670b21fa44ce4eb80", + "typeString": "literal_string \"proposal already transferred/not finalized yet\"" + } + ], + "id": 1092, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "19905:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1099, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19905:100:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1100, + "nodeType": "ExpressionStatement", + "src": "19905:100:0" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 1103, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1035, + "src": "20051:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + { + "id": 1104, + "name": "resourceID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1037, + "src": "20057:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ { - "attributes": { - "arguments": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1228, - "type": "modifier ()", - "value": "onlyAdmin" - }, - "id": 2204, - "name": "Identifier", - "src": "19716:9:4" - } - ], - "id": 2205, - "name": "ModifierInvocation", - "src": "19716:9:4" + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" }, { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_073bceac60cfe31ff4e1652a9ed1958ffac9b37b9b2d1e976a3ea18c79e0f6fb", - "typeString": "literal_string \"length of address and amounts dismatch\"" - } - ], - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 2207, - "name": "Identifier", - "src": "19736:7:4" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "length", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 2199, - "type": "address payable[] calldata", - "value": "addrs" - }, - "id": 2208, - "name": "Identifier", - "src": "19744:5:4" - } - ], - "id": 2209, - "name": "MemberAccess", - "src": "19744:12:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "length", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 2202, - "type": "uint256[] calldata", - "value": "amounts" - }, - "id": 2210, - "name": "Identifier", - "src": "19760:7:4" - } - ], - "id": 2211, - "name": "MemberAccess", - "src": "19760:14:4" - } - ], - "id": 2212, - "name": "BinaryOperation", - "src": "19744:30:4" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "6c656e677468206f66206164647265737320616e6420616d6f756e7473206469736d61746368", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"length of address and amounts dismatch\"", - "value": "length of address and amounts dismatch" - }, - "id": 2213, - "name": "Literal", - "src": "19776:40:4" - } - ], - "id": 2214, - "name": "FunctionCall", - "src": "19736:81:4" - } - ], - "id": 2215, - "name": "ExpressionStatement", - "src": "19736:81:4" - }, - { - "attributes": { - "assignments": [2217] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "addrCount", - "overrides": null, - "scope": 2242, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint", - "type": "uint256" - }, - "id": 2216, - "name": "ElementaryTypeName", - "src": "19827:4:4" - } - ], - "id": 2217, - "name": "VariableDeclaration", - "src": "19827:14:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "length", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 2199, - "type": "address payable[] calldata", - "value": "addrs" - }, - "id": 2218, - "name": "Identifier", - "src": "19844:5:4" - } - ], - "id": 2219, - "name": "MemberAccess", - "src": "19844:12:4" - } - ], - "id": 2220, - "name": "VariableDeclarationStatement", - "src": "19827:29:4" - }, - { - "children": [ - { - "attributes": { - "assignments": [2222] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "i", - "overrides": null, - "scope": 2241, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint", - "type": "uint256" - }, - "id": 2221, - "name": "ElementaryTypeName", - "src": "19871:4:4" - } - ], - "id": 2222, - "name": "VariableDeclaration", - "src": "19871:6:4" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 2223, - "name": "Literal", - "src": "19880:1:4" - } - ], - "id": 2224, - "name": "VariableDeclarationStatement", - "src": "19871:10:4" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "<", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 2222, - "type": "uint256", - "value": "i" - }, - "id": 2225, - "name": "Identifier", - "src": "19883:1:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 2217, - "type": "uint256", - "value": "addrCount" - }, - "id": 2226, - "name": "Identifier", - "src": "19887:9:4" - } - ], - "id": 2227, - "name": "BinaryOperation", - "src": "19883:13:4" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "++", - "prefix": false, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 2222, - "type": "uint256", - "value": "i" - }, - "id": 2228, - "name": "Identifier", - "src": "19898:1:4" - } - ], - "id": 2229, - "name": "UnaryOperation", - "src": "19898:3:4" - } - ], - "id": 2230, - "name": "ExpressionStatement", - "src": "19898:3:4" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "transfer", - "referencedDeclaration": null, - "type": "function (uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "type": "address payable" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 2199, - "type": "address payable[] calldata", - "value": "addrs" - }, - "id": 2231, - "name": "Identifier", - "src": "19917:5:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 2222, - "type": "uint256", - "value": "i" - }, - "id": 2232, - "name": "Identifier", - "src": "19923:1:4" - } - ], - "id": 2233, - "name": "IndexAccess", - "src": "19917:8:4" - } - ], - "id": 2234, - "name": "MemberAccess", - "src": "19917:17:4" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 2202, - "type": "uint256[] calldata", - "value": "amounts" - }, - "id": 2235, - "name": "Identifier", - "src": "19935:7:4" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 2222, - "type": "uint256", - "value": "i" - }, - "id": 2236, - "name": "Identifier", - "src": "19943:1:4" - } - ], - "id": 2237, - "name": "IndexAccess", - "src": "19935:10:4" - } - ], - "id": 2238, - "name": "FunctionCall", - "src": "19917:29:4" - } - ], - "id": 2239, - "name": "ExpressionStatement", - "src": "19917:29:4" - } - ], - "id": 2240, - "name": "Block", - "src": "19903:54:4" - } - ], - "id": 2241, - "name": "ForStatement", - "src": "19866:91:4" - } - ], - "id": 2242, - "name": "Block", - "src": "19726:237:4" + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } - ], - "id": 2243, - "name": "FunctionDefinition", - "src": "19625:338:4" + ], + "id": 1102, + "name": "_executeProposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1160, + "src": "20034:16:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_calldata_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (bytes calldata,bytes32) returns (bool)" + } + }, + "id": 1105, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20034:34:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "457865637574696f6e206e6f74207375636365737366756c", + "id": 1106, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20070:26:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_35c2d882454253e6997a6106044c4f379bd2b80e16b0fad01935e624ef5bb69d", + "typeString": "literal_string \"Execution not successful\"" + }, + "value": "Execution not successful" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_35c2d882454253e6997a6106044c4f379bd2b80e16b0fad01935e624ef5bb69d", + "typeString": "literal_string \"Execution not successful\"" + } + ], + "id": 1101, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "20026:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1107, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20026:71:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } - ], - "id": 2244, - "name": "ContractDefinition", - "src": "479:19487:4" - } - ], - "id": 2245, - "name": "SourceUnit", - "src": "0:19967:4" - }, - "compiler": { - "name": "solc", - "version": "0.7.0+commit.9e61f92b.Emscripten.clang" - }, - "networks": { - "5": { - "events": { - "0xdbb69440df8433824a026ef190652f29929eb64b4d1d5d2a69be8afe3e6eaed8": { - "anonymous": false, - "inputs": [ + }, + "id": 1108, + "nodeType": "ExpressionStatement", + "src": "20026:71:0" + }, + { + "expression": { + "id": 1114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 1109, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1077, + "src": "20108:8:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$47_storage_ptr", + "typeString": "struct Bridge.Proposal storage pointer" + } + }, + "id": 1111, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "20117:7:0", + "memberName": "_status", + "nodeType": "MemberAccess", + "referencedDeclaration": 44, + "src": "20108:16:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ProposalStatus_$31", + "typeString": "enum Bridge.ProposalStatus" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 1112, + "name": "ProposalStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 31, + "src": "20127:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$31_$", + "typeString": "type(enum Bridge.ProposalStatus)" + } + }, + "id": 1113, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "20142:8:0", + "memberName": "Executed", + "nodeType": "MemberAccess", + "referencedDeclaration": 29, + "src": "20127:23:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ProposalStatus_$31", + "typeString": "enum Bridge.ProposalStatus" + } + }, + "src": "20108:42:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ProposalStatus_$31", + "typeString": "enum Bridge.ProposalStatus" + } + }, + "id": 1115, + "nodeType": "ExpressionStatement", + "src": "20108:42:0" + }, + { + "eventCall": { + "arguments": [ + { + "id": 1117, + "name": "chainID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1031, + "src": "20180:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "id": 1118, + "name": "depositNonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1033, + "src": "20189:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + { + "expression": { + "id": 1119, + "name": "ProposalStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 31, + "src": "20203:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$31_$", + "typeString": "type(enum Bridge.ProposalStatus)" + } + }, + "id": 1120, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "20218:8:0", + "memberName": "Executed", + "nodeType": "MemberAccess", + "referencedDeclaration": 29, + "src": "20203:23:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ProposalStatus_$31", + "typeString": "enum Bridge.ProposalStatus" + } + }, + { + "id": 1121, + "name": "resourceID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1037, + "src": "20228:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 1122, + "name": "dataHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1066, + "src": "20240:8:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_enum$_ProposalStatus_$31", + "typeString": "enum Bridge.ProposalStatus" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, { - "indexed": true, - "internalType": "uint8", - "name": "destinationChainID", - "type": "uint8" + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1116, + "name": "ProposalEvent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 101, + "src": "20166:13:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_uint64_$_t_enum$_ProposalStatus_$31_$_t_bytes32_$_t_bytes32_$returns$__$", + "typeString": "function (uint8,uint64,enum Bridge.ProposalStatus,bytes32,bytes32)" + } + }, + "id": 1123, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20166:83:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1124, + "nodeType": "EmitStatement", + "src": "20161:88:0" + } + ] + }, + "documentation": { + "id": 1029, + "nodeType": "StructuredDocumentation", + "src": "18622:662:0", + "text": "@notice Executes a deposit proposal that is considered passed using a specified handler contract.\n@notice callable by Executor or above when Bridge is not paused.\n@param chainID ID of chain deposit originated from.\n@param resourceID ResourceID to be used when making deposits.\n@param depositNonce ID of deposited generated by origin Bridge contract.\n@param data Data originally provided when deposit was made.\n@notice Proposal must have Passed status.\n@notice Hash of {data} must equal proposal's {dataHash}.\n@notice Emits {ProposalEvent} event with status {Executed}." + }, + "functionSelector": "4454b20d", + "id": 1126, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 1040, + "kind": "modifierInvocation", + "modifierName": { + "id": 1039, + "name": "onlyExecutorOrAbove", + "nameLocations": [ + "19401:19:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 181, + "src": "19401:19:0" + }, + "nodeType": "ModifierInvocation", + "src": "19401:19:0" + }, + { + "id": 1042, + "kind": "modifierInvocation", + "modifierName": { + "id": 1041, + "name": "whenNotPaused", + "nameLocations": [ + "19421:13:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3454, + "src": "19421:13:0" + }, + "nodeType": "ModifierInvocation", + "src": "19421:13:0" + } + ], + "name": "executeProposal", + "nameLocation": "19299:15:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1038, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1031, + "mutability": "mutable", + "name": "chainID", + "nameLocation": "19321:7:0", + "nodeType": "VariableDeclaration", + "scope": 1126, + "src": "19315:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1030, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "19315:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1033, + "mutability": "mutable", + "name": "depositNonce", + "nameLocation": "19337:12:0", + "nodeType": "VariableDeclaration", + "scope": 1126, + "src": "19330:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 1032, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "19330:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1035, + "mutability": "mutable", + "name": "data", + "nameLocation": "19366:4:0", + "nodeType": "VariableDeclaration", + "scope": 1126, + "src": "19351:19:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1034, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "19351:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1037, + "mutability": "mutable", + "name": "resourceID", + "nameLocation": "19380:10:0", + "nodeType": "VariableDeclaration", + "scope": 1126, + "src": "19372:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1036, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "19372:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "19314:77:0" + }, + "returnParameters": { + "id": 1043, + "nodeType": "ParameterList", + "parameters": [], + "src": "19435:0:0" + }, + "scope": 1209, + "src": "19290:967:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1159, + "nodeType": "Block", + "src": "20964:255:0", + "statements": [ + { + "assignments": [ + 1138 + ], + "declarations": [ + { + "constant": false, + "id": 1138, + "mutability": "mutable", + "name": "depositHandler", + "nameLocation": "20991:14:0", + "nodeType": "VariableDeclaration", + "scope": 1159, + "src": "20975:30:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDepositExecute_$1291", + "typeString": "contract IDepositExecute" + }, + "typeName": { + "id": 1137, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1136, + "name": "IDepositExecute", + "nameLocations": [ + "20975:15:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1291, + "src": "20975:15:0" + }, + "referencedDeclaration": 1291, + "src": "20975:15:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDepositExecute_$1291", + "typeString": "contract IDepositExecute" + } + }, + "visibility": "internal" + } + ], + "id": 1144, + "initialValue": { + "arguments": [ + { + "baseExpression": { + "id": 1140, + "name": "_resourceIDToHandlerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 55, + "src": "21024:27:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + } }, - { - "indexed": true, - "internalType": "bytes32", - "name": "resourceID", - "type": "bytes32" + "id": 1142, + "indexExpression": { + "id": 1141, + "name": "resourceID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1131, + "src": "21052:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } }, - { - "indexed": true, - "internalType": "uint64", - "name": "depositNonce", - "type": "uint64" + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21024:39:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } + } ], - "name": "Deposit", - "type": "event" - }, - "0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258": { - "anonymous": false, - "inputs": [ + "expression": { + "argumentTypes": [ { - "indexed": false, - "internalType": "address", - "name": "account", - "type": "address" + "typeIdentifier": "t_address", + "typeString": "address" } - ], - "name": "Paused", - "type": "event" + ], + "id": 1139, + "name": "IDepositExecute", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1291, + "src": "21008:15:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IDepositExecute_$1291_$", + "typeString": "type(contract IDepositExecute)" + } + }, + "id": 1143, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21008:56:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDepositExecute_$1291", + "typeString": "contract IDepositExecute" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "20975:89:0" }, - "0x803c5a12f6bde629cea32e63d4b92d1b560816a6fb72e939d3c89e1cab650417": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint8", - "name": "originChainID", - "type": "uint8" - }, - { - "indexed": true, - "internalType": "uint64", - "name": "depositNonce", - "type": "uint64" - }, - { - "indexed": true, - "internalType": "enum Bridge.ProposalStatus", - "name": "status", - "type": "uint8" - }, + { + "clauses": [ + { + "block": { + "id": 1152, + "nodeType": "Block", + "src": "21128:38:0", + "statements": [ + { + "expression": { + "hexValue": "74727565", + "id": 1150, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21150:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1135, + "id": 1151, + "nodeType": "Return", + "src": "21143:11:0" + } + ] + }, + "errorName": "", + "id": 1153, + "nodeType": "TryCatchClause", + "src": "21128:38:0" + }, + { + "block": { + "id": 1156, + "nodeType": "Block", + "src": "21173:39:0", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 1154, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21195:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 1135, + "id": 1155, + "nodeType": "Return", + "src": "21188:12:0" + } + ] + }, + "errorName": "", + "id": 1157, + "nodeType": "TryCatchClause", + "src": "21167:45:0" + } + ], + "externalCall": { + "arguments": [ + { + "id": 1147, + "name": "resourceID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1131, + "src": "21110:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 1148, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1129, + "src": "21122:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ { - "indexed": false, - "internalType": "bytes32", - "name": "resourceID", - "type": "bytes32" + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" }, { - "indexed": false, - "internalType": "bytes32", - "name": "dataHash", - "type": "bytes32" + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" } - ], - "name": "ProposalEvent", - "type": "event" + ], + "expression": { + "id": 1145, + "name": "depositHandler", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1138, + "src": "21079:14:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IDepositExecute_$1291", + "typeString": "contract IDepositExecute" + } + }, + "id": 1146, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "21094:15:0", + "memberName": "executeProposal", + "nodeType": "MemberAccess", + "referencedDeclaration": 1290, + "src": "21079:30:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (bytes32,bytes memory) external" + } + }, + "id": 1149, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21079:48:0", + "tryCall": true, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1158, + "nodeType": "TryStatement", + "src": "21075:137:0" + } + ] + }, + "documentation": { + "id": 1127, + "nodeType": "StructuredDocumentation", + "src": "20266:601:0", + "text": "@notice Executes a deposit proposal that is considered passed using a specified handler contract.\n@notice This method itself does not change the status of proposal or emit event!\n@notice Internal method not callable by public.\n@param resourceID ResourceID to be used when making deposits.\n@param data Data originally provided when deposit was made.\n@return bool The result of handler execution:\n@notice This method does not check if proposal is Passed status!\n@notice Hash of {data} must equal proposal's {dataHash}." + }, + "id": 1160, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_executeProposal", + "nameLocation": "20882:16:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1132, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1129, + "mutability": "mutable", + "name": "data", + "nameLocation": "20914:4:0", + "nodeType": "VariableDeclaration", + "scope": 1160, + "src": "20899:19:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1128, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "20899:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" }, - "0x25f8daaa4635a7729927ba3f5b3d59cc3320aca7c32c9db4e7ca7b9574343640": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint8", - "name": "originChainID", - "type": "uint8" + { + "constant": false, + "id": 1131, + "mutability": "mutable", + "name": "resourceID", + "nameLocation": "20928:10:0", + "nodeType": "VariableDeclaration", + "scope": 1160, + "src": "20920:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1130, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "20920:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "20898:41:0" + }, + "returnParameters": { + "id": 1135, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1134, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1160, + "src": "20958:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1133, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "20958:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "20957:6:0" + }, + "scope": 1209, + "src": "20873:346:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1207, + "nodeType": "Block", + "src": "21718:243:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - { - "indexed": true, - "internalType": "uint64", - "name": "depositNonce", - "type": "uint64" + "id": 1177, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 1173, + "name": "addrs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1164, + "src": "21737:5:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_payable_$dyn_calldata_ptr", + "typeString": "address payable[] calldata" + } + }, + "id": 1174, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "21743:6:0", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "21737:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, - { - "indexed": true, - "internalType": "enum Bridge.ProposalStatus", - "name": "status", - "type": "uint8" + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 1175, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1167, + "src": "21753:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + "id": 1176, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "21761:6:0", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "21753:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, - { - "indexed": false, - "internalType": "bytes32", - "name": "resourceID", - "type": "bytes32" - } - ], - "name": "ProposalVote", - "type": "event" - }, - "0x03580ee9f53a62b7cb409a2cb56f9be87747dd15017afc5cef6eef321e4fb2c5": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "relayer", - "type": "address" + "src": "21737:30:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } + }, + { + "hexValue": "6c656e677468206f66206164647265737320616e6420616d6f756e7473206469736d61746368", + "id": 1178, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21769:40:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_073bceac60cfe31ff4e1652a9ed1958ffac9b37b9b2d1e976a3ea18c79e0f6fb", + "typeString": "literal_string \"length of address and amounts dismatch\"" + }, + "value": "length of address and amounts dismatch" + } ], - "name": "RelayerAdded", - "type": "event" - }, - "0x10e1f7ce9fd7d1b90a66d13a2ab3cb8dd7f29f3f8d520b143b063ccfbab6906b": { - "anonymous": false, - "inputs": [ + "expression": { + "argumentTypes": [ { - "indexed": true, - "internalType": "address", - "name": "relayer", - "type": "address" - } - ], - "name": "RelayerRemoved", - "type": "event" - }, - "0xa20d6b84cd798a24038be305eff8a45ca82ef54a2aa2082005d8e14c0a4746c8": { - "anonymous": false, - "inputs": [ + "typeIdentifier": "t_bool", + "typeString": "bool" + }, { - "indexed": true, - "internalType": "uint256", - "name": "newThreshold", - "type": "uint256" + "typeIdentifier": "t_stringliteral_073bceac60cfe31ff4e1652a9ed1958ffac9b37b9b2d1e976a3ea18c79e0f6fb", + "typeString": "literal_string \"length of address and amounts dismatch\"" } - ], - "name": "RelayerThresholdChanged", - "type": "event" + ], + "id": 1172, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "21729:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1179, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21729:81:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1180, + "nodeType": "ExpressionStatement", + "src": "21729:81:0" }, - "0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "previousAdminRole", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "newAdminRole", - "type": "bytes32" + { + "assignments": [ + 1182 + ], + "declarations": [ + { + "constant": false, + "id": 1182, + "mutability": "mutable", + "name": "addrCount", + "nameLocation": "21826:9:0", + "nodeType": "VariableDeclaration", + "scope": 1207, + "src": "21821:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1181, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "21821:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ], - "name": "RoleAdminChanged", - "type": "event" + }, + "visibility": "internal" + } + ], + "id": 1185, + "initialValue": { + "expression": { + "id": 1183, + "name": "addrs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1164, + "src": "21838:5:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_payable_$dyn_calldata_ptr", + "typeString": "address payable[] calldata" + } + }, + "id": 1184, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "21844:6:0", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "21838:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "21821:29:0" }, - "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" + { + "body": { + "id": 1205, + "nodeType": "Block", + "src": "21898:56:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "baseExpression": { + "id": 1200, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1167, + "src": "21931:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + "id": 1202, + "indexExpression": { + "id": 1201, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1187, + "src": "21939:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21931:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "baseExpression": { + "id": 1196, + "name": "addrs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1164, + "src": "21913:5:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_payable_$dyn_calldata_ptr", + "typeString": "address payable[] calldata" + } + }, + "id": 1198, + "indexExpression": { + "id": 1197, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1187, + "src": "21919:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21913:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 1199, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "21922:8:0", + "memberName": "transfer", + "nodeType": "MemberAccess", + "src": "21913:17:0", + "typeDescriptions": { + "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 1203, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21913:29:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } }, - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - } + "id": 1204, + "nodeType": "ExpressionStatement", + "src": "21913:29:0" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1190, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1187, + "src": "21878:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 1191, + "name": "addrCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1182, + "src": "21882:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "21878:13:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1206, + "initializationExpression": { + "assignments": [ + 1187 ], - "name": "RoleGranted", - "type": "event" - }, - "0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" + "declarations": [ + { + "constant": false, + "id": 1187, + "mutability": "mutable", + "name": "i", + "nameLocation": "21871:1:0", + "nodeType": "VariableDeclaration", + "scope": 1206, + "src": "21866:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" + "typeName": { + "id": 1186, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "21866:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - } + "visibility": "internal" + } ], - "name": "RoleRevoked", - "type": "event" - }, - "0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "account", - "type": "address" + "id": 1189, + "initialValue": { + "hexValue": "30", + "id": 1188, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21875:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "21866:10:0" + }, + "loopExpression": { + "expression": { + "id": 1194, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "21893:3:0", + "subExpression": { + "id": 1193, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1187, + "src": "21893:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ], - "name": "Unpaused", - "type": "event" - } - }, - "links": {}, - "address": "0x3f709398808af36ADBA86ACC617FeB7F5B7B193E", - "transactionHash": "0x4b4918a8b524477a748a78688f1e3ac088ae27d18602b2b547627c8849eec850" - }, - "5777": { - "events": {}, - "links": {}, - "address": "0x6cCad819ea667dB3f1707712372C9A83Caf3e27f", - "transactionHash": "0x8add07c6562a8a8e11392156fe08cc2b8004be8c3275844b878cd0c345989e82" - }, - "1658807992770": { - "events": {}, - "links": {}, - "address": "0x3f709398808af36ADBA86ACC617FeB7F5B7B193E", - "transactionHash": "0x3dfd1a5ed6fa8d439682d5aad5353d37bee3e4a55b7dfc144e3f56c5e23ddd8b" - } - }, - "schemaVersion": "3.4.8", - "updatedAt": "2022-07-27T05:41:53.394Z", - "networkType": "ethereum", - "devdoc": { - "author": "ChainSafe Systems.", - "kind": "dev", - "methods": { - "adminAddRelayer(address)": { - "params": { - "relayerAddress": "Address of relayer to be added." - } - }, - "adminChangeFee(uint256)": { - "params": { - "newFee": "Value {_fee} will be updated to." - } - }, - "adminChangeRelayerThreshold(uint256)": { - "params": { - "newThreshold": "Value {_relayerThreshold} will be changed to." - } - }, - "adminRemoveRelayer(address)": { - "params": { - "relayerAddress": "Address of relayer to be removed." - } - }, - "adminSetBurnable(address,address)": { - "params": { - "handlerAddress": "Address of handler resource will be set for.", - "tokenAddress": "Address of contract to be called when a deposit is made and a deposited is executed." - } - }, - "adminSetDecimals(address,address,uint8,uint8)": { - "params": { - "handlerAddress": "Address of handler resource will be set for.", - "tokenAddress": "Address of contract to be called when a deposit is made and a deposited is executed." - } - }, - "adminSetDepositNonce(uint8,uint64)": { - "params": { - "chainId": "Dest chain id.", - "depositNonce": "Initial deposit nonce." - } - }, - "adminSetGenericResource(address,bytes32,address,bytes4,bytes4)": { - "params": { - "contractAddress": "Address of contract to be called when a deposit is made and a deposited is executed.", - "handlerAddress": "Address of handler resource will be set for.", - "resourceID": "ResourceID to be used when making deposits." - } - }, - "adminSetResource(address,bytes32,address)": { - "params": { - "handlerAddress": "Address of handler resource will be set for.", - "resourceID": "ResourceID to be used when making deposits.", - "tokenAddress": "Address of contract to be called when a deposit is made and a deposited is executed." - } - }, - "adminWithdraw(address,address,address,uint256)": { - "params": { - "amountOrTokenID": "Either the amount of ERC20 tokens or the ERC721 token ID to withdraw.", - "handlerAddress": "Address of handler to withdraw from.", - "recipient": "Address to withdraw tokens to.", - "tokenAddress": "Address of token to withdraw." - } - }, - "cancelProposal(uint8,uint64,bytes32)": { - "params": { - "chainID": "ID of chain deposit originated from.", - "dataHash": "Hash of data originally provided when deposit was made.", - "depositNonce": "ID of deposited generated by origin Bridge contract." - } - }, - "constructor": { - "params": { - "chainID": "ID of chain the Bridge contract exists on.", - "initialRelayerThreshold": "Number of votes needed for a deposit proposal to be considered passed.", - "initialRelayers": "Addresses that should be initially granted the relayer role." - } - }, - "deposit(uint8,bytes32,bytes)": { - "params": { - "data": "Additional data to be passed to specified handler.", - "destinationChainID": "ID of chain deposit will be bridged to.", - "resourceID": "ResourceID used to find address of handler to be used for deposit." + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1195, + "nodeType": "ExpressionStatement", + "src": "21893:3:0" + }, + "nodeType": "ForStatement", + "src": "21861:93:0" } + ] }, - "executeProposal(uint8,uint64,bytes,bytes32)": { - "params": { - "chainID": "ID of chain deposit originated from.", - "data": "Data originally provided when deposit was made.", - "depositNonce": "ID of deposited generated by origin Bridge contract.", - "resourceID": "ResourceID to be used when making deposits." - } + "documentation": { + "id": 1161, + "nodeType": "StructuredDocumentation", + "src": "21227:384:0", + "text": "@notice Transfers eth in the contract to the specified addresses. The parameters addrs and amounts are mapped 1-1.\nThis means that the address at index 0 for addrs will receive the amount (in WEI) from amounts at index 0.\n@param addrs Array of addresses to transfer {amounts} to.\n@param amounts Array of amonuts to transfer to {addrs}." }, - "getProposal(uint8,uint64,bytes32)": { - "params": { - "dataHash": "Hash of data to be provided when deposit proposal is executed.", - "depositNonce": "ID of proposal generated by proposal's origin Bridge contract.", - "originChainID": "Chain ID deposit originated from." + "functionSelector": "4603ae38", + "id": 1208, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 1170, + "kind": "modifierInvocation", + "modifierName": { + "id": 1169, + "name": "onlyAdmin", + "nameLocations": [ + "21708:9:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 124, + "src": "21708:9:0" }, - "returns": { - "_0": "Proposal which consists of: - _dataHash Hash of data to be provided when deposit proposal is executed. - _yesVotes Number of votes in favor of proposal. - _noVotes Number of votes against proposal. - _status Current status of proposal." - } - }, - "getRoleAdmin(bytes32)": { - "details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}." - }, - "getRoleMember(bytes32,uint256)": { - "details": "Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information." - }, - "getRoleMemberCount(bytes32)": { - "details": "Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role." - }, - "grantRole(bytes32,address)": { - "details": "Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role." - }, - "hasRole(bytes32,address)": { - "details": "Returns `true` if `account` has been granted `role`." - }, - "isRelayer(address)": { - "params": { - "relayer": "Address to check." - } - }, - "paused()": { - "details": "Returns true if the contract is paused, and false otherwise." - }, - "renounceAdmin(address)": { - "params": { - "newAdmin": "Address that admin role will be granted to." + "nodeType": "ModifierInvocation", + "src": "21708:9:0" + } + ], + "name": "transferFunds", + "nameLocation": "21626:13:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1168, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1164, + "mutability": "mutable", + "name": "addrs", + "nameLocation": "21667:5:0", + "nodeType": "VariableDeclaration", + "scope": 1208, + "src": "21640:32:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_payable_$dyn_calldata_ptr", + "typeString": "address payable[]" + }, + "typeName": { + "baseType": { + "id": 1162, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21640:15:0", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 1163, + "nodeType": "ArrayTypeName", + "src": "21640:17:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_payable_$dyn_storage_ptr", + "typeString": "address payable[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1167, + "mutability": "mutable", + "name": "amounts", + "nameLocation": "21690:7:0", + "nodeType": "VariableDeclaration", + "scope": 1208, + "src": "21674:23:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1165, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "21674:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1166, + "nodeType": "ArrayTypeName", + "src": "21674:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" } + ], + "src": "21639:59:0" }, - "renounceRole(bytes32,address)": { - "details": "Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`." - }, - "revokeRole(bytes32,address)": { - "details": "Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role." + "returnParameters": { + "id": 1171, + "nodeType": "ParameterList", + "parameters": [], + "src": "21718:0:0" }, - "transferFunds(address[],uint256[])": { - "params": { - "addrs": "Array of addresses to transfer {amounts} to.", - "amounts": "Array of amonuts to transfer to {addrs}." - } - }, - "voteProposal(uint8,uint64,bytes32,bytes32)": { - "params": { - "chainID": "ID of chain deposit originated from.", - "dataHash": "Hash of data provided when deposit was made.", - "depositNonce": "ID of deposited generated by origin Bridge contract." - } - } - }, - "title": "Facilitates deposits, creation and votiing of deposit proposals, and deposit executions.", - "version": 1 + "scope": 1209, + "src": "21617:344:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 1210, + "src": "462:21504:0", + "usedErrors": [] + } + ], + "src": "33:21935:0" + }, + "compiler": { + "name": "solc", + "version": "0.8.19+commit.7dd6d404.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.4.16", + "updatedAt": "2024-07-27T11:44:01.132Z", + "devdoc": { + "author": "ChainSafe Systems.", + "events": { + "Paused(address)": { + "details": "Emitted when the pause is triggered by `account`." + }, + "RoleAdminChanged(bytes32,bytes32,bytes32)": { + "details": "Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this. _Available since v3.1._" + }, + "RoleGranted(bytes32,address,address)": { + "details": "Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}." + }, + "RoleRevoked(bytes32,address,address)": { + "details": "Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)" + }, + "Unpaused(address)": { + "details": "Emitted when the pause is lifted by `account`." + } }, - "userdoc": { - "kind": "user", - "methods": { - "adminAddRelayer(address)": { - "notice": "Grants {relayerAddress} the relayer role and increases {_totalRelayer} count.Only callable by an address that currently has the admin role.Emits {RelayerAdded} event." - }, - "adminChangeFee(uint256)": { - "notice": "Changes deposit fee.Only callable by admin." - }, - "adminChangeRelayerThreshold(uint256)": { - "notice": "Modifies the number of votes required for a proposal to be considered passed.Only callable by an address that currently has the admin role.Emits {RelayerThresholdChanged} event." - }, - "adminPauseTransfers()": { - "notice": "Pauses deposits, proposal creation and voting, and deposit executions.Only callable by an address that currently has the admin role." - }, - "adminRemoveRelayer(address)": { - "notice": "Removes relayer role for {relayerAddress} and decreases {_totalRelayer} count.Only callable by an address that currently has the admin role.Emits {RelayerRemoved} event." - }, - "adminSetBurnable(address,address)": { - "notice": "Sets a resource as burnable for handler contracts that use the IERCHandler interface.Only callable by an address that currently has the admin role." - }, - "adminSetDecimals(address,address,uint8,uint8)": { - "notice": "Sets a resource as burnable for handler contracts that use the IERCHandler interface.Only callable by an address that currently has the admin role." - }, - "adminSetDepositNonce(uint8,uint64)": { - "notice": "Sets a initial deposit nonce for dest chan, this is used to migrate to a new bridge contract." - }, - "adminSetGenericResource(address,bytes32,address,bytes4,bytes4)": { - "notice": "Sets a new resource for handler contracts that use the IGenericHandler interface, and maps the {handlerAddress} to {resourceID} in {_resourceIDToHandlerAddress}.Only callable by an address that currently has the admin role." - }, - "adminSetResource(address,bytes32,address)": { - "notice": "Sets a new resource for handler contracts that use the IERCHandler interface, and maps the {handlerAddress} to {resourceID} in {_resourceIDToHandlerAddress}.Only callable by an address that currently has the admin role." - }, - "adminUnpauseTransfers()": { - "notice": "Unpauses deposits, proposal creation and voting, and deposit executions.Only callable by an address that currently has the admin role." - }, - "adminWithdraw(address,address,address,uint256)": { - "notice": "Used to manually withdraw funds from ERC safes." - }, - "cancelProposal(uint8,uint64,bytes32)": { - "notice": "Executes a deposit proposal that is considered passed using a specified handler contract.Only callable by relayers when Bridge is not paused.Proposal must be past expiry threshold.Emits {ProposalEvent} event with status {Cancelled}." - }, - "constructor": { - "notice": "Initializes Bridge, creates and grants {msg.sender} the admin role, creates and grants {initialRelayers} the relayer role." - }, - "deposit(uint8,bytes32,bytes)": { - "notice": "Initiates a transfer using a specified handler contract.Only callable when Bridge is not paused.Emits {Deposit} event." - }, - "executeProposal(uint8,uint64,bytes,bytes32)": { - "notice": "Executes a deposit proposal that is considered passed using a specified handler contract.Only callable by relayers when Bridge is not paused.Proposal must have Passed status.Hash of {data} must equal proposal's {dataHash}.Emits {ProposalEvent} event with status {Executed}." - }, - "getProposal(uint8,uint64,bytes32)": { - "notice": "Returns a proposal." - }, - "isRelayer(address)": { - "notice": "Returns true if {relayer} has the relayer role." - }, - "renounceAdmin(address)": { - "notice": "Removes admin role from {msg.sender} and grants it to {newAdmin}.Only callable by an address that currently has the admin role." - }, - "transferFunds(address[],uint256[])": { - "notice": "Transfers eth in the contract to the specified addresses. The parameters addrs and amounts are mapped 1-1. This means that the address at index 0 for addrs will receive the amount (in WEI) from amounts at index 0." - }, - "voteProposal(uint8,uint64,bytes32,bytes32)": { - "notice": "When called, {msg.sender} will be marked as voting in favor of proposal.Only callable by relayers when Bridge is not paused.Proposal must not have already been passed or executed.{msg.sender} must not have already voted on proposal.Emits {ProposalEvent} event with status indicating the proposal status.Emits {ProposalVote} event." - } + "kind": "dev", + "methods": { + "adminAddRelayer(address)": { + "params": { + "relayerAddress": "Address of relayer to be added." + } + }, + "adminChangeFee(uint256)": { + "params": { + "newFee": "Value {_fee} will be updated to." + } + }, + "adminChangeRelayerThreshold(uint256)": { + "params": { + "newThreshold": "Value {_relayerThreshold} will be changed to." + } + }, + "adminExpiry(uint256)": { + "params": { + "newExpiry": "Value {_expiry} will be updated to." + } + }, + "adminRemoveRelayer(address)": { + "params": { + "relayerAddress": "Address of relayer to be removed." + } + }, + "adminSetBurnable(address,address)": { + "params": { + "handlerAddress": "Address of handler resource will be set for.", + "tokenAddress": "Address of contract to be called when a deposit is made and a deposited is executed." + } + }, + "adminSetGenericResource(address,bytes32,address,bytes4,bytes4)": { + "params": { + "contractAddress": "Address of contract to be called when a deposit is made and a deposited is executed.", + "handlerAddress": "Address of handler resource will be set for.", + "resourceID": "ResourceID to be used when making deposits." + } + }, + "adminSetResource(address,bytes32,address)": { + "params": { + "handlerAddress": "Address of handler resource will be set for.", + "resourceID": "ResourceID to be used when making deposits.", + "tokenAddress": "Address of contract to be called when a deposit is made and a deposited is executed." + } + }, + "adminWithdraw(address,address,address,uint256)": { + "params": { + "amountOrTokenID": "Either the amount of ERC20 tokens or the ERC721 token ID to withdraw.", + "handlerAddress": "Address of handler to withdraw from.", + "recipient": "Address to withdraw tokens to.", + "tokenAddress": "Address of token to withdraw." + } + }, + "cancelProposal(uint8,uint64,bytes32)": { + "params": { + "chainID": "ID of chain deposit originated from.", + "dataHash": "Hash of data originally provided when deposit was made.", + "depositNonce": "ID of deposited generated by origin Bridge contract." + } + }, + "constructor": { + "params": { + "chainID": "ID of chain the Bridge contract exists on.", + "initialRelayerThreshold": "Number of votes needed for a deposit proposal to be considered passed.", + "initialRelayers": "Addresses that should be initially granted the relayer role." + } + }, + "deposit(uint8,bytes32,bytes)": { + "params": { + "data": "Additional data to be passed to specified handler.", + "destinationChainID": "ID of chain deposit will be bridged to.", + "resourceID": "ResourceID used to find address of handler to be used for deposit." + } + }, + "executeProposal(uint8,uint64,bytes,bytes32)": { + "params": { + "chainID": "ID of chain deposit originated from.", + "data": "Data originally provided when deposit was made.", + "depositNonce": "ID of deposited generated by origin Bridge contract.", + "resourceID": "ResourceID to be used when making deposits." + } + }, + "getProposal(uint8,uint64,bytes32)": { + "params": { + "dataHash": "Hash of data to be provided when deposit proposal is executed.", + "depositNonce": "ID of proposal generated by proposal's origin Bridge contract.", + "originChainID": "Chain ID deposit originated from." }, - "version": 1 - } -} + "returns": { + "_0": "Proposal which consists of: - _dataHash Hash of data to be provided when deposit proposal is executed. - _yesVotes Number of votes in favor of proposal. - _noVotes Number of votes against proposal. - _status Current status of proposal." + } + }, + "getRoleAdmin(bytes32)": { + "details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}." + }, + "getRoleMember(bytes32,uint256)": { + "details": "Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information." + }, + "getRoleMemberCount(bytes32)": { + "details": "Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role." + }, + "grantRole(bytes32,address)": { + "details": "Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event." + }, + "hasRole(bytes32,address)": { + "details": "Returns `true` if `account` has been granted `role`." + }, + "isRelayer(address)": { + "params": { + "relayer": "Address to check." + } + }, + "paused()": { + "details": "Returns true if the contract is paused, and false otherwise." + }, + "relayerAddExecutor(address)": { + "params": { + "executorAddress": "Address of executor to be added." + } + }, + "relayerRemoveExecutor(address)": { + "params": { + "executorAddress": "Address of executor to be removed." + } + }, + "renounceAdmin(address)": { + "params": { + "newAdmin": "Address that admin role will be granted to." + } + }, + "renounceRole(bytes32,address)": { + "details": "Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event." + }, + "revokeRole(bytes32,address)": { + "details": "Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event." + }, + "supportsInterface(bytes4)": { + "details": "See {IERC165-supportsInterface}." + }, + "transferFunds(address[],uint256[])": { + "params": { + "addrs": "Array of addresses to transfer {amounts} to.", + "amounts": "Array of amonuts to transfer to {addrs}." + } + }, + "voteProposal(uint8,uint64,bytes32,bytes)": { + "params": { + "chainID": "ID of chain deposit originated from.", + "data": "Data provided when deposit was made.", + "depositNonce": "ID of deposited generated by origin Bridge contract." + } + } + }, + "title": "Facilitates deposits, creation and votiing of deposit proposals, and deposit executions.", + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": { + "adminAddRelayer(address)": { + "notice": "Grants {relayerAddress} the relayer role.Only callable by an address that currently has the admin role." + }, + "adminChangeFee(uint256)": { + "notice": "Changes deposit fee.Only callable by admin." + }, + "adminChangeRelayerThreshold(uint256)": { + "notice": "Modifies the number of votes required for a proposal to be considered passed.Only callable by an address that currently has the admin role.Emits {RelayerThresholdChanged} event." + }, + "adminExpiry(uint256)": { + "notice": "Changes xpiry.Only callable by admin." + }, + "adminPauseTransfers()": { + "notice": "Pauses deposits, proposal creation and voting, and deposit executions.Only callable by an address that currently has the admin role." + }, + "adminRemoveRelayer(address)": { + "notice": "Removes relayer role for {relayerAddress}.Only callable by an address that currently has the admin role." + }, + "adminSetBurnable(address,address)": { + "notice": "Sets a resource as burnable for handler contracts that use the IERCHandler interface.Only callable by an address that currently has the admin role." + }, + "adminSetGenericResource(address,bytes32,address,bytes4,bytes4)": { + "notice": "Sets a new resource for handler contracts that use the IGenericHandler interface, and maps the {handlerAddress} to {resourceID} in {_resourceIDToHandlerAddress}.Only callable by an address that currently has the admin role." + }, + "adminSetResource(address,bytes32,address)": { + "notice": "Sets a new resource for handler contracts that use the IERCHandler interface, and maps the {handlerAddress} to {resourceID} in {_resourceIDToHandlerAddress}.Only callable by an address that currently has the admin role." + }, + "adminUnpauseTransfers()": { + "notice": "Unpauses deposits, proposal creation and voting, and deposit executions.Only callable by an address that currently has the admin role." + }, + "adminWithdraw(address,address,address,uint256)": { + "notice": "Used to manually withdraw funds from ERC safes." + }, + "cancelProposal(uint8,uint64,bytes32)": { + "notice": "Executes a deposit proposal that is considered passed using a specified handler contract.Only callable by relayers when Bridge is not paused.Proposal must be past expiry threshold.Emits {ProposalEvent} event with status {Cancelled}." + }, + "constructor": { + "notice": "Initializes Bridge, creates and grants {msg.sender} the admin role, creates and grants {initialRelayers} the relayer role." + }, + "deposit(uint8,bytes32,bytes)": { + "notice": "Initiates a transfer using a specified handler contract.Only callable when Bridge is not paused.Emits {Deposit} event." + }, + "executeProposal(uint8,uint64,bytes,bytes32)": { + "notice": "Executes a deposit proposal that is considered passed using a specified handler contract.callable by Executor or above when Bridge is not paused.Proposal must have Passed status.Hash of {data} must equal proposal's {dataHash}.Emits {ProposalEvent} event with status {Executed}." + }, + "getProposal(uint8,uint64,bytes32)": { + "notice": "Returns a proposal." + }, + "isRelayer(address)": { + "notice": "Returns true if {relayer} has the relayer role." + }, + "relayerAddExecutor(address)": { + "notice": "Grants {executorAddress} the executor role.Only callable by an address that currently has the relayer role." + }, + "relayerRemoveExecutor(address)": { + "notice": "Removes relayer role for {executorAddress}.Only callable by an address that currently has the relayer role." + }, + "renounceAdmin(address)": { + "notice": "Removes admin role from {msg.sender} and grants it to {newAdmin}.Only callable by an address that currently has the admin role." + }, + "transferFunds(address[],uint256[])": { + "notice": "Transfers eth in the contract to the specified addresses. The parameters addrs and amounts are mapped 1-1. This means that the address at index 0 for addrs will receive the amount (in WEI) from amounts at index 0." + }, + "voteProposal(uint8,uint64,bytes32,bytes)": { + "notice": "When called, {msg.sender} will be marked as voting in favor of proposal.Only callable by relayers when Bridge is not paused.Proposal must not have already been passed or executed.{msg.sender} must not have already voted on proposal.Emits {ProposalEvent} event with status indicating the proposal status." + } + }, + "version": 1 + } +} \ No newline at end of file diff --git a/ts-tests/common/abi/bridge/ERC20Handler.json b/ts-tests/common/abi/bridge/ERC20Handler.json index 0c54af507d..878435f965 100644 --- a/ts-tests/common/abi/bridge/ERC20Handler.json +++ b/ts-tests/common/abi/bridge/ERC20Handler.json @@ -1,13757 +1,22340 @@ { - "contractName": "ERC20Handler", - "abi": [ + "contractName": "ERC20Handler", + "abi": [ + { + "inputs": [ { - "inputs": [ - { - "internalType": "address", - "name": "bridgeAddress", - "type": "address" - }, - { - "internalType": "bytes32[]", - "name": "initialResourceIDs", - "type": "bytes32[]" - }, - { - "internalType": "address[]", - "name": "initialContractAddresses", - "type": "address[]" - }, - { - "internalType": "address[]", - "name": "burnableContractAddresses", - "type": "address[]" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" + "internalType": "address", + "name": "bridgeAddress", + "type": "address" }, { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "Deposited", - "type": "event" + "internalType": "bytes32[]", + "name": "initialResourceIDs", + "type": "bytes32[]" }, { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "depositer", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "Withdrawn", - "type": "event" + "internalType": "address[]", + "name": "initialContractAddresses", + "type": "address[]" }, { - "inputs": [], - "name": "_bridgeAddress", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true + "internalType": "address[]", + "name": "burnableContractAddresses", + "type": "address[]" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "_bridgeAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "_burnList", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "_contractWhitelist", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + }, + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "name": "_depositRecords", + "outputs": [ + { + "internalType": "address", + "name": "_tokenAddress", + "type": "address" + }, + { + "internalType": "uint8", + "name": "_lenDestinationRecipientAddress", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "_destinationChainID", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "_resourceID", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "_destinationRecipientAddress", + "type": "bytes" + }, + { + "internalType": "address", + "name": "_depositer", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "_resourceIDToTokenContractAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "_tokenContractAddressToResourceID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "fundERC20", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "contractAddress", + "type": "address" + } + ], + "name": "setBurnable", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "resourceID", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "contractAddress", + "type": "address" + } + ], + "name": "setResource", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "depositNonce", + "type": "uint64" + }, + { + "internalType": "uint8", + "name": "destId", + "type": "uint8" + } + ], + "name": "getDepositRecord", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "_tokenAddress", + "type": "address" + }, + { + "internalType": "uint8", + "name": "_lenDestinationRecipientAddress", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "_destinationChainID", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "_resourceID", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "_destinationRecipientAddress", + "type": "bytes" + }, + { + "internalType": "address", + "name": "_depositer", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "internalType": "struct ERC20Handler.DepositRecord", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "resourceID", + "type": "bytes32" + }, + { + "internalType": "uint8", + "name": "destinationChainID", + "type": "uint8" + }, + { + "internalType": "uint64", + "name": "depositNonce", + "type": "uint64" + }, + { + "internalType": "address", + "name": "depositer", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "resourceID", + "type": "bytes32" }, { - "inputs": [ + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "executeProposal", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "metadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"bridgeAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"initialResourceIDs\",\"type\":\"bytes32[]\"},{\"internalType\":\"address[]\",\"name\":\"initialContractAddresses\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"burnableContractAddresses\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"_bridgeAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"_burnList\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"_contractWhitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"_depositRecords\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"_lenDestinationRecipientAddress\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"_destinationChainID\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"_resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_destinationRecipientAddress\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_depositer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"_resourceIDToTokenContractAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"_tokenContractAddressToResourceID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"destinationChainID\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"depositer\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"executeProposal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"fundERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"destId\",\"type\":\"uint8\"}],\"name\":\"getDepositRecord\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"_lenDestinationRecipientAddress\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"_destinationChainID\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"_resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_destinationRecipientAddress\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_depositer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"internalType\":\"struct ERC20Handler.DepositRecord\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"setBurnable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"setResource\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"ChainSafe Systems.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"{initialResourceIDs} and {initialContractAddresses} must have the same length (one resourceID for every address). Also, these arrays must be ordered in the way that {initialResourceIDs}[0] is the intended resourceID for {initialContractAddresses}[0].\",\"params\":{\"bridgeAddress\":\"Contract address of previously deployed Bridge.\",\"burnableContractAddresses\":\"These addresses will be set as burnable and when {deposit} is called, the deposited token will be burned. When {executeProposal} is called, new tokens will be minted.\",\"initialContractAddresses\":\"These are the addresses the {initialResourceIDs} will point to, and are the contracts that will be called to perform various deposit calls.\",\"initialResourceIDs\":\"Resource IDs are used to identify a specific contract address. These are the Resource IDs this contract will initially support.\"}},\"deposit(bytes32,uint8,uint64,address,bytes)\":{\"details\":\"Depending if the corresponding {tokenAddress} for the parsed {resourceID} is marked true in {_burnList}, deposited tokens will be burned, if not, they will be locked.\",\"params\":{\"data\":\"Consists of: {resourceID}, {amount}, {lenRecipientAddress}, and {recipientAddress} all padded to 32 bytes.\",\"depositNonce\":\"This value is generated as an ID by the Bridge contract.\",\"depositer\":\"Address of account making the deposit in the Bridge contract.\",\"destinationChainID\":\"Chain ID of chain tokens are expected to be bridged to.\"}},\"executeProposal(bytes32,bytes)\":{\"params\":{\"data\":\"Consists of {resourceID}, {amount}, {lenDestinationRecipientAddress}, and {destinationRecipientAddress} all padded to 32 bytes.\"}},\"fundERC20(address,address,uint256)\":{\"params\":{\"amount\":\"Amount of tokens to transfer.\",\"owner\":\"Address of current token owner.\",\"tokenAddress\":\"Address of ERC20 to transfer.\"}},\"getDepositRecord(uint64,uint8)\":{\"params\":{\"depositNonce\":\"This ID will have been generated by the Bridge contract.\",\"destId\":\"ID of chain deposit will be bridged to.\"},\"returns\":{\"_0\":\"DepositRecord which consists of: - _tokenAddress Address used when {deposit} was executed. - _destinationChainID ChainID deposited tokens are intended to end up on. - _resourceID ResourceID used when {deposit} was executed. - _lenDestinationRecipientAddress Used to parse recipient's address from {_destinationRecipientAddress} - _destinationRecipientAddress Address tokens are intended to be deposited to on desitnation chain. - _depositer Address that initially called {deposit} in the Bridge contract. - _amount Amount of tokens that were deposited.\"}},\"setBurnable(address)\":{\"params\":{\"contractAddress\":\"Address of contract to be used when making or executing deposits.\"}},\"setResource(bytes32,address)\":{\"params\":{\"contractAddress\":\"Address of contract to be called when a deposit is made and a deposited is executed.\",\"resourceID\":\"ResourceID to be used when making deposits.\"}},\"withdraw(address,address,uint256)\":{\"params\":{\"amount\":\"The amount of ERC20 tokens to release.\",\"recipient\":\"Address to release tokens to.\",\"tokenAddress\":\"Address of token contract to release.\"}}},\"title\":\"Handles ERC20 deposits and deposit executions.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"deposit(bytes32,uint8,uint64,address,bytes)\":{\"notice\":\"A deposit is initiatied by making a deposit in the Bridge contract.Data passed into the function should be constructed as follows: amount uint256 bytes 0 - 32 recipientAddress length uint256 bytes 32 - 64 recipientAddress bytes bytes 64 - END\"},\"executeProposal(bytes32,bytes)\":{\"notice\":\"Proposal execution should be initiated when a proposal is finalized in the Bridge contract. by a relayer on the deposit's destination chain.Data passed into the function should be constructed as follows: amount uint256 bytes 0 - 32 destinationRecipientAddress length uint256 bytes 32 - 64 destinationRecipientAddress bytes bytes 64 - END\"},\"fundERC20(address,address,uint256)\":{\"notice\":\"Used to transfer tokens into the safe to fund proposals.\"},\"setBurnable(address)\":{\"notice\":\"First verifies {contractAddress} is whitelisted, then sets {_burnList}[{contractAddress}] to true.\"},\"setResource(bytes32,address)\":{\"notice\":\"First verifies {_resourceIDToContractAddress}[{resourceID}] and {_contractAddressToResourceID}[{contractAddress}] are not already set, then sets {_resourceIDToContractAddress} with {contractAddress}, {_contractAddressToResourceID} with {resourceID}, and {_contractWhitelist} to true for {contractAddress}.\"},\"withdraw(address,address,uint256)\":{\"notice\":\"Used to manually release ERC20 tokens from ERC20Safe.\"}},\"notice\":\"This contract is intended to be used with the Bridge contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/handlers/ERC20Handler.sol\":\"ERC20Handler\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"project:/contracts/ERC20Safe.sol\":{\"keccak256\":\"0x6f01af70877265267c0f94e14170efea81884be0a0c9c4529fc0186c7eb9f061\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9c9327815c0e531538572a3dea0ffdad3e12ba071cb3bc0af4edf8210c6cbc4\",\"dweb:/ipfs/QmYUf14LxBYqzjtQGcjsWK9YK6BTzz85bBWpH9L5X4dW85\"]},\"project:/contracts/handlers/ERC20Handler.sol\":{\"keccak256\":\"0xe7dee7336a02b881e779610d79d7952d7e05cbb1409733efc8aaa17a2c53a8d1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0f36b01e1ba20151b5ad862873eb9cb7bb5008883ad11e3c42b328df2e7b8e\",\"dweb:/ipfs/QmdqgrE8DcMQHWdC3yCpVNXJGxWzeayndaZggmmPgvV6P4\"]},\"project:/contracts/handlers/HandlerHelpers.sol\":{\"keccak256\":\"0x0ff7446a571495928f87ca7dd881048487fe4e6a8b255072148b6cdecc24aa4a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://643ee18c2a175da648bf713b3e38fe1a5760170943cf2e04529ae4cbe0174e33\",\"dweb:/ipfs/QmbcmuauHjhhvt7kLxXTm6U24VeVPjrAbBku7M8d2Czveq\"]},\"project:/contracts/interfaces/IDepositExecute.sol\":{\"keccak256\":\"0x2ca59cc65955ce56c174361335387738a9c04e9953966fc7e7e8a5e24360342b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c70943daf286672ec6d9e629a6e06a54edc9374f486b17955c31a3e53d433761\",\"dweb:/ipfs/QmW5FxsMc93iDMr4wtqD5NRLgUWbaX48SyFViduH5wSiPJ\"]},\"project:/contracts/interfaces/IERCHandler.sol\":{\"keccak256\":\"0xd603e031bccb0731cbc1a579f4c47b59b29a4e817b71c2d523fd9dfdd010b930\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1f35fdd978917075a238d74bc8f04867c74e651eebf9324b6a1f2fa88b9294a7\",\"dweb:/ipfs/QmUXqfKNNyqTEgNDEn4gwhDHTYj4BTHH4Q2Ah1XmbjNyn3\"]},\"project:/contracts/openzeppelin/AccessControl.sol\":{\"keccak256\":\"0xdae96a90cf7ebe1af6d3a6ce965f6c1f4bcf8c2931d6b0fecc54acf29c1ee92b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dfc9858247b6ac358a4850a74189190a311548333041bdd9b3f75feeef409d47\",\"dweb:/ipfs/QmXs3uTH6jAV66r4CuvNwKJxpUiDpcmVjWQugDripnvo6V\"]},\"project:/contracts/openzeppelin/AccessControlEnumerable.sol\":{\"keccak256\":\"0x429abe98d2cb675b8653b983c40902a24b9c0ad6f005bee3601a9339961e8dc3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7dfd1a8023ee1892980a7a01eaa4ec229087bf0bee99bf5155c105969b1217f5\",\"dweb:/ipfs/QmeYccn3MSv5P1bjfCDvjZFgWSwigfqsqQXU94GkTRomg7\"]},\"project:/contracts/openzeppelin/Context.sol\":{\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a367861093b74443b137564d3f3c472f70bcf114739e62059c939f25e315706c\",\"dweb:/ipfs/Qmd7JMpcxD9RuQjK3uM3EzJUgSqdN8vzp8eytEiuwxQJ6h\"]},\"project:/contracts/openzeppelin/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"project:/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x6118a42d314d27fdd9276ed02d30e6b3f64b502ec381575f23073679fd4b0c3a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c90c383374b51cc4c7bca9e9ee42f315b16d9066f55e2bb5fd1eaa60b38568e\",\"dweb:/ipfs/QmXaNEBRgduPtJttEDDBDUFSoL9UZfJ9EfmyYn9VGNqJZM\"]},\"project:/contracts/openzeppelin/ERC20Burnable.sol\":{\"keccak256\":\"0xbf214cdbd576efde33080494f8e2bcaab7c9cb21ac277e34a2174a9f0207ed04\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39261f45741668781d3cd59a7ee1927e7e7559204a00ca59638eb93ddfe48eb2\",\"dweb:/ipfs/QmUPHj8EvpZf5qh7PiUn3CVAAjsYzPZtY97Fk6xTrwww1L\"]},\"project:/contracts/openzeppelin/ERC20Pausable.sol\":{\"keccak256\":\"0xee6b81dbe6c5318846fdbfd8ac27791f7548601c6fed7ce65c30b41493865cff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b0d6c4736264dc05e7993692b7105baa288f3d7a1fa3494688213ba6121a349e\",\"dweb:/ipfs/QmNXbJt4zvBV1vUp6CLT8BBkDA5josSRsSaTaf6SvpAb2w\"]},\"project:/contracts/openzeppelin/ERC20PresetMinterPauser.sol\":{\"keccak256\":\"0x69f21606f09a013b264c07a0f55ecc0b53d1c3cc6c13e0d913c8e29605b0a7c8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7cbf18184988a4495a9c8104f8fcd41c6ebac59dd941a6c717f593bdd32e2301\",\"dweb:/ipfs/QmS7FUnomy32wzQjLx8mDQA5WqA1LSHi9zCetHG7TQXF7E\"]},\"project:/contracts/openzeppelin/EnumerableSet.sol\":{\"keccak256\":\"0x9f4357008a8f7d8c8bf5d48902e789637538d8c016be5766610901b4bba81514\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20bf19b2b851f58a4c24543de80ae70b3e08621f9230eb335dc75e2d4f43f5df\",\"dweb:/ipfs/QmSYuH1AhvJkPK8hNvoPqtExBcgTB42pPRHgTHkS5c5zYW\"]},\"project:/contracts/openzeppelin/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"project:/contracts/openzeppelin/IAccessControlEnumerable.sol\":{\"keccak256\":\"0xba4459ab871dfa300f5212c6c30178b63898c03533a1ede28436f11546626676\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dcc7b09bfa6e18aab262ca372f4a9b1fc82e294b430706a4e1378cf58e6a276\",\"dweb:/ipfs/QmT8oSAcesdctR15HMLhr2a1HRpXymxdjTfdtfTYJcj2N2\"]},\"project:/contracts/openzeppelin/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"project:/contracts/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"project:/contracts/openzeppelin/IERC20Metadata.sol\":{\"keccak256\":\"0xc9728de78b2dc3785bc6cc070e1ed8a2a855459b99f6bc1b8d17b4d2821fe36e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2977d4a4bfcd16800b9442abd22134592100c156d5a5f2b6d1cd3d62818ab7b\",\"dweb:/ipfs/QmcKhKHMKriycRzyFKaQMAqFun33547tykyn2A1tA1KBBW\"]},\"project:/contracts/openzeppelin/Math.sol\":{\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c\",\"dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS\"]},\"project:/contracts/openzeppelin/Pausable.sol\":{\"keccak256\":\"0xedd9e645af02d14f88ed7974006a39c27ca29475a20088c6c89b60f2e9007df9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0af0fc5c16b687431b0b203343f1910f5647c405c0d8f779cd9a710176f6c1a0\",\"dweb:/ipfs/QmcVjS4kmWobHkZbWXAKGJ9DVD7F2ZRb7uKMfSjt9goJs5\"]},\"project:/contracts/openzeppelin/SignedMath.sol\":{\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7\",\"dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6\"]},\"project:/contracts/openzeppelin/Strings.sol\":{\"keccak256\":\"0x0e86814fd3efc59443d122909fa36b268e2b7364f1e3103fa74931858ee636b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://38f060c0c03021efa043f6f1cca18ffbaa542994865ee889d930498d86b3445b\",\"dweb:/ipfs/QmXFbcG4WEt5bDng7EpouKXjyakkXRjwueM7sNjot1o6Gr\"]}},\"version\":1}", + "bytecode": "0x60806040523480156200001157600080fd5b506040516200289238038062002892833981810160405281019062000037919062000671565b81518351146200007e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200007590620007c7565b60405180910390fd5b836000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008351905060005b8181101562000132576200011c858281518110620000ea57620000e9620007e9565b5b6020026020010151858381518110620001085762000107620007e9565b5b60200260200101516200019660201b60201c565b8080620001299062000851565b915050620000c7565b5060008251905060005b818110156200018957620001738482815181106200015f576200015e620007e9565b5b60200260200101516200028860201b60201c565b8080620001809062000851565b9150506200013c565b5050505050505062000936565b806001600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1662000317576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200030e9062000914565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620003b38262000386565b9050919050565b620003c581620003a6565b8114620003d157600080fd5b50565b600081519050620003e581620003ba565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200043b82620003f0565b810181811067ffffffffffffffff821117156200045d576200045c62000401565b5b80604052505050565b60006200047262000372565b905062000480828262000430565b919050565b600067ffffffffffffffff821115620004a357620004a262000401565b5b602082029050602081019050919050565b600080fd5b6000819050919050565b620004ce81620004b9565b8114620004da57600080fd5b50565b600081519050620004ee81620004c3565b92915050565b60006200050b620005058462000485565b62000466565b90508083825260208201905060208402830185811115620005315762000530620004b4565b5b835b818110156200055e5780620005498882620004dd565b84526020840193505060208101905062000533565b5050509392505050565b600082601f83011262000580576200057f620003eb565b5b815162000592848260208601620004f4565b91505092915050565b600067ffffffffffffffff821115620005b957620005b862000401565b5b602082029050602081019050919050565b6000620005e1620005db846200059b565b62000466565b90508083825260208201905060208402830185811115620006075762000606620004b4565b5b835b818110156200063457806200061f8882620003d4565b84526020840193505060208101905062000609565b5050509392505050565b600082601f830112620006565762000655620003eb565b5b815162000668848260208601620005ca565b91505092915050565b600080600080608085870312156200068e576200068d6200037c565b5b60006200069e87828801620003d4565b945050602085015167ffffffffffffffff811115620006c257620006c162000381565b5b620006d08782880162000568565b935050604085015167ffffffffffffffff811115620006f457620006f362000381565b5b62000702878288016200063e565b925050606085015167ffffffffffffffff81111562000726576200072562000381565b5b62000734878288016200063e565b91505092959194509250565b600082825260208201905092915050565b7f696e697469616c5265736f7572636549447320616e6420696e697469616c436f60008201527f6e7472616374416464726573736573206c656e206d69736d6174636800000000602082015250565b6000620007af603c8362000740565b9150620007bc8262000751565b604082019050919050565b60006020820190508181036000830152620007e281620007a0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000819050919050565b60006200085e8262000847565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362000893576200089262000818565b5b600182019050919050565b7f70726f766964656420636f6e7472616374206973206e6f742077686974656c6960008201527f7374656400000000000000000000000000000000000000000000000000000000602082015250565b6000620008fc60248362000740565b915062000909826200089e565b604082019050919050565b600060208201905081810360008301526200092f81620008ed565b9050919050565b611f4c80620009466000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80637f79bea81161008c578063ba484c0911610066578063ba484c0914610228578063c8ba6c8714610258578063d9caed1214610288578063e248cff2146102a4576100cf565b80637f79bea8146101c057806395601f09146101f0578063b8fa37361461020c576100cf565b806307b7ed99146100d45780630a6d55d8146100f0578063318c136e1461012057806338995da91461013e5780634402027f1461015a5780636a70d08114610190575b600080fd5b6100ee60048036038101906100e991906111e1565b6102c0565b005b61010a60048036038101906101059190611244565b6102d4565b6040516101179190611280565b60405180910390f35b610128610307565b6040516101359190611280565b60405180910390f35b61015860048036038101906101539190611379565b61032b565b005b610174600480360381019061016f9190611413565b610637565b604051610187979695949392919061151a565b60405180910390f35b6101aa60048036038101906101a591906111e1565b610768565b6040516101b791906115ab565b60405180910390f35b6101da60048036038101906101d591906111e1565b610788565b6040516101e791906115ab565b60405180910390f35b61020a600480360381019061020591906115f2565b6107a8565b005b61022660048036038101906102219190611645565b6107bf565b005b610242600480360381019061023d9190611685565b6107d5565b60405161024f91906117e7565b60405180910390f35b610272600480360381019061026d91906111e1565b6109ba565b60405161027f9190611809565b60405180910390f35b6102a2600480360381019061029d91906115f2565b6109d2565b005b6102be60048036038101906102b99190611824565b6109ea565b005b6102c8610b5e565b6102d181610bee565b50565b60016020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610333610b5e565b606060008060c4359150604051925060e435905080830160200160405260e4360360e484376000600160008b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661041c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161041390611907565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561047e57610479818885610cd5565b61048b565b61048a81883086610d4d565b5b6040518060e001604052808273ffffffffffffffffffffffffffffffffffffffff1681526020018360ff1681526020018a60ff1681526020018b81526020018581526020018873ffffffffffffffffffffffffffffffffffffffff16815260200184815250600560008b60ff1660ff16815260200190815260200160002060008a67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548160ff021916908360ff16021790555060408201518160000160156101000a81548160ff021916908360ff1602179055506060820151816001015560808201518160020190816105d69190611b62565b5060a08201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060c0820151816004015590505050505050505050505050565b6005602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060000160149054906101000a900460ff16908060000160159054906101000a900460ff16908060010154908060020180546106b990611985565b80601f01602080910402602001604051908101604052809291908181526020018280546106e590611985565b80156107325780601f1061070757610100808354040283529160200191610732565b820191906000526020600020905b81548152906001019060200180831161071557829003601f168201915b5050505050908060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060040154905087565b60046020528060005260406000206000915054906101000a900460ff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b60008390506107b981843085610d65565b50505050565b6107c7610b5e565b6107d18282610dee565b5050565b6107dd611107565b600560008360ff1660ff16815260200190815260200160002060008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060e00160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900460ff1660ff1660ff1681526020016000820160159054906101000a900460ff1660ff1660ff168152602001600182015481526020016002820180546108d090611985565b80601f01602080910402602001604051908101604052809291908181526020018280546108fc90611985565b80156109495780601f1061091e57610100808354040283529160200191610949565b820191906000526020600020905b81548152906001019060200180831161092c57829003601f168201915b505050505081526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600482015481525050905092915050565b60026020528060005260406000206000915090505481565b6109da610b5e565b6109e5838383610ee0565b505050565b6109f2610b5e565b60006060606435915060405190506084358082016020016040526084360360848337506000806001600088815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060208301519150600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610ae1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad890611907565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610b4657610b41818360601c86610ef6565b610b55565b610b54818360601c86610ee0565b5b50505050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be390611c80565b60405180910390fd5b565b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610c7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7190611d12565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008390508073ffffffffffffffffffffffffffffffffffffffff166379cc679084846040518363ffffffff1660e01b8152600401610d15929190611d32565b600060405180830381600087803b158015610d2f57600080fd5b505af1158015610d43573d6000803e3d6000fd5b5050505050505050565b6000849050610d5e81858585610d65565b5050505050565b610de8846323b872dd60e01b858585604051602401610d8693929190611d5b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610f6e565b50505050565b806001600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000839050610ef0818484611081565b50505050565b60008390508073ffffffffffffffffffffffffffffffffffffffff166340c10f1984846040518363ffffffff1660e01b8152600401610f36929190611d32565b600060405180830381600087803b158015610f5057600080fd5b505af1158015610f64573d6000803e3d6000fd5b5050505050505050565b6000808373ffffffffffffffffffffffffffffffffffffffff1683604051610f969190611dce565b6000604051808303816000865af19150503d8060008114610fd3576040519150601f19603f3d011682016040523d82523d6000602084013e610fd8565b606091505b50915091508161101d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101490611e31565b60405180910390fd5b60008151111561107b578080602001905181019061103b9190611e7d565b61107a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107190611ef6565b60405180910390fd5b5b50505050565b6111028363a9059cbb60e01b84846040516024016110a0929190611d32565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610f6e565b505050565b6040518060e00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600060ff168152602001600060ff1681526020016000801916815260200160608152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006111ae82611183565b9050919050565b6111be816111a3565b81146111c957600080fd5b50565b6000813590506111db816111b5565b92915050565b6000602082840312156111f7576111f6611179565b5b6000611205848285016111cc565b91505092915050565b6000819050919050565b6112218161120e565b811461122c57600080fd5b50565b60008135905061123e81611218565b92915050565b60006020828403121561125a57611259611179565b5b60006112688482850161122f565b91505092915050565b61127a816111a3565b82525050565b60006020820190506112956000830184611271565b92915050565b600060ff82169050919050565b6112b18161129b565b81146112bc57600080fd5b50565b6000813590506112ce816112a8565b92915050565b600067ffffffffffffffff82169050919050565b6112f1816112d4565b81146112fc57600080fd5b50565b60008135905061130e816112e8565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261133957611338611314565b5b8235905067ffffffffffffffff81111561135657611355611319565b5b6020830191508360018202830111156113725761137161131e565b5b9250929050565b60008060008060008060a0878903121561139657611395611179565b5b60006113a489828a0161122f565b96505060206113b589828a016112bf565b95505060406113c689828a016112ff565b94505060606113d789828a016111cc565b935050608087013567ffffffffffffffff8111156113f8576113f761117e565b5b61140489828a01611323565b92509250509295509295509295565b6000806040838503121561142a57611429611179565b5b6000611438858286016112bf565b9250506020611449858286016112ff565b9150509250929050565b61145c8161129b565b82525050565b61146b8161120e565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b838110156114ab578082015181840152602081019050611490565b60008484015250505050565b6000601f19601f8301169050919050565b60006114d382611471565b6114dd818561147c565b93506114ed81856020860161148d565b6114f6816114b7565b840191505092915050565b6000819050919050565b61151481611501565b82525050565b600060e08201905061152f600083018a611271565b61153c6020830189611453565b6115496040830188611453565b6115566060830187611462565b818103608083015261156881866114c8565b905061157760a0830185611271565b61158460c083018461150b565b98975050505050505050565b60008115159050919050565b6115a581611590565b82525050565b60006020820190506115c0600083018461159c565b92915050565b6115cf81611501565b81146115da57600080fd5b50565b6000813590506115ec816115c6565b92915050565b60008060006060848603121561160b5761160a611179565b5b6000611619868287016111cc565b935050602061162a868287016111cc565b925050604061163b868287016115dd565b9150509250925092565b6000806040838503121561165c5761165b611179565b5b600061166a8582860161122f565b925050602061167b858286016111cc565b9150509250929050565b6000806040838503121561169c5761169b611179565b5b60006116aa858286016112ff565b92505060206116bb858286016112bf565b9150509250929050565b6116ce816111a3565b82525050565b6116dd8161129b565b82525050565b6116ec8161120e565b82525050565b600082825260208201905092915050565b600061170e82611471565b61171881856116f2565b935061172881856020860161148d565b611731816114b7565b840191505092915050565b61174581611501565b82525050565b600060e08301600083015161176360008601826116c5565b50602083015161177660208601826116d4565b50604083015161178960408601826116d4565b50606083015161179c60608601826116e3565b50608083015184820360808601526117b48282611703565b91505060a08301516117c960a08601826116c5565b5060c08301516117dc60c086018261173c565b508091505092915050565b60006020820190508181036000830152611801818461174b565b905092915050565b600060208201905061181e6000830184611462565b92915050565b60008060006040848603121561183d5761183c611179565b5b600061184b8682870161122f565b935050602084013567ffffffffffffffff81111561186c5761186b61117e565b5b61187886828701611323565b92509250509250925092565b600082825260208201905092915050565b7f70726f766964656420746f6b656e41646472657373206973206e6f742077686960008201527f74656c6973746564000000000000000000000000000000000000000000000000602082015250565b60006118f1602883611884565b91506118fc82611895565b604082019050919050565b60006020820190508181036000830152611920816118e4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061199d57607f821691505b6020821081036119b0576119af611956565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302611a187fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826119db565b611a2286836119db565b95508019841693508086168417925050509392505050565b6000819050919050565b6000611a5f611a5a611a5584611501565b611a3a565b611501565b9050919050565b6000819050919050565b611a7983611a44565b611a8d611a8582611a66565b8484546119e8565b825550505050565b600090565b611aa2611a95565b611aad818484611a70565b505050565b5b81811015611ad157611ac6600082611a9a565b600181019050611ab3565b5050565b601f821115611b1657611ae7816119b6565b611af0846119cb565b81016020851015611aff578190505b611b13611b0b856119cb565b830182611ab2565b50505b505050565b600082821c905092915050565b6000611b3960001984600802611b1b565b1980831691505092915050565b6000611b528383611b28565b9150826002028217905092915050565b611b6b82611471565b67ffffffffffffffff811115611b8457611b83611927565b5b611b8e8254611985565b611b99828285611ad5565b600060209050601f831160018114611bcc5760008415611bba578287015190505b611bc48582611b46565b865550611c2c565b601f198416611bda866119b6565b60005b82811015611c0257848901518255600182019150602085019450602081019050611bdd565b86831015611c1f5784890151611c1b601f891682611b28565b8355505b6001600288020188555050505b505050505050565b7f73656e646572206d7573742062652062726964676520636f6e74726163740000600082015250565b6000611c6a601e83611884565b9150611c7582611c34565b602082019050919050565b60006020820190508181036000830152611c9981611c5d565b9050919050565b7f70726f766964656420636f6e7472616374206973206e6f742077686974656c6960008201527f7374656400000000000000000000000000000000000000000000000000000000602082015250565b6000611cfc602483611884565b9150611d0782611ca0565b604082019050919050565b60006020820190508181036000830152611d2b81611cef565b9050919050565b6000604082019050611d476000830185611271565b611d54602083018461150b565b9392505050565b6000606082019050611d706000830186611271565b611d7d6020830185611271565b611d8a604083018461150b565b949350505050565b600081905092915050565b6000611da882611471565b611db28185611d92565b9350611dc281856020860161148d565b80840191505092915050565b6000611dda8284611d9d565b915081905092915050565b7f45524332303a2063616c6c206661696c65640000000000000000000000000000600082015250565b6000611e1b601283611884565b9150611e2682611de5565b602082019050919050565b60006020820190508181036000830152611e4a81611e0e565b9050919050565b611e5a81611590565b8114611e6557600080fd5b50565b600081519050611e7781611e51565b92915050565b600060208284031215611e9357611e92611179565b5b6000611ea184828501611e68565b91505092915050565b7f45524332303a206f7065726174696f6e20646964206e6f742073756363656564600082015250565b6000611ee0602083611884565b9150611eeb82611eaa565b602082019050919050565b60006020820190508181036000830152611f0f81611ed3565b905091905056fea2646970667358221220e8ffb108e81be5cb36176636b7a45f0ac9f4c0c3fa690bd75fe25d7bca773e6464736f6c63430008130033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c80637f79bea81161008c578063ba484c0911610066578063ba484c0914610228578063c8ba6c8714610258578063d9caed1214610288578063e248cff2146102a4576100cf565b80637f79bea8146101c057806395601f09146101f0578063b8fa37361461020c576100cf565b806307b7ed99146100d45780630a6d55d8146100f0578063318c136e1461012057806338995da91461013e5780634402027f1461015a5780636a70d08114610190575b600080fd5b6100ee60048036038101906100e991906111e1565b6102c0565b005b61010a60048036038101906101059190611244565b6102d4565b6040516101179190611280565b60405180910390f35b610128610307565b6040516101359190611280565b60405180910390f35b61015860048036038101906101539190611379565b61032b565b005b610174600480360381019061016f9190611413565b610637565b604051610187979695949392919061151a565b60405180910390f35b6101aa60048036038101906101a591906111e1565b610768565b6040516101b791906115ab565b60405180910390f35b6101da60048036038101906101d591906111e1565b610788565b6040516101e791906115ab565b60405180910390f35b61020a600480360381019061020591906115f2565b6107a8565b005b61022660048036038101906102219190611645565b6107bf565b005b610242600480360381019061023d9190611685565b6107d5565b60405161024f91906117e7565b60405180910390f35b610272600480360381019061026d91906111e1565b6109ba565b60405161027f9190611809565b60405180910390f35b6102a2600480360381019061029d91906115f2565b6109d2565b005b6102be60048036038101906102b99190611824565b6109ea565b005b6102c8610b5e565b6102d181610bee565b50565b60016020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610333610b5e565b606060008060c4359150604051925060e435905080830160200160405260e4360360e484376000600160008b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661041c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161041390611907565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561047e57610479818885610cd5565b61048b565b61048a81883086610d4d565b5b6040518060e001604052808273ffffffffffffffffffffffffffffffffffffffff1681526020018360ff1681526020018a60ff1681526020018b81526020018581526020018873ffffffffffffffffffffffffffffffffffffffff16815260200184815250600560008b60ff1660ff16815260200190815260200160002060008a67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548160ff021916908360ff16021790555060408201518160000160156101000a81548160ff021916908360ff1602179055506060820151816001015560808201518160020190816105d69190611b62565b5060a08201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060c0820151816004015590505050505050505050505050565b6005602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060000160149054906101000a900460ff16908060000160159054906101000a900460ff16908060010154908060020180546106b990611985565b80601f01602080910402602001604051908101604052809291908181526020018280546106e590611985565b80156107325780601f1061070757610100808354040283529160200191610732565b820191906000526020600020905b81548152906001019060200180831161071557829003601f168201915b5050505050908060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060040154905087565b60046020528060005260406000206000915054906101000a900460ff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b60008390506107b981843085610d65565b50505050565b6107c7610b5e565b6107d18282610dee565b5050565b6107dd611107565b600560008360ff1660ff16815260200190815260200160002060008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060e00160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900460ff1660ff1660ff1681526020016000820160159054906101000a900460ff1660ff1660ff168152602001600182015481526020016002820180546108d090611985565b80601f01602080910402602001604051908101604052809291908181526020018280546108fc90611985565b80156109495780601f1061091e57610100808354040283529160200191610949565b820191906000526020600020905b81548152906001019060200180831161092c57829003601f168201915b505050505081526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600482015481525050905092915050565b60026020528060005260406000206000915090505481565b6109da610b5e565b6109e5838383610ee0565b505050565b6109f2610b5e565b60006060606435915060405190506084358082016020016040526084360360848337506000806001600088815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060208301519150600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610ae1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad890611907565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610b4657610b41818360601c86610ef6565b610b55565b610b54818360601c86610ee0565b5b50505050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be390611c80565b60405180910390fd5b565b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610c7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7190611d12565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008390508073ffffffffffffffffffffffffffffffffffffffff166379cc679084846040518363ffffffff1660e01b8152600401610d15929190611d32565b600060405180830381600087803b158015610d2f57600080fd5b505af1158015610d43573d6000803e3d6000fd5b5050505050505050565b6000849050610d5e81858585610d65565b5050505050565b610de8846323b872dd60e01b858585604051602401610d8693929190611d5b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610f6e565b50505050565b806001600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000839050610ef0818484611081565b50505050565b60008390508073ffffffffffffffffffffffffffffffffffffffff166340c10f1984846040518363ffffffff1660e01b8152600401610f36929190611d32565b600060405180830381600087803b158015610f5057600080fd5b505af1158015610f64573d6000803e3d6000fd5b5050505050505050565b6000808373ffffffffffffffffffffffffffffffffffffffff1683604051610f969190611dce565b6000604051808303816000865af19150503d8060008114610fd3576040519150601f19603f3d011682016040523d82523d6000602084013e610fd8565b606091505b50915091508161101d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101490611e31565b60405180910390fd5b60008151111561107b578080602001905181019061103b9190611e7d565b61107a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107190611ef6565b60405180910390fd5b5b50505050565b6111028363a9059cbb60e01b84846040516024016110a0929190611d32565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610f6e565b505050565b6040518060e00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600060ff168152602001600060ff1681526020016000801916815260200160608152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006111ae82611183565b9050919050565b6111be816111a3565b81146111c957600080fd5b50565b6000813590506111db816111b5565b92915050565b6000602082840312156111f7576111f6611179565b5b6000611205848285016111cc565b91505092915050565b6000819050919050565b6112218161120e565b811461122c57600080fd5b50565b60008135905061123e81611218565b92915050565b60006020828403121561125a57611259611179565b5b60006112688482850161122f565b91505092915050565b61127a816111a3565b82525050565b60006020820190506112956000830184611271565b92915050565b600060ff82169050919050565b6112b18161129b565b81146112bc57600080fd5b50565b6000813590506112ce816112a8565b92915050565b600067ffffffffffffffff82169050919050565b6112f1816112d4565b81146112fc57600080fd5b50565b60008135905061130e816112e8565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261133957611338611314565b5b8235905067ffffffffffffffff81111561135657611355611319565b5b6020830191508360018202830111156113725761137161131e565b5b9250929050565b60008060008060008060a0878903121561139657611395611179565b5b60006113a489828a0161122f565b96505060206113b589828a016112bf565b95505060406113c689828a016112ff565b94505060606113d789828a016111cc565b935050608087013567ffffffffffffffff8111156113f8576113f761117e565b5b61140489828a01611323565b92509250509295509295509295565b6000806040838503121561142a57611429611179565b5b6000611438858286016112bf565b9250506020611449858286016112ff565b9150509250929050565b61145c8161129b565b82525050565b61146b8161120e565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b838110156114ab578082015181840152602081019050611490565b60008484015250505050565b6000601f19601f8301169050919050565b60006114d382611471565b6114dd818561147c565b93506114ed81856020860161148d565b6114f6816114b7565b840191505092915050565b6000819050919050565b61151481611501565b82525050565b600060e08201905061152f600083018a611271565b61153c6020830189611453565b6115496040830188611453565b6115566060830187611462565b818103608083015261156881866114c8565b905061157760a0830185611271565b61158460c083018461150b565b98975050505050505050565b60008115159050919050565b6115a581611590565b82525050565b60006020820190506115c0600083018461159c565b92915050565b6115cf81611501565b81146115da57600080fd5b50565b6000813590506115ec816115c6565b92915050565b60008060006060848603121561160b5761160a611179565b5b6000611619868287016111cc565b935050602061162a868287016111cc565b925050604061163b868287016115dd565b9150509250925092565b6000806040838503121561165c5761165b611179565b5b600061166a8582860161122f565b925050602061167b858286016111cc565b9150509250929050565b6000806040838503121561169c5761169b611179565b5b60006116aa858286016112ff565b92505060206116bb858286016112bf565b9150509250929050565b6116ce816111a3565b82525050565b6116dd8161129b565b82525050565b6116ec8161120e565b82525050565b600082825260208201905092915050565b600061170e82611471565b61171881856116f2565b935061172881856020860161148d565b611731816114b7565b840191505092915050565b61174581611501565b82525050565b600060e08301600083015161176360008601826116c5565b50602083015161177660208601826116d4565b50604083015161178960408601826116d4565b50606083015161179c60608601826116e3565b50608083015184820360808601526117b48282611703565b91505060a08301516117c960a08601826116c5565b5060c08301516117dc60c086018261173c565b508091505092915050565b60006020820190508181036000830152611801818461174b565b905092915050565b600060208201905061181e6000830184611462565b92915050565b60008060006040848603121561183d5761183c611179565b5b600061184b8682870161122f565b935050602084013567ffffffffffffffff81111561186c5761186b61117e565b5b61187886828701611323565b92509250509250925092565b600082825260208201905092915050565b7f70726f766964656420746f6b656e41646472657373206973206e6f742077686960008201527f74656c6973746564000000000000000000000000000000000000000000000000602082015250565b60006118f1602883611884565b91506118fc82611895565b604082019050919050565b60006020820190508181036000830152611920816118e4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061199d57607f821691505b6020821081036119b0576119af611956565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302611a187fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826119db565b611a2286836119db565b95508019841693508086168417925050509392505050565b6000819050919050565b6000611a5f611a5a611a5584611501565b611a3a565b611501565b9050919050565b6000819050919050565b611a7983611a44565b611a8d611a8582611a66565b8484546119e8565b825550505050565b600090565b611aa2611a95565b611aad818484611a70565b505050565b5b81811015611ad157611ac6600082611a9a565b600181019050611ab3565b5050565b601f821115611b1657611ae7816119b6565b611af0846119cb565b81016020851015611aff578190505b611b13611b0b856119cb565b830182611ab2565b50505b505050565b600082821c905092915050565b6000611b3960001984600802611b1b565b1980831691505092915050565b6000611b528383611b28565b9150826002028217905092915050565b611b6b82611471565b67ffffffffffffffff811115611b8457611b83611927565b5b611b8e8254611985565b611b99828285611ad5565b600060209050601f831160018114611bcc5760008415611bba578287015190505b611bc48582611b46565b865550611c2c565b601f198416611bda866119b6565b60005b82811015611c0257848901518255600182019150602085019450602081019050611bdd565b86831015611c1f5784890151611c1b601f891682611b28565b8355505b6001600288020188555050505b505050505050565b7f73656e646572206d7573742062652062726964676520636f6e74726163740000600082015250565b6000611c6a601e83611884565b9150611c7582611c34565b602082019050919050565b60006020820190508181036000830152611c9981611c5d565b9050919050565b7f70726f766964656420636f6e7472616374206973206e6f742077686974656c6960008201527f7374656400000000000000000000000000000000000000000000000000000000602082015250565b6000611cfc602483611884565b9150611d0782611ca0565b604082019050919050565b60006020820190508181036000830152611d2b81611cef565b9050919050565b6000604082019050611d476000830185611271565b611d54602083018461150b565b9392505050565b6000606082019050611d706000830186611271565b611d7d6020830185611271565b611d8a604083018461150b565b949350505050565b600081905092915050565b6000611da882611471565b611db28185611d92565b9350611dc281856020860161148d565b80840191505092915050565b6000611dda8284611d9d565b915081905092915050565b7f45524332303a2063616c6c206661696c65640000000000000000000000000000600082015250565b6000611e1b601283611884565b9150611e2682611de5565b602082019050919050565b60006020820190508181036000830152611e4a81611e0e565b9050919050565b611e5a81611590565b8114611e6557600080fd5b50565b600081519050611e7781611e51565b92915050565b600060208284031215611e9357611e92611179565b5b6000611ea184828501611e68565b91505092915050565b7f45524332303a206f7065726174696f6e20646964206e6f742073756363656564600082015250565b6000611ee0602083611884565b9150611eeb82611eaa565b602082019050919050565b60006020820190508181036000830152611f0f81611ed3565b905091905056fea2646970667358221220e8ffb108e81be5cb36176636b7a45f0ac9f4c0c3fa690bd75fe25d7bca773e6464736f6c63430008130033", + "immutableReferences": {}, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:9504:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "47:35:66", + "statements": [ { - "internalType": "address", - "name": "", - "type": "address" + "nodeType": "YulAssignment", + "src": "57:19:66", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "73:2:66", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "67:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "67:9:66" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "57:6:66" + } + ] } + ] + }, + "name": "allocate_unbounded", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "40:6:66", + "type": "" + } ], - "name": "_burnList", - "outputs": [ + "src": "7:75:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "177:28:66", + "statements": [ { - "internalType": "bool", - "name": "", - "type": "bool" + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "194:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "197:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "187:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "187:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "187:12:66" } - ], - "stateMutability": "view", - "type": "function", - "constant": true - }, - { - "inputs": [ + ] + }, + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulFunctionDefinition", + "src": "88:117:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "300:28:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "317:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "320:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "310:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "310:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "310:12:66" + } + ] + }, + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulFunctionDefinition", + "src": "211:117:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "379:81:66", + "statements": [ { - "internalType": "address", - "name": "", - "type": "address" + "nodeType": "YulAssignment", + "src": "389:65:66", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "404:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "411:42:66", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "400:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "400:54:66" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "389:7:66" + } + ] } + ] + }, + "name": "cleanup_t_uint160", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "361:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "371:7:66", + "type": "" + } ], - "name": "_contractWhitelist", - "outputs": [ + "src": "334:126:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "511:51:66", + "statements": [ { - "internalType": "bool", - "name": "", - "type": "bool" + "nodeType": "YulAssignment", + "src": "521:35:66", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "550:5:66" + } + ], + "functionName": { + "name": "cleanup_t_uint160", + "nodeType": "YulIdentifier", + "src": "532:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "532:24:66" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "521:7:66" + } + ] } + ] + }, + "name": "cleanup_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "493:5:66", + "type": "" + } ], - "stateMutability": "view", - "type": "function", - "constant": true - }, - { - "inputs": [ + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "503:7:66", + "type": "" + } + ], + "src": "466:96:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "611:79:66", + "statements": [ { - "internalType": "address", - "name": "", - "type": "address" + "body": { + "nodeType": "YulBlock", + "src": "668:16:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "677:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "680:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "670:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "670:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "670:12:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "634:5:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "659:5:66" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "641:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "641:24:66" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "631:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "631:35:66" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "624:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "624:43:66" + }, + "nodeType": "YulIf", + "src": "621:63:66" } + ] + }, + "name": "validator_revert_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "604:5:66", + "type": "" + } ], - "name": "_decimals", - "outputs": [ + "src": "568:122:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "759:80:66", + "statements": [ { - "internalType": "uint8", - "name": "srcDecimals", - "type": "uint8" + "nodeType": "YulAssignment", + "src": "769:22:66", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "784:6:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "778:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "778:13:66" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "769:5:66" + } + ] }, { - "internalType": "uint8", - "name": "destDecimals", - "type": "uint8" + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "827:5:66" + } + ], + "functionName": { + "name": "validator_revert_t_address", + "nodeType": "YulIdentifier", + "src": "800:26:66" + }, + "nodeType": "YulFunctionCall", + "src": "800:33:66" + }, + "nodeType": "YulExpressionStatement", + "src": "800:33:66" } + ] + }, + "name": "abi_decode_t_address_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "737:6:66", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "745:3:66", + "type": "" + } ], - "stateMutability": "view", - "type": "function", - "constant": true - }, - { - "inputs": [ + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "753:5:66", + "type": "" + } + ], + "src": "696:143:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "934:28:66", + "statements": [ { - "internalType": "uint8", - "name": "", - "type": "uint8" - }, + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "951:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "954:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "944:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "944:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "944:12:66" + } + ] + }, + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulFunctionDefinition", + "src": "845:117:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1016:54:66", + "statements": [ { - "internalType": "uint64", - "name": "", - "type": "uint64" + "nodeType": "YulAssignment", + "src": "1026:38:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1044:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1051:2:66", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1040:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "1040:14:66" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1060:2:66", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "1056:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "1056:7:66" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "1036:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "1036:28:66" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "1026:6:66" + } + ] } + ] + }, + "name": "round_up_to_mul_of_32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "999:5:66", + "type": "" + } ], - "name": "_depositRecords", - "outputs": [ - { - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - }, + "returnVariables": [ + { + "name": "result", + "nodeType": "YulTypedName", + "src": "1009:6:66", + "type": "" + } + ], + "src": "968:102:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1104:152:66", + "statements": [ { - "internalType": "uint8", - "name": "_lenDestinationRecipientAddress", - "type": "uint8" + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1121:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1124:77:66", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1114:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "1114:88:66" + }, + "nodeType": "YulExpressionStatement", + "src": "1114:88:66" }, { - "internalType": "uint8", - "name": "_destinationChainID", - "type": "uint8" + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1218:1:66", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1221:4:66", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1211:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "1211:15:66" + }, + "nodeType": "YulExpressionStatement", + "src": "1211:15:66" }, { - "internalType": "bytes32", - "name": "_resourceID", - "type": "bytes32" - }, + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1242:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1245:4:66", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1235:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "1235:15:66" + }, + "nodeType": "YulExpressionStatement", + "src": "1235:15:66" + } + ] + }, + "name": "panic_error_0x41", + "nodeType": "YulFunctionDefinition", + "src": "1076:180:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1305:238:66", + "statements": [ { - "internalType": "bytes", - "name": "_destinationRecipientAddress", - "type": "bytes" + "nodeType": "YulVariableDeclaration", + "src": "1315:58:66", + "value": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1337:6:66" + }, + { + "arguments": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "1367:4:66" + } + ], + "functionName": { + "name": "round_up_to_mul_of_32", + "nodeType": "YulIdentifier", + "src": "1345:21:66" + }, + "nodeType": "YulFunctionCall", + "src": "1345:27:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1333:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "1333:40:66" + }, + "variables": [ + { + "name": "newFreePtr", + "nodeType": "YulTypedName", + "src": "1319:10:66", + "type": "" + } + ] }, { - "internalType": "address", - "name": "_depositer", - "type": "address" + "body": { + "nodeType": "YulBlock", + "src": "1484:22:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "1486:16:66" + }, + "nodeType": "YulFunctionCall", + "src": "1486:18:66" + }, + "nodeType": "YulExpressionStatement", + "src": "1486:18:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "1427:10:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1439:18:66", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1424:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "1424:34:66" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "1463:10:66" + }, + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1475:6:66" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "1460:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "1460:22:66" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "1421:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "1421:62:66" + }, + "nodeType": "YulIf", + "src": "1418:88:66" }, { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1522:2:66", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "1526:10:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1515:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "1515:22:66" + }, + "nodeType": "YulExpressionStatement", + "src": "1515:22:66" } + ] + }, + "name": "finalize_allocation", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "1291:6:66", + "type": "" + }, + { + "name": "size", + "nodeType": "YulTypedName", + "src": "1299:4:66", + "type": "" + } ], - "stateMutability": "view", - "type": "function", - "constant": true - }, - { - "inputs": [ + "src": "1262:281:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1590:88:66", + "statements": [ { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "name": "_resourceIDToTokenContractAddress", - "outputs": [ + "nodeType": "YulAssignment", + "src": "1600:30:66", + "value": { + "arguments": [], + "functionName": { + "name": "allocate_unbounded", + "nodeType": "YulIdentifier", + "src": "1610:18:66" + }, + "nodeType": "YulFunctionCall", + "src": "1610:20:66" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1600:6:66" + } + ] + }, { - "internalType": "address", - "name": "", - "type": "address" + "expression": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1659:6:66" + }, + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "1667:4:66" + } + ], + "functionName": { + "name": "finalize_allocation", + "nodeType": "YulIdentifier", + "src": "1639:19:66" + }, + "nodeType": "YulFunctionCall", + "src": "1639:33:66" + }, + "nodeType": "YulExpressionStatement", + "src": "1639:33:66" } + ] + }, + "name": "allocate_memory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "size", + "nodeType": "YulTypedName", + "src": "1574:4:66", + "type": "" + } ], - "stateMutability": "view", - "type": "function", - "constant": true - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "1583:6:66", + "type": "" + } ], - "name": "_tokenContractAddressToResourceID", - "outputs": [ + "src": "1549:129:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1766:229:66", + "statements": [ { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true - }, - { - "inputs": [ + "body": { + "nodeType": "YulBlock", + "src": "1871:22:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "1873:16:66" + }, + "nodeType": "YulFunctionCall", + "src": "1873:18:66" + }, + "nodeType": "YulExpressionStatement", + "src": "1873:18:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1843:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1851:18:66", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1840:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "1840:30:66" + }, + "nodeType": "YulIf", + "src": "1837:56:66" + }, { - "internalType": "address", - "name": "contractAddress", - "type": "address" - } - ], - "name": "setBurnable", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "contractAddress", - "type": "address" - }, - { - "internalType": "uint8", - "name": "srcDecimals", - "type": "uint8" + "nodeType": "YulAssignment", + "src": "1903:25:66", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1915:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1923:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "1911:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "1911:17:66" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "1903:4:66" + } + ] }, { - "internalType": "uint8", - "name": "destDecimals", - "type": "uint8" + "nodeType": "YulAssignment", + "src": "1965:23:66", + "value": { + "arguments": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "1977:4:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1983:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1973:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "1973:15:66" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "1965:4:66" + } + ] } + ] + }, + "name": "array_allocation_size_t_array$_t_bytes32_$dyn_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "1750:6:66", + "type": "" + } ], - "name": "setDecimals", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ + "returnVariables": [ + { + "name": "size", + "nodeType": "YulTypedName", + "src": "1761:4:66", + "type": "" + } + ], + "src": "1684:311:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2090:28:66", + "statements": [ { - "internalType": "bytes32", - "name": "resourceID", - "type": "bytes32" - }, + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2107:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2110:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2100:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "2100:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "2100:12:66" + } + ] + }, + "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", + "nodeType": "YulFunctionDefinition", + "src": "2001:117:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2169:32:66", + "statements": [ { - "internalType": "address", - "name": "contractAddress", - "type": "address" + "nodeType": "YulAssignment", + "src": "2179:16:66", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2190:5:66" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "2179:7:66" + } + ] } + ] + }, + "name": "cleanup_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2151:5:66", + "type": "" + } ], - "name": "setResource", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "2161:7:66", + "type": "" + } + ], + "src": "2124:77:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2250:79:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2307:16:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2316:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2319:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2309:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "2309:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "2309:12:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2273:5:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2298:5:66" + } + ], + "functionName": { + "name": "cleanup_t_bytes32", + "nodeType": "YulIdentifier", + "src": "2280:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "2280:24:66" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "2270:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "2270:35:66" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "2263:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "2263:43:66" + }, + "nodeType": "YulIf", + "src": "2260:63:66" + } + ] + }, + "name": "validator_revert_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2243:5:66", + "type": "" + } + ], + "src": "2207:122:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2398:80:66", + "statements": [ { - "internalType": "uint64", - "name": "depositNonce", - "type": "uint64" + "nodeType": "YulAssignment", + "src": "2408:22:66", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2423:6:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "2417:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "2417:13:66" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2408:5:66" + } + ] }, { - "internalType": "uint8", - "name": "destId", - "type": "uint8" + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2466:5:66" + } + ], + "functionName": { + "name": "validator_revert_t_bytes32", + "nodeType": "YulIdentifier", + "src": "2439:26:66" + }, + "nodeType": "YulFunctionCall", + "src": "2439:33:66" + }, + "nodeType": "YulExpressionStatement", + "src": "2439:33:66" } + ] + }, + "name": "abi_decode_t_bytes32_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "2376:6:66", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "2384:3:66", + "type": "" + } ], - "name": "getDepositRecord", - "outputs": [ + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2392:5:66", + "type": "" + } + ], + "src": "2335:143:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2614:619:66", + "statements": [ { - "components": [ - { - "internalType": "address", - "name": "_tokenAddress", - "type": "address" + "nodeType": "YulAssignment", + "src": "2624:90:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2706:6:66" + } + ], + "functionName": { + "name": "array_allocation_size_t_array$_t_bytes32_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "2649:56:66" }, - { - "internalType": "uint8", - "name": "_lenDestinationRecipientAddress", - "type": "uint8" + "nodeType": "YulFunctionCall", + "src": "2649:64:66" + } + ], + "functionName": { + "name": "allocate_memory", + "nodeType": "YulIdentifier", + "src": "2633:15:66" + }, + "nodeType": "YulFunctionCall", + "src": "2633:81:66" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "2624:5:66" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2723:16:66", + "value": { + "name": "array", + "nodeType": "YulIdentifier", + "src": "2734:5:66" + }, + "variables": [ + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "2727:3:66", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "2756:5:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2763:6:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2749:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "2749:21:66" + }, + "nodeType": "YulExpressionStatement", + "src": "2749:21:66" + }, + { + "nodeType": "YulAssignment", + "src": "2779:23:66", + "value": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "2790:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2797:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2786:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "2786:16:66" + }, + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "2779:3:66" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2812:44:66", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2830:6:66" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2842:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2850:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "2838:3:66" }, - { - "internalType": "uint8", - "name": "_destinationChainID", - "type": "uint8" + "nodeType": "YulFunctionCall", + "src": "2838:17:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2826:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "2826:30:66" + }, + "variables": [ + { + "name": "srcEnd", + "nodeType": "YulTypedName", + "src": "2816:6:66", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2884:103:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", + "nodeType": "YulIdentifier", + "src": "2898:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "2898:79:66" }, - { - "internalType": "bytes32", - "name": "_resourceID", - "type": "bytes32" + "nodeType": "YulExpressionStatement", + "src": "2898:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "2871:6:66" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "2879:3:66" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "2868:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "2868:15:66" + }, + "nodeType": "YulIf", + "src": "2865:122:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3072:155:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "3087:21:66", + "value": { + "name": "src", + "nodeType": "YulIdentifier", + "src": "3105:3:66" }, - { - "internalType": "bytes", - "name": "_destinationRecipientAddress", - "type": "bytes" + "variables": [ + { + "name": "elementPos", + "nodeType": "YulTypedName", + "src": "3091:10:66", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3129:3:66" + }, + { + "arguments": [ + { + "name": "elementPos", + "nodeType": "YulIdentifier", + "src": "3166:10:66" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "3178:3:66" + } + ], + "functionName": { + "name": "abi_decode_t_bytes32_fromMemory", + "nodeType": "YulIdentifier", + "src": "3134:31:66" + }, + "nodeType": "YulFunctionCall", + "src": "3134:48:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3122:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "3122:61:66" }, - { - "internalType": "address", - "name": "_depositer", - "type": "address" + "nodeType": "YulExpressionStatement", + "src": "3122:61:66" + }, + { + "nodeType": "YulAssignment", + "src": "3196:21:66", + "value": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3207:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3212:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3203:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "3203:14:66" }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3196:3:66" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "3025:3:66" + }, + { + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "3030:6:66" + } ], - "internalType": "struct ERC20Handler.DepositRecord", - "name": "", - "type": "tuple" + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "3022:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "3022:15:66" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "3038:25:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3040:21:66", + "value": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "3051:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3056:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3047:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "3047:14:66" + }, + "variableNames": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "3040:3:66" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "3000:21:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "3002:17:66", + "value": { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3013:6:66" + }, + "variables": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "3006:3:66", + "type": "" + } + ] + } + ] + }, + "src": "2996:231:66" } + ] + }, + "name": "abi_decode_available_length_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "2584:6:66", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "2592:6:66", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "2600:3:66", + "type": "" + } ], - "stateMutability": "view", - "type": "function", - "constant": true - }, - { - "inputs": [ + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "2608:5:66", + "type": "" + } + ], + "src": "2501:732:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3344:297:66", + "statements": [ { - "internalType": "bytes32", - "name": "resourceID", - "type": "bytes32" + "body": { + "nodeType": "YulBlock", + "src": "3393:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulIdentifier", + "src": "3395:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "3395:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "3395:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3372:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3380:4:66", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3368:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "3368:17:66" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "3387:3:66" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "3364:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "3364:27:66" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3357:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "3357:35:66" + }, + "nodeType": "YulIf", + "src": "3354:122:66" }, { - "internalType": "uint8", - "name": "destinationChainID", - "type": "uint8" + "nodeType": "YulVariableDeclaration", + "src": "3485:27:66", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3505:6:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "3499:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "3499:13:66" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "3489:6:66", + "type": "" + } + ] }, { - "internalType": "uint64", - "name": "depositNonce", - "type": "uint64" + "nodeType": "YulAssignment", + "src": "3521:114:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3608:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3616:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3604:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "3604:17:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "3623:6:66" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "3631:3:66" + } + ], + "functionName": { + "name": "abi_decode_available_length_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory", + "nodeType": "YulIdentifier", + "src": "3530:73:66" + }, + "nodeType": "YulFunctionCall", + "src": "3530:105:66" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "3521:5:66" + } + ] + } + ] + }, + "name": "abi_decode_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "3322:6:66", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "3330:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "3338:5:66", + "type": "" + } + ], + "src": "3256:385:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3729:229:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3834:22:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "3836:16:66" + }, + "nodeType": "YulFunctionCall", + "src": "3836:18:66" + }, + "nodeType": "YulExpressionStatement", + "src": "3836:18:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "3806:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3814:18:66", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "3803:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "3803:30:66" + }, + "nodeType": "YulIf", + "src": "3800:56:66" }, { - "internalType": "address", - "name": "depositer", - "type": "address" + "nodeType": "YulAssignment", + "src": "3866:25:66", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "3878:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3886:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "3874:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "3874:17:66" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "3866:4:66" + } + ] }, { - "internalType": "bytes", - "name": "data", - "type": "bytes" + "nodeType": "YulAssignment", + "src": "3928:23:66", + "value": { + "arguments": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "3940:4:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3946:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3936:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "3936:15:66" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "3928:4:66" + } + ] } + ] + }, + "name": "array_allocation_size_t_array$_t_address_$dyn_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "3713:6:66", + "type": "" + } ], - "name": "deposit", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ + "returnVariables": [ + { + "name": "size", + "nodeType": "YulTypedName", + "src": "3724:4:66", + "type": "" + } + ], + "src": "3647:311:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4094:619:66", + "statements": [ { - "internalType": "bytes32", - "name": "resourceID", - "type": "bytes32" + "nodeType": "YulAssignment", + "src": "4104:90:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "4186:6:66" + } + ], + "functionName": { + "name": "array_allocation_size_t_array$_t_address_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "4129:56:66" + }, + "nodeType": "YulFunctionCall", + "src": "4129:64:66" + } + ], + "functionName": { + "name": "allocate_memory", + "nodeType": "YulIdentifier", + "src": "4113:15:66" + }, + "nodeType": "YulFunctionCall", + "src": "4113:81:66" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "4104:5:66" + } + ] }, { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "executeProposal", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "tokenAddress", - "type": "address" + "nodeType": "YulVariableDeclaration", + "src": "4203:16:66", + "value": { + "name": "array", + "nodeType": "YulIdentifier", + "src": "4214:5:66" + }, + "variables": [ + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "4207:3:66", + "type": "" + } + ] }, { - "internalType": "address", - "name": "recipient", - "type": "address" + "expression": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "4236:5:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "4243:6:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4229:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "4229:21:66" + }, + "nodeType": "YulExpressionStatement", + "src": "4229:21:66" }, { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "withdraw", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "metadata": "{\"compiler\":{\"version\":\"0.7.0+commit.9e61f92b\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"bridgeAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"initialResourceIDs\",\"type\":\"bytes32[]\"},{\"internalType\":\"address[]\",\"name\":\"initialContractAddresses\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"burnableContractAddresses\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Deposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"depositer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdrawn\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"_bridgeAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"_burnList\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"_contractWhitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"_decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"srcDecimals\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"destDecimals\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"_depositRecords\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"_lenDestinationRecipientAddress\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"_destinationChainID\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"_resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_destinationRecipientAddress\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_depositer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"_resourceIDToTokenContractAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"_tokenContractAddressToResourceID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"destinationChainID\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"depositer\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"executeProposal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"destId\",\"type\":\"uint8\"}],\"name\":\"getDepositRecord\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"_lenDestinationRecipientAddress\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"_destinationChainID\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"_resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_destinationRecipientAddress\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_depositer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"internalType\":\"struct ERC20Handler.DepositRecord\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"setBurnable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"srcDecimals\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"destDecimals\",\"type\":\"uint8\"}],\"name\":\"setDecimals\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"setResource\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"ChainSafe Systems.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"{initialResourceIDs} and {initialContractAddresses} must have the same length (one resourceID for every address). Also, these arrays must be ordered in the way that {initialResourceIDs}[0] is the intended resourceID for {initialContractAddresses}[0].\",\"params\":{\"bridgeAddress\":\"Contract address of previously deployed Bridge.\",\"burnableContractAddresses\":\"These addresses will be set as burnable and when {deposit} is called, the deposited token will be burned. When {executeProposal} is called, new tokens will be minted.\",\"initialContractAddresses\":\"These are the addresses the {initialResourceIDs} will point to, and are the contracts that will be called to perform various deposit calls.\",\"initialResourceIDs\":\"Resource IDs are used to identify a specific contract address. These are the Resource IDs this contract will initially support.\"}},\"deposit(bytes32,uint8,uint64,address,bytes)\":{\"details\":\"Depending if the corresponding {tokenAddress} for the parsed {resourceID} is marked true in {_burnList}, deposited tokens will be burned, if not, they will be locked.\",\"params\":{\"data\":\"Consists of: {resourceID}, {amount}, {lenRecipientAddress}, and {recipientAddress} all padded to 32 bytes.\",\"depositNonce\":\"This value is generated as an ID by the Bridge contract.\",\"depositer\":\"Address of account making the deposit in the Bridge contract.\",\"destinationChainID\":\"Chain ID of chain tokens are expected to be bridged to.\"}},\"executeProposal(bytes32,bytes)\":{\"params\":{\"data\":\"Consists of {resourceID}, {amount}, {lenDestinationRecipientAddress}, and {destinationRecipientAddress} all padded to 32 bytes.\"}},\"getDepositRecord(uint64,uint8)\":{\"params\":{\"depositNonce\":\"This ID will have been generated by the Bridge contract.\",\"destId\":\"ID of chain deposit will be bridged to.\"},\"returns\":{\"_0\":\"DepositRecord which consists of: - _tokenAddress Address used when {deposit} was executed. - _destinationChainID ChainID deposited tokens are intended to end up on. - _resourceID ResourceID used when {deposit} was executed. - _lenDestinationRecipientAddress Used to parse recipient's address from {_destinationRecipientAddress} - _destinationRecipientAddress Address tokens are intended to be deposited to on desitnation chain. - _depositer Address that initially called {deposit} in the Bridge contract. - _amount Amount of tokens that were deposited.\"}},\"setBurnable(address)\":{\"params\":{\"contractAddress\":\"Address of contract to be used when making or executing deposits.\"}},\"setDecimals(address,uint8,uint8)\":{\"params\":{\"contractAddress\":\"Address of contract to be used when making or eexcuting deposits.\",\"destDecimals\":\"Decimals of this token on dest chain.\",\"srcDecimals\":\"Decimals of this token on source chain\"}},\"setResource(bytes32,address)\":{\"params\":{\"contractAddress\":\"Address of contract to be called when a deposit is made and a deposited is executed.\",\"resourceID\":\"ResourceID to be used when making deposits.\"}},\"withdraw(address,address,uint256)\":{\"params\":{\"amount\":\"The amount of ERC20 tokens to release.\",\"recipient\":\"Address to release tokens to.\",\"tokenAddress\":\"Address of token contract to release.\"}}},\"title\":\"Handles ERC20 deposits and deposit executions.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"deposit(bytes32,uint8,uint64,address,bytes)\":{\"notice\":\"A deposit is initiatied by making a deposit in the Bridge contract.Data passed into the function should be constructed as follows: amount uint256 bytes 0 - 32 recipientAddress length uint256 bytes 32 - 64 recipientAddress bytes bytes 64 - END\"},\"executeProposal(bytes32,bytes)\":{\"notice\":\"Proposal execution should be initiated when a proposal is finalized in the Bridge contract. by a relayer on the deposit's destination chain.Data passed into the function should be constructed as follows: amount uint256 bytes 0 - 32 destinationRecipientAddress length uint256 bytes 32 - 64 destinationRecipientAddress bytes bytes 64 - END\"},\"setBurnable(address)\":{\"notice\":\"First verifies {contractAddress} is whitelisted, then sets {_burnList}[{contractAddress}] to true.\"},\"setDecimals(address,uint8,uint8)\":{\"notice\":\"First verifies {contractAddress} is whitelisted, then sets {_decimals}[{contractAddress}] to it's decimals value.\"},\"setResource(bytes32,address)\":{\"notice\":\"First verifies {_resourceIDToContractAddress}[{resourceID}] and {_contractAddressToResourceID}[{contractAddress}] are not already set, then sets {_resourceIDToContractAddress} with {contractAddress}, {_contractAddressToResourceID} with {resourceID}, and {_contractWhitelist} to true for {contractAddress}.\"},\"withdraw(address,address,uint256)\":{\"notice\":\"Used to manually release ERC20 tokens from ERC20Safe.\"}},\"notice\":\"This contract is intended to be used with the Bridge contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/handlers/ERC20Handler.sol\":\"ERC20Handler\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0x4fc155a2f7837603d69a13cfa481eb5e7f5e02cb77e2ec9edbac30986db37988\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0855147e38b5e36288a8df73b8da49132f14ec7abb19041b0c98872263643aaa\",\"dweb:/ipfs/QmSrSysyFUYQq7hbJaJXG7EyZW6ezDBzEJx3SABp6eiJSS\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xcc78a17dd88fa5a2edc60c8489e2f405c0913b377216a5b26b35656b2d0dab52\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://526dc85e1f9b9b45830e202568d267d93dde7a4fcccf4ad7798dadcd92304d3c\",\"dweb:/ipfs/QmaoXMB972J3cSDLtBq3xBo4jLwqD2uzXTwujtSPqkYVhR\"]},\"@openzeppelin/contracts/presets/ERC20PresetMinterPauser.sol\":{\"keccak256\":\"0xa7c607ed4a0b2bebb811a398838ce4b5165e490f420a06337478eb2ba8c90cfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7eaf468e140d3430711cb859fbb41b097093069a75bfe4ab19e515c59f8b78ea\",\"dweb:/ipfs/QmYvdoCh8TAX7ucpMZspPpHpQZSuNe8cQTrbZyUcy3caqc\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xca0c2396dbeb3503b51abf4248ebf77a1461edad513c01529df51850a012bee3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://991b44ff44e0496e8554a90f4c0512c28faed45104d40430019f3c67ea67740e\",\"dweb:/ipfs/Qmc3nRapVbcctELoZS5qe17zLkFB3bETBfwzCTMF1CSuGE\"]},\"@openzeppelin/contracts/token/ERC20/ERC20Burnable.sol\":{\"keccak256\":\"0x9c0eb3b0e11d2480d49991dc384f1e5f9c9b9967cc81944d50916a9b9c6c4984\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99e4033d778624992e86f0b6d801a4f6d7b5c0cd5c79c1296be90a051ad5f5af\",\"dweb:/ipfs/QmShYmkUqh6pDEeoWadZ24icmCr4C2Xys1uE5boivPmbwf\"]},\"@openzeppelin/contracts/token/ERC20/ERC20Pausable.sol\":{\"keccak256\":\"0xa22af140ae7ec1f8f2f3bed5869cd0d548dfaac66343f0efc7324ff34aaf1254\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fed479feda7354e89c095fde0927dcb581f460257bf93b7db54b2b902b4bbd48\",\"dweb:/ipfs/QmSDUhS2AQvTGXHwaxDgAXtwXKCgQh2kp1nwhwUgr2hQZK\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5f02220344881ce43204ae4a6281145a67bc52c2bb1290a791857df3d19d78f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24427744bd3e6cb73c17010119af12a318289c0253a4d9acb8576c9fb3797b08\",\"dweb:/ipfs/QmTLDqpKRBuxGxRAmjgXt9AkXyACW3MtKzi7PYjm5iMfGC\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x28911e614500ae7c607a432a709d35da25f3bc5ddc8bd12b278b66358070c0ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://256c8c8af5eb072bc473226ab2b2187149b8fc04f5f4a4820db22527f5ce8e3c\",\"dweb:/ipfs/QmRvi5BhnL7Rxf85KrJhwM6RRhukm4tzoctRdgQEheNyiN\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"@openzeppelin/contracts/utils/EnumerableSet.sol\":{\"keccak256\":\"0x1562cd9922fbf739edfb979f506809e2743789cbde3177515542161c3d04b164\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4580d57781513d98870d9738c7d39094336e0a70cdb90d68dad549c6ced466ec\",\"dweb:/ipfs/Qmf9YZzzRFuvMnav9dgmeRUpdYMMECiZX8w25sHWVbA18V\"]},\"@openzeppelin/contracts/utils/Pausable.sol\":{\"keccak256\":\"0x212fb1b1d4beaf74354dad9bc329f44ee3c5375ef1c32acff76b4ecefc10f1d8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d21c68cb321d1c8d0fa39fd9ecb6bbe3b2f26623b0f38af280a010c916c85f23\",\"dweb:/ipfs/Qmf2P51HRC4ekDHLYfbXu5SXR33gXrWtq6oKSmfyWqVRuC\"]},\"project:/contracts/ERC20Safe.sol\":{\"keccak256\":\"0x0f2776cc50c9c8abe60e728b09b0073254194ec5a6dd528eb0c4712047660da4\",\"urls\":[\"bzz-raw://f91278109457f574c34937d6094283adf2896e461857c211ee32c2aeb79ae1e0\",\"dweb:/ipfs/QmXJrfx7bRDMX6BiyxM882M8pEMM3vWenbXGRjkkCXxnYa\"]},\"project:/contracts/handlers/ERC20Handler.sol\":{\"keccak256\":\"0xe83f878593cf53562af915bd35de5fb06e04dc2d7cb9c48214f0e181e29f90b4\",\"urls\":[\"bzz-raw://e15b604933113b8ae6ec65083150a25c1a3ac2630e2438dff367a54f713a9863\",\"dweb:/ipfs/QmdTtic16xMKtdvGaNxqMSyx44fRMry9bjycMY7Lwpxvp9\"]},\"project:/contracts/handlers/HandlerHelpers.sol\":{\"keccak256\":\"0x8a31503ab6b96e4f5086458b816ad2b7c94fe545f7f6c33fd2c157231c58d1f5\",\"urls\":[\"bzz-raw://60cf8848dc02980ff0e9a25f6fe56f7584e21089f6bab80a1318f56a4afcd546\",\"dweb:/ipfs/QmXWoh5YjkKmpsDBEDaoQSgQw19STyoChbFYYa65RZwThX\"]},\"project:/contracts/interfaces/IDepositExecute.sol\":{\"keccak256\":\"0x58eb03ea6e50b74064af646139ea0eb923625e9ca249c7b566429b283ff11818\",\"urls\":[\"bzz-raw://bd78d20c816d72dd0685827c9804c2cf78c90d7d2a23e5e2933010fa36affe67\",\"dweb:/ipfs/QmWBjFpqp3NQoF4ad8EtA4iqjox2auNqwWQy2wHkcW112Y\"]},\"project:/contracts/interfaces/IERCHandler.sol\":{\"keccak256\":\"0xf6011e0c383a688ba2b20900073fdea8ff03c48ac2b5e47239b28ab131559937\",\"urls\":[\"bzz-raw://d180ad27c06b300fe9111630210ed5fb56cd4c7da3f039f7c3372ebea06e1790\",\"dweb:/ipfs/QmRBgtVQC8H8EtojZLQhxyPKfWMhL6Y9qyquMao8bxJxeE\"]}},\"version\":1}", - "bytecode": "0x60806040523480156200001157600080fd5b5060405162002c1038038062002c1083398181016040528101906200003791906200048f565b81518351146200007e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000759062000638565b60405180910390fd5b836000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008351905060005b8181101562000118576200010a858281518110620000e157fe5b6020026020010151858381518110620000f657fe5b60200260200101516200016b60201b60201c565b8080600101915050620000c7565b5060008251905060005b818110156200015e57620001508482815181106200013c57fe5b60200260200101516200025d60201b60201c565b808060010191505062000122565b505050505050506200075d565b806001600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16620002ec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002e39062000616565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600081519050620003588162000729565b92915050565b600082601f8301126200037057600080fd5b815162000387620003818262000688565b6200065a565b91508181835260208401935060208101905083856020840282011115620003ad57600080fd5b60005b83811015620003e15781620003c6888262000347565b845260208401935060208301925050600181019050620003b0565b5050505092915050565b600082601f830112620003fd57600080fd5b8151620004146200040e82620006b1565b6200065a565b915081818352602084019350602081019050838560208402820111156200043a57600080fd5b60005b838110156200046e578162000453888262000478565b8452602084019350602083019250506001810190506200043d565b5050505092915050565b600081519050620004898162000743565b92915050565b60008060008060808587031215620004a657600080fd5b6000620004b68782880162000347565b945050602085015167ffffffffffffffff811115620004d457600080fd5b620004e287828801620003eb565b935050604085015167ffffffffffffffff8111156200050057600080fd5b6200050e878288016200035e565b925050606085015167ffffffffffffffff8111156200052c57600080fd5b6200053a878288016200035e565b91505092959194509250565b600062000555602483620006da565b91507f70726f766964656420636f6e7472616374206973206e6f742077686974656c6960008301527f73746564000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000620005bd603c83620006da565b91507f696e697469616c5265736f7572636549447320616e6420696e697469616c436f60008301527f6e7472616374416464726573736573206c656e206d69736d61746368000000006020830152604082019050919050565b60006020820190508181036000830152620006318162000546565b9050919050565b600060208201905081810360008301526200065381620005ae565b9050919050565b6000604051905081810181811067ffffffffffffffff821117156200067e57600080fd5b8060405250919050565b600067ffffffffffffffff821115620006a057600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115620006c957600080fd5b602082029050602081019050919050565b600082825260208201905092915050565b6000620006f88262000709565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6200073481620006eb565b81146200074057600080fd5b50565b6200074e81620006ff565b81146200075a57600080fd5b50565b6124a3806200076d6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063b8fa37361161008c578063d51f0f4711610066578063d51f0f4714610287578063d9caed12146102b8578063e248cff2146102d4578063f4712744146102f0576100ea565b8063b8fa37361461020b578063ba484c0914610227578063c8ba6c8714610257576100ea565b806338995da9116100c857806338995da9146101595780634402027f146101755780636a70d081146101ab5780637f79bea8146101db576100ea565b806307b7ed99146100ef5780630a6d55d81461010b578063318c136e1461013b575b600080fd5b61010960048036038101906101049190611950565b61030c565b005b61012560048036038101906101209190611a40565b610320565b6040516101329190612056565b60405180910390f35b610143610353565b6040516101509190612056565b60405180910390f35b610173600480360381019061016e9190611afd565b610377565b005b61018f600480360381019061018a9190611bcb565b6106f8565b6040516101a297969594939291906120d1565b60405180910390f35b6101c560048036038101906101c09190611950565b610839565b6040516101d29190612147565b60405180910390f35b6101f560048036038101906101f09190611950565b610859565b6040516102029190612147565b60405180910390f35b61022560048036038101906102209190611a69565b610879565b005b610241600480360381019061023c9190611b8f565b61088f565b60405161024e919061227d565b60405180910390f35b610271600480360381019061026c9190611950565b610a84565b60405161027e9190612162565b60405180910390f35b6102a1600480360381019061029c9190611950565b610a9c565b6040516102af9291906122ba565b60405180910390f35b6102d260048036038101906102cd9190611979565b610ada565b005b6102ee60048036038101906102e99190611aa5565b610af2565b005b61030a600480360381019061030591906119c8565b610ce9565b005b610314610d01565b61031d81610d91565b50565b60016020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61037f610d01565b606060008060c4359150604051925060e435905080830160200160405260e4360360e484376000600160008b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610468576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045f9061225d565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156104ca576104c5818885610e78565b6104d7565b6104d681883086610ef0565b5b6040518060e001604052808273ffffffffffffffffffffffffffffffffffffffff1681526020018360ff1681526020018a60ff1681526020018b81526020018581526020018873ffffffffffffffffffffffffffffffffffffffff1681526020016105428386610f08565b815250600660008b60ff1660ff16815260200190815260200160002060008a67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548160ff021916908360ff16021790555060408201518160000160156101000a81548160ff021916908360ff160217905550606082015181600101556080820151816002019080519060200190610632929190611759565b5060a08201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060c082015181600401559050508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb856040516106e4919061229f565b60405180910390a350505050505050505050565b6006602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060000160149054906101000a900460ff16908060000160159054906101000a900460ff1690806001015490806002018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108035780601f106107d857610100808354040283529160200191610803565b820191906000526020600020905b8154815290600101906020018083116107e657829003601f168201915b5050505050908060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060040154905087565b60046020528060005260406000206000915054906101000a900460ff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b610881610d01565b61088b8282611064565b5050565b6108976117d9565b600660008360ff1660ff16815260200190815260200160002060008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060e00160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900460ff1660ff1660ff1681526020016000820160159054906101000a900460ff1660ff1660ff16815260200160018201548152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a135780601f106109e857610100808354040283529160200191610a13565b820191906000526020600020905b8154815290600101906020018083116109f657829003601f168201915b505050505081526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600482015481525050905092915050565b60026020528060005260406000206000915090505481565b60056020528060005260406000206000915090508060000160009054906101000a900460ff16908060000160019054906101000a900460ff16905082565b610ae2610d01565b610aed838383611156565b505050565b610afa610d01565b60006060606435915060405190506084358082016020016040526084360360848337506000806001600088815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060208301519150600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610be9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be09061225d565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610c5757610c52818360601c610c4d848861116c565b6112c8565b610c6f565b610c6e818360601c610c69848861116c565b611156565b5b8160601c73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8752a472e571a816aea92eec8dae9baf628e840f4929fbcc2d155e6233ff68a7610ccb848861116c565b604051610cd8919061229f565b60405180910390a350505050505050565b610cf1610d01565b610cfc838383611340565b505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d869061219d565b60405180910390fd5b565b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610e1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e14906121dd565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008390508073ffffffffffffffffffffffffffffffffffffffff166379cc679084846040518363ffffffff1660e01b8152600401610eb89291906120a8565b600060405180830381600087803b158015610ed257600080fd5b505af1158015610ee6573d6000803e3d6000fd5b5050505050505050565b6000849050610f0181858585611470565b5050505050565b6000610f1261184b565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff168152505090506000816000015160ff1614158015610fb857506000816020015160ff1614155b610ff7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fee906121bd565b60405180910390fd5b806000015160ff16816020015160ff16106110375761102f816000015182602001510360ff16600a0a846114f990919063ffffffff16565b91505061105e565b61105a816020015182600001510360ff16600a0a8461156990919063ffffffff16565b9150505b92915050565b806001600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008390506111668184846115bf565b50505050565b600061117661184b565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff168152505090506000816000015160ff161415801561121c57506000816020015160ff1614155b61125b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611252906121bd565b60405180910390fd5b806000015160ff16816020015160ff161061129b57611293816000015182602001510360ff16600a0a8461156990919063ffffffff16565b9150506112c2565b6112be816020015182600001510360ff16600a0a846114f990919063ffffffff16565b9150505b92915050565b60008390508073ffffffffffffffffffffffffffffffffffffffff166340c10f1984846040518363ffffffff1660e01b81526004016113089291906120a8565b600060405180830381600087803b15801561132257600080fd5b505af1158015611336573d6000803e3d6000fd5b5050505050505050565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166113cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c3906121dd565b60405180910390fd5b60405180604001604052808360ff1681526020018260ff16815250600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff160217905550905050505050565b6114f3846323b872dd60e01b85858560405160240161149193929190612071565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611645565b50505050565b60008083141561150c5760009050611563565b600082840290508284828161151d57fe5b041461155e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115559061223d565b60405180910390fd5b809150505b92915050565b60008082116115ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a49061221d565b60405180910390fd5b8183816115b657fe5b04905092915050565b6116408363a9059cbb60e01b84846040516024016115de9291906120a8565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611645565b505050565b600060608373ffffffffffffffffffffffffffffffffffffffff168360405161166e919061203f565b6000604051808303816000865af19150503d80600081146116ab576040519150601f19603f3d011682016040523d82523d6000602084013e6116b0565b606091505b5091509150816116f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ec906121fd565b60405180910390fd5b60008151111561175357808060200190518101906117139190611a17565b611752576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117499061217d565b60405180910390fd5b5b50505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061179a57805160ff19168380011785556117c8565b828001600101855582156117c8579182015b828111156117c75782518255916020019190600101906117ac565b5b5090506117d5919061186b565b5090565b6040518060e00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600060ff168152602001600060ff1681526020016000801916815260200160608152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525090565b6040518060400160405280600060ff168152602001600060ff1681525090565b5b8082111561188457600081600090555060010161186c565b5090565b600081359050611897816123e3565b92915050565b6000815190506118ac816123fa565b92915050565b6000813590506118c181612411565b92915050565b60008083601f8401126118d957600080fd5b8235905067ffffffffffffffff8111156118f257600080fd5b60208301915083600182028301111561190a57600080fd5b9250929050565b60008135905061192081612428565b92915050565b6000813590506119358161243f565b92915050565b60008135905061194a81612456565b92915050565b60006020828403121561196257600080fd5b600061197084828501611888565b91505092915050565b60008060006060848603121561198e57600080fd5b600061199c86828701611888565b93505060206119ad86828701611888565b92505060406119be86828701611911565b9150509250925092565b6000806000606084860312156119dd57600080fd5b60006119eb86828701611888565b93505060206119fc8682870161193b565b9250506040611a0d8682870161193b565b9150509250925092565b600060208284031215611a2957600080fd5b6000611a378482850161189d565b91505092915050565b600060208284031215611a5257600080fd5b6000611a60848285016118b2565b91505092915050565b60008060408385031215611a7c57600080fd5b6000611a8a858286016118b2565b9250506020611a9b85828601611888565b9150509250929050565b600080600060408486031215611aba57600080fd5b6000611ac8868287016118b2565b935050602084013567ffffffffffffffff811115611ae557600080fd5b611af1868287016118c7565b92509250509250925092565b60008060008060008060a08789031215611b1657600080fd5b6000611b2489828a016118b2565b9650506020611b3589828a0161193b565b9550506040611b4689828a01611926565b9450506060611b5789828a01611888565b935050608087013567ffffffffffffffff811115611b7457600080fd5b611b8089828a016118c7565b92509250509295509295509295565b60008060408385031215611ba257600080fd5b6000611bb085828601611926565b9250506020611bc18582860161193b565b9150509250929050565b60008060408385031215611bde57600080fd5b6000611bec8582860161193b565b9250506020611bfd85828601611926565b9150509250929050565b611c108161232c565b82525050565b611c1f8161232c565b82525050565b611c2e8161233e565b82525050565b611c3d8161234a565b82525050565b611c4c8161234a565b82525050565b6000611c5d826122e3565b611c6781856122ee565b9350611c7781856020860161239f565b611c80816123d2565b840191505092915050565b6000611c96826122e3565b611ca081856122ff565b9350611cb081856020860161239f565b611cb9816123d2565b840191505092915050565b6000611ccf826122e3565b611cd98185612310565b9350611ce981856020860161239f565b80840191505092915050565b6000611d0260208361231b565b91507f45524332303a206f7065726174696f6e20646964206e6f7420737563636565646000830152602082019050919050565b6000611d42601e8361231b565b91507f73656e646572206d7573742062652062726964676520636f6e747261637400006000830152602082019050919050565b6000611d82600e8361231b565b91507f57726f6e6720646563696d616c730000000000000000000000000000000000006000830152602082019050919050565b6000611dc260248361231b565b91507f70726f766964656420636f6e7472616374206973206e6f742077686974656c6960008301527f73746564000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611e2860128361231b565b91507f45524332303a2063616c6c206661696c656400000000000000000000000000006000830152602082019050919050565b6000611e68601a8361231b565b91507f536166654d6174683a206469766973696f6e206279207a65726f0000000000006000830152602082019050919050565b6000611ea860218361231b565b91507f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611f0e60288361231b565b91507f70726f766964656420746f6b656e41646472657373206973206e6f742077686960008301527f74656c69737465640000000000000000000000000000000000000000000000006020830152604082019050919050565b600060e083016000830151611f7f6000860182611c07565b506020830151611f926020860182612021565b506040830151611fa56040860182612021565b506060830151611fb86060860182611c34565b5060808301518482036080860152611fd08282611c52565b91505060a0830151611fe560a0860182611c07565b5060c0830151611ff860c0860182612003565b508091505092915050565b61200c81612374565b82525050565b61201b81612374565b82525050565b61202a81612392565b82525050565b61203981612392565b82525050565b600061204b8284611cc4565b915081905092915050565b600060208201905061206b6000830184611c16565b92915050565b60006060820190506120866000830186611c16565b6120936020830185611c16565b6120a06040830184612012565b949350505050565b60006040820190506120bd6000830185611c16565b6120ca6020830184612012565b9392505050565b600060e0820190506120e6600083018a611c16565b6120f36020830189612030565b6121006040830188612030565b61210d6060830187611c43565b818103608083015261211f8186611c8b565b905061212e60a0830185611c16565b61213b60c0830184612012565b98975050505050505050565b600060208201905061215c6000830184611c25565b92915050565b60006020820190506121776000830184611c43565b92915050565b6000602082019050818103600083015261219681611cf5565b9050919050565b600060208201905081810360008301526121b681611d35565b9050919050565b600060208201905081810360008301526121d681611d75565b9050919050565b600060208201905081810360008301526121f681611db5565b9050919050565b6000602082019050818103600083015261221681611e1b565b9050919050565b6000602082019050818103600083015261223681611e5b565b9050919050565b6000602082019050818103600083015261225681611e9b565b9050919050565b6000602082019050818103600083015261227681611f01565b9050919050565b600060208201905081810360008301526122978184611f67565b905092915050565b60006020820190506122b46000830184612012565b92915050565b60006040820190506122cf6000830185612030565b6122dc6020830184612030565b9392505050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061233782612354565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b600060ff82169050919050565b60005b838110156123bd5780820151818401526020810190506123a2565b838111156123cc576000848401525b50505050565b6000601f19601f8301169050919050565b6123ec8161232c565b81146123f757600080fd5b50565b6124038161233e565b811461240e57600080fd5b50565b61241a8161234a565b811461242557600080fd5b50565b61243181612374565b811461243c57600080fd5b50565b6124488161237e565b811461245357600080fd5b50565b61245f81612392565b811461246a57600080fd5b5056fea2646970667358221220510c9f8b8f8e5184ad7ad5c0f5943fd0aaf11b7f4933ac420d5f056a3a1f454d64736f6c63430007000033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063b8fa37361161008c578063d51f0f4711610066578063d51f0f4714610287578063d9caed12146102b8578063e248cff2146102d4578063f4712744146102f0576100ea565b8063b8fa37361461020b578063ba484c0914610227578063c8ba6c8714610257576100ea565b806338995da9116100c857806338995da9146101595780634402027f146101755780636a70d081146101ab5780637f79bea8146101db576100ea565b806307b7ed99146100ef5780630a6d55d81461010b578063318c136e1461013b575b600080fd5b61010960048036038101906101049190611950565b61030c565b005b61012560048036038101906101209190611a40565b610320565b6040516101329190612056565b60405180910390f35b610143610353565b6040516101509190612056565b60405180910390f35b610173600480360381019061016e9190611afd565b610377565b005b61018f600480360381019061018a9190611bcb565b6106f8565b6040516101a297969594939291906120d1565b60405180910390f35b6101c560048036038101906101c09190611950565b610839565b6040516101d29190612147565b60405180910390f35b6101f560048036038101906101f09190611950565b610859565b6040516102029190612147565b60405180910390f35b61022560048036038101906102209190611a69565b610879565b005b610241600480360381019061023c9190611b8f565b61088f565b60405161024e919061227d565b60405180910390f35b610271600480360381019061026c9190611950565b610a84565b60405161027e9190612162565b60405180910390f35b6102a1600480360381019061029c9190611950565b610a9c565b6040516102af9291906122ba565b60405180910390f35b6102d260048036038101906102cd9190611979565b610ada565b005b6102ee60048036038101906102e99190611aa5565b610af2565b005b61030a600480360381019061030591906119c8565b610ce9565b005b610314610d01565b61031d81610d91565b50565b60016020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61037f610d01565b606060008060c4359150604051925060e435905080830160200160405260e4360360e484376000600160008b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610468576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045f9061225d565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156104ca576104c5818885610e78565b6104d7565b6104d681883086610ef0565b5b6040518060e001604052808273ffffffffffffffffffffffffffffffffffffffff1681526020018360ff1681526020018a60ff1681526020018b81526020018581526020018873ffffffffffffffffffffffffffffffffffffffff1681526020016105428386610f08565b815250600660008b60ff1660ff16815260200190815260200160002060008a67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548160ff021916908360ff16021790555060408201518160000160156101000a81548160ff021916908360ff160217905550606082015181600101556080820151816002019080519060200190610632929190611759565b5060a08201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060c082015181600401559050508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb856040516106e4919061229f565b60405180910390a350505050505050505050565b6006602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060000160149054906101000a900460ff16908060000160159054906101000a900460ff1690806001015490806002018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108035780601f106107d857610100808354040283529160200191610803565b820191906000526020600020905b8154815290600101906020018083116107e657829003601f168201915b5050505050908060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060040154905087565b60046020528060005260406000206000915054906101000a900460ff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b610881610d01565b61088b8282611064565b5050565b6108976117d9565b600660008360ff1660ff16815260200190815260200160002060008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060e00160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900460ff1660ff1660ff1681526020016000820160159054906101000a900460ff1660ff1660ff16815260200160018201548152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a135780601f106109e857610100808354040283529160200191610a13565b820191906000526020600020905b8154815290600101906020018083116109f657829003601f168201915b505050505081526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600482015481525050905092915050565b60026020528060005260406000206000915090505481565b60056020528060005260406000206000915090508060000160009054906101000a900460ff16908060000160019054906101000a900460ff16905082565b610ae2610d01565b610aed838383611156565b505050565b610afa610d01565b60006060606435915060405190506084358082016020016040526084360360848337506000806001600088815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060208301519150600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610be9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be09061225d565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610c5757610c52818360601c610c4d848861116c565b6112c8565b610c6f565b610c6e818360601c610c69848861116c565b611156565b5b8160601c73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8752a472e571a816aea92eec8dae9baf628e840f4929fbcc2d155e6233ff68a7610ccb848861116c565b604051610cd8919061229f565b60405180910390a350505050505050565b610cf1610d01565b610cfc838383611340565b505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d869061219d565b60405180910390fd5b565b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610e1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e14906121dd565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008390508073ffffffffffffffffffffffffffffffffffffffff166379cc679084846040518363ffffffff1660e01b8152600401610eb89291906120a8565b600060405180830381600087803b158015610ed257600080fd5b505af1158015610ee6573d6000803e3d6000fd5b5050505050505050565b6000849050610f0181858585611470565b5050505050565b6000610f1261184b565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff168152505090506000816000015160ff1614158015610fb857506000816020015160ff1614155b610ff7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fee906121bd565b60405180910390fd5b806000015160ff16816020015160ff16106110375761102f816000015182602001510360ff16600a0a846114f990919063ffffffff16565b91505061105e565b61105a816020015182600001510360ff16600a0a8461156990919063ffffffff16565b9150505b92915050565b806001600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008390506111668184846115bf565b50505050565b600061117661184b565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff168152505090506000816000015160ff161415801561121c57506000816020015160ff1614155b61125b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611252906121bd565b60405180910390fd5b806000015160ff16816020015160ff161061129b57611293816000015182602001510360ff16600a0a8461156990919063ffffffff16565b9150506112c2565b6112be816020015182600001510360ff16600a0a846114f990919063ffffffff16565b9150505b92915050565b60008390508073ffffffffffffffffffffffffffffffffffffffff166340c10f1984846040518363ffffffff1660e01b81526004016113089291906120a8565b600060405180830381600087803b15801561132257600080fd5b505af1158015611336573d6000803e3d6000fd5b5050505050505050565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166113cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c3906121dd565b60405180910390fd5b60405180604001604052808360ff1681526020018260ff16815250600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff160217905550905050505050565b6114f3846323b872dd60e01b85858560405160240161149193929190612071565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611645565b50505050565b60008083141561150c5760009050611563565b600082840290508284828161151d57fe5b041461155e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115559061223d565b60405180910390fd5b809150505b92915050565b60008082116115ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a49061221d565b60405180910390fd5b8183816115b657fe5b04905092915050565b6116408363a9059cbb60e01b84846040516024016115de9291906120a8565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611645565b505050565b600060608373ffffffffffffffffffffffffffffffffffffffff168360405161166e919061203f565b6000604051808303816000865af19150503d80600081146116ab576040519150601f19603f3d011682016040523d82523d6000602084013e6116b0565b606091505b5091509150816116f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ec906121fd565b60405180910390fd5b60008151111561175357808060200190518101906117139190611a17565b611752576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117499061217d565b60405180910390fd5b5b50505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061179a57805160ff19168380011785556117c8565b828001600101855582156117c8579182015b828111156117c75782518255916020019190600101906117ac565b5b5090506117d5919061186b565b5090565b6040518060e00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600060ff168152602001600060ff1681526020016000801916815260200160608152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525090565b6040518060400160405280600060ff168152602001600060ff1681525090565b5b8082111561188457600081600090555060010161186c565b5090565b600081359050611897816123e3565b92915050565b6000815190506118ac816123fa565b92915050565b6000813590506118c181612411565b92915050565b60008083601f8401126118d957600080fd5b8235905067ffffffffffffffff8111156118f257600080fd5b60208301915083600182028301111561190a57600080fd5b9250929050565b60008135905061192081612428565b92915050565b6000813590506119358161243f565b92915050565b60008135905061194a81612456565b92915050565b60006020828403121561196257600080fd5b600061197084828501611888565b91505092915050565b60008060006060848603121561198e57600080fd5b600061199c86828701611888565b93505060206119ad86828701611888565b92505060406119be86828701611911565b9150509250925092565b6000806000606084860312156119dd57600080fd5b60006119eb86828701611888565b93505060206119fc8682870161193b565b9250506040611a0d8682870161193b565b9150509250925092565b600060208284031215611a2957600080fd5b6000611a378482850161189d565b91505092915050565b600060208284031215611a5257600080fd5b6000611a60848285016118b2565b91505092915050565b60008060408385031215611a7c57600080fd5b6000611a8a858286016118b2565b9250506020611a9b85828601611888565b9150509250929050565b600080600060408486031215611aba57600080fd5b6000611ac8868287016118b2565b935050602084013567ffffffffffffffff811115611ae557600080fd5b611af1868287016118c7565b92509250509250925092565b60008060008060008060a08789031215611b1657600080fd5b6000611b2489828a016118b2565b9650506020611b3589828a0161193b565b9550506040611b4689828a01611926565b9450506060611b5789828a01611888565b935050608087013567ffffffffffffffff811115611b7457600080fd5b611b8089828a016118c7565b92509250509295509295509295565b60008060408385031215611ba257600080fd5b6000611bb085828601611926565b9250506020611bc18582860161193b565b9150509250929050565b60008060408385031215611bde57600080fd5b6000611bec8582860161193b565b9250506020611bfd85828601611926565b9150509250929050565b611c108161232c565b82525050565b611c1f8161232c565b82525050565b611c2e8161233e565b82525050565b611c3d8161234a565b82525050565b611c4c8161234a565b82525050565b6000611c5d826122e3565b611c6781856122ee565b9350611c7781856020860161239f565b611c80816123d2565b840191505092915050565b6000611c96826122e3565b611ca081856122ff565b9350611cb081856020860161239f565b611cb9816123d2565b840191505092915050565b6000611ccf826122e3565b611cd98185612310565b9350611ce981856020860161239f565b80840191505092915050565b6000611d0260208361231b565b91507f45524332303a206f7065726174696f6e20646964206e6f7420737563636565646000830152602082019050919050565b6000611d42601e8361231b565b91507f73656e646572206d7573742062652062726964676520636f6e747261637400006000830152602082019050919050565b6000611d82600e8361231b565b91507f57726f6e6720646563696d616c730000000000000000000000000000000000006000830152602082019050919050565b6000611dc260248361231b565b91507f70726f766964656420636f6e7472616374206973206e6f742077686974656c6960008301527f73746564000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611e2860128361231b565b91507f45524332303a2063616c6c206661696c656400000000000000000000000000006000830152602082019050919050565b6000611e68601a8361231b565b91507f536166654d6174683a206469766973696f6e206279207a65726f0000000000006000830152602082019050919050565b6000611ea860218361231b565b91507f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611f0e60288361231b565b91507f70726f766964656420746f6b656e41646472657373206973206e6f742077686960008301527f74656c69737465640000000000000000000000000000000000000000000000006020830152604082019050919050565b600060e083016000830151611f7f6000860182611c07565b506020830151611f926020860182612021565b506040830151611fa56040860182612021565b506060830151611fb86060860182611c34565b5060808301518482036080860152611fd08282611c52565b91505060a0830151611fe560a0860182611c07565b5060c0830151611ff860c0860182612003565b508091505092915050565b61200c81612374565b82525050565b61201b81612374565b82525050565b61202a81612392565b82525050565b61203981612392565b82525050565b600061204b8284611cc4565b915081905092915050565b600060208201905061206b6000830184611c16565b92915050565b60006060820190506120866000830186611c16565b6120936020830185611c16565b6120a06040830184612012565b949350505050565b60006040820190506120bd6000830185611c16565b6120ca6020830184612012565b9392505050565b600060e0820190506120e6600083018a611c16565b6120f36020830189612030565b6121006040830188612030565b61210d6060830187611c43565b818103608083015261211f8186611c8b565b905061212e60a0830185611c16565b61213b60c0830184612012565b98975050505050505050565b600060208201905061215c6000830184611c25565b92915050565b60006020820190506121776000830184611c43565b92915050565b6000602082019050818103600083015261219681611cf5565b9050919050565b600060208201905081810360008301526121b681611d35565b9050919050565b600060208201905081810360008301526121d681611d75565b9050919050565b600060208201905081810360008301526121f681611db5565b9050919050565b6000602082019050818103600083015261221681611e1b565b9050919050565b6000602082019050818103600083015261223681611e5b565b9050919050565b6000602082019050818103600083015261225681611e9b565b9050919050565b6000602082019050818103600083015261227681611f01565b9050919050565b600060208201905081810360008301526122978184611f67565b905092915050565b60006020820190506122b46000830184612012565b92915050565b60006040820190506122cf6000830185612030565b6122dc6020830184612030565b9392505050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061233782612354565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b600060ff82169050919050565b60005b838110156123bd5780820151818401526020810190506123a2565b838111156123cc576000848401525b50505050565b6000601f19601f8301169050919050565b6123ec8161232c565b81146123f757600080fd5b50565b6124038161233e565b811461240e57600080fd5b50565b61241a8161234a565b811461242557600080fd5b50565b61243181612374565b811461243c57600080fd5b50565b6124488161237e565b811461245357600080fd5b50565b61245f81612392565b811461246a57600080fd5b5056fea2646970667358221220510c9f8b8f8e5184ad7ad5c0f5943fd0aaf11b7f4933ac420d5f056a3a1f454d64736f6c63430007000033", - "immutableReferences": {}, - "sourceMap": "455:9714:34:-:0;;;2076:803;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2336:24;:31;2307:18;:25;:60;2299:145;;;;;;;;;;;;:::i;:::-;;;;;;;;;2472:13;2455:14;;:30;;;;;;;;;;;;;;;;;;2496:20;2519:18;:25;2496:48;;2559:9;2554:132;2578:12;2574:1;:16;2554:132;;;2611:64;2624:18;2643:1;2624:21;;;;;;;;;;;;;;2647:24;2672:1;2647:27;;;;;;;;;;;;;;2611:12;;;:64;;:::i;:::-;2592:3;;;;;;;2554:132;;;;2696:21;2720:25;:32;2696:56;;2767:9;2762:111;2786:13;2782:1;:17;2762:111;;;2820:42;2833:25;2859:1;2833:28;;;;;;;;;;;;;;2820:12;;;:42;;:::i;:::-;2801:3;;;;;;;2762:111;;;;2076:803;;;;;;455:9714;;3196:282:37;3330:15;3282:33;:45;3316:10;3282:45;;;;;;;;;;;;:63;;;;;;;;;;;;;;;;;;3408:10;3355:33;:50;3389:15;3355:50;;;;;;;;;;;;;;;:63;;;;3467:4;3429:18;:35;3448:15;3429:35;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;3196:282;;:::o;3484:200::-;3558:18;:35;3577:15;3558:35;;;;;;;;;;;;;;;;;;;;;;;;;3550:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;3673:4;3644:9;:26;3654:15;3644:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3484:200;:::o;5:134:-1:-;;89:6;83:13;74:22;;101:33;128:5;101:33;:::i;:::-;68:71;;;;:::o;164:722::-;;292:3;285:4;277:6;273:17;269:27;259:2;;310:1;307;300:12;259:2;340:6;334:13;362:80;377:64;434:6;377:64;:::i;:::-;362:80;:::i;:::-;353:89;;459:5;484:6;477:5;470:21;514:4;506:6;502:17;492:27;;536:4;531:3;527:14;520:21;;589:6;636:3;628:4;620:6;616:17;611:3;607:27;604:36;601:2;;;653:1;650;643:12;601:2;678:1;663:217;688:6;685:1;682:13;663:217;;;746:3;768:48;812:3;800:10;768:48;:::i;:::-;763:3;756:61;840:4;835:3;831:14;824:21;;868:4;863:3;859:14;852:21;;720:160;710:1;707;703:9;698:14;;663:217;;;667:14;252:634;;;;;;;:::o;912:722::-;;1040:3;1033:4;1025:6;1021:17;1017:27;1007:2;;1058:1;1055;1048:12;1007:2;1088:6;1082:13;1110:80;1125:64;1182:6;1125:64;:::i;:::-;1110:80;:::i;:::-;1101:89;;1207:5;1232:6;1225:5;1218:21;1262:4;1254:6;1250:17;1240:27;;1284:4;1279:3;1275:14;1268:21;;1337:6;1384:3;1376:4;1368:6;1364:17;1359:3;1355:27;1352:36;1349:2;;;1401:1;1398;1391:12;1349:2;1426:1;1411:217;1436:6;1433:1;1430:13;1411:217;;;1494:3;1516:48;1560:3;1548:10;1516:48;:::i;:::-;1511:3;1504:61;1588:4;1583:3;1579:14;1572:21;;1616:4;1611:3;1607:14;1600:21;;1468:160;1458:1;1455;1451:9;1446:14;;1411:217;;;1415:14;1000:634;;;;;;;:::o;1642:134::-;;1726:6;1720:13;1711:22;;1738:33;1765:5;1738:33;:::i;:::-;1705:71;;;;:::o;1783:1059::-;;;;;2024:3;2012:9;2003:7;1999:23;1995:33;1992:2;;;2041:1;2038;2031:12;1992:2;2076:1;2093:64;2149:7;2140:6;2129:9;2125:22;2093:64;:::i;:::-;2083:74;;2055:108;2215:2;2204:9;2200:18;2194:25;2239:18;2231:6;2228:30;2225:2;;;2271:1;2268;2261:12;2225:2;2291:89;2372:7;2363:6;2352:9;2348:22;2291:89;:::i;:::-;2281:99;;2173:213;2438:2;2427:9;2423:18;2417:25;2462:18;2454:6;2451:30;2448:2;;;2494:1;2491;2484:12;2448:2;2514:89;2595:7;2586:6;2575:9;2571:22;2514:89;:::i;:::-;2504:99;;2396:213;2661:2;2650:9;2646:18;2640:25;2685:18;2677:6;2674:30;2671:2;;;2717:1;2714;2707:12;2671:2;2737:89;2818:7;2809:6;2798:9;2794:22;2737:89;:::i;:::-;2727:99;;2619:213;1986:856;;;;;;;:::o;2850:373::-;;3010:67;3074:2;3069:3;3010:67;:::i;:::-;3003:74;;3110:34;3106:1;3101:3;3097:11;3090:55;3179:6;3174:2;3169:3;3165:12;3158:28;3214:2;3209:3;3205:12;3198:19;;2996:227;;;:::o;3232:397::-;;3392:67;3456:2;3451:3;3392:67;:::i;:::-;3385:74;;3492:34;3488:1;3483:3;3479:11;3472:55;3561:30;3556:2;3551:3;3547:12;3540:52;3620:2;3615:3;3611:12;3604:19;;3378:251;;;:::o;3637:416::-;;3837:2;3826:9;3822:18;3814:26;;3887:9;3881:4;3877:20;3873:1;3862:9;3858:17;3851:47;3912:131;4038:4;3912:131;:::i;:::-;3904:139;;3808:245;;;:::o;4060:416::-;;4260:2;4249:9;4245:18;4237:26;;4310:9;4304:4;4300:20;4296:1;4285:9;4281:17;4274:47;4335:131;4461:4;4335:131;:::i;:::-;4327:139;;4231:245;;;:::o;4483:256::-;;4545:2;4539:9;4529:19;;4583:4;4575:6;4571:17;4682:6;4670:10;4667:22;4646:18;4634:10;4631:34;4628:62;4625:2;;;4703:1;4700;4693:12;4625:2;4723:10;4719:2;4712:22;4523:216;;;;:::o;4746:304::-;;4905:18;4897:6;4894:30;4891:2;;;4937:1;4934;4927:12;4891:2;4972:4;4964:6;4960:17;4952:25;;5035:4;5029;5025:15;5017:23;;4828:222;;;:::o;5057:304::-;;5216:18;5208:6;5205:30;5202:2;;;5248:1;5245;5238:12;5202:2;5283:4;5275:6;5271:17;5263:25;;5346:4;5340;5336:15;5328:23;;5139:222;;;:::o;5369:163::-;;5484:6;5479:3;5472:19;5521:4;5516:3;5512:14;5497:29;;5465:67;;;;:::o;5540:91::-;;5602:24;5620:5;5602:24;:::i;:::-;5591:35;;5585:46;;;:::o;5638:72::-;;5700:5;5689:16;;5683:27;;;:::o;5717:121::-;;5790:42;5783:5;5779:54;5768:65;;5762:76;;;:::o;5845:117::-;5914:24;5932:5;5914:24;:::i;:::-;5907:5;5904:35;5894:2;;5953:1;5950;5943:12;5894:2;5888:74;:::o;5969:117::-;6038:24;6056:5;6038:24;:::i;:::-;6031:5;6028:35;6018:2;;6077:1;6074;6067:12;6018:2;6012:74;:::o;455:9714:34:-;;;;;;;", - "deployedSourceMap": "455:9714:34:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2076:120:37;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;439:69;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;359:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4800:1558:34;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;880:74;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;786:42:37;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;683:51;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1680:154;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3672:167:34;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;559:69:37;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;877:46;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;8849:163:34;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7003:1572;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2585:187:37;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2076:120;962:13;:11;:13::i;:::-;2160:29:::1;2173:15;2160:12;:29::i;:::-;2076:120:::0;:::o;439:69::-;;;;;;;;;;;;;;;;;;;;;;:::o;359:29::-;;;;;;;;;;;;:::o;4800:1558:34:-;962:13:37;:11;:13::i;:::-;5014:31:34::1;5055:21;5086:34:::0;5178:4:::1;5165:18;5155:28;;5223:4;5217:11;5197:31;;5277:4;5264:18;5241:41;;5340:19;5322:16;5318:42;5312:4;5308:53;5302:4;5295:67;5551:4;5535:14;5531:25;5479:4;5406:16;5376:230;5626:20;5649:33;:45;5683:10;5649:45;;;;;;;;;;;;;;;;;;;;;5626:68;;5712:18;:32;5731:12;5712:32;;;;;;;;;;;;;;;;;;;;;;;;;5704:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;5804:9;:23;5814:12;5804:23;;;;;;;;;;;;;;;;;;;;;;;;;5800:184;;;5843:42;5853:12;5867:9;5878:6;5843:9;:42::i;:::-;5800:184;;;5916:57;5926:12;5940:9;5959:4;5966:6;5916:9;:57::i;:::-;5800:184;6046:247;;;;;;;;6073:12;6046:247;;;;;;6105:19;6046:247;;;;;;6139:18;6046:247;;;;;;6171:10;6046:247;;;;6195:16;6046:247;;;;6225:9;6046:247;;;;;;6248:35;6262:12;6276:6;6248:13;:35::i;:::-;6046:247;;::::0;5994:15:::1;:35;6010:18;5994:35;;;;;;;;;;;;;;;:49;6030:12;5994:49;;;;;;;;;;;;;;;:299;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6333:9;6309:42;;6319:12;6309:42;;;6344:6;6309:42;;;;;;:::i;:::-;;;;;;;;985:1:37;;;;4800:1558:34::0;;;;;;:::o;880:74::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;786:42:37:-;;;;;;;;;;;;;;;;;;;;;;:::o;683:51::-;;;;;;;;;;;;;;;;;;;;;;:::o;1680:154::-;962:13;:11;:13::i;:::-;1786:41:::1;1799:10;1811:15;1786:12;:41::i;:::-;1680:154:::0;;:::o;3672:167:34:-;3756:20;;:::i;:::-;3795:15;:23;3811:6;3795:23;;;;;;;;;;;;;;;:37;3819:12;3795:37;;;;;;;;;;;;;;;3788:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3672:167;;;;:::o;559:69:37:-;;;;;;;;;;;;;;;;;:::o;877:46::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8849:163:34:-;962:13:37;:11;:13::i;:::-;8960:45:34::1;8973:12;8987:9;8998:6;8960:12;:45::i;:::-;8849:163:::0;;;:::o;7003:1572::-;962:13:37;:11;:13::i;:::-;7108:20:34::1;7138:41;7236:4;7223:18;7213:28;;7292:4;7286:11;7255:42;;7361:4;7348:18;7435:30;7406:27;7402:64;7396:4;7392:75;7386:4;7379:89;7815:4;7799:14;7795:25;7744:4;7660:27;7630:240;7199:681;7890:24;7924:20:::0;7947:33:::1;:45;7981:10;7947:45;;;;;;;;;;;;;;;;;;;;;7924:68;;8085:4;8056:27;8052:38;8046:45;8026:65;;8119:18;:32;8138:12;8119:32;;;;;;;;;;;;;;;;;;;;;;;;;8111:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;8211:9;:23;8221:12;8211:23;;;;;;;;;;;;;;;;;;;;;;;;;8207:260;;;8250:86;8260:12;8282:16;8274:25;;8301:34;8314:12;8328:6;8301:12;:34::i;:::-;8250:9;:86::i;:::-;8207:260;;;8367:89;8380:12;8402:16;8394:25;;8421:34;8434:12;8448:6;8421:12;:34::i;:::-;8367:12;:89::i;:::-;8207:260;8514:16;8506:25;;8482:86;;8492:12;8482:86;;;8533:34;8546:12;8560:6;8533:12;:34::i;:::-;8482:86;;;;;;:::i;:::-;;;;;;;;985:1:37;;;;7003:1572:34::0;;;:::o;2585:187:37:-;962:13;:11;:13::i;:::-;2709:56:::1;2722:15;2739:11;2752:12;2709;:56::i;:::-;2585:187:::0;;;:::o;999:119::-;1062:14;;;;;;;;;;1048:28;;:10;:28;;;1040:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;999:119::o;3484:200::-;3558:18;:35;3577:15;3558:35;;;;;;;;;;;;;;;;;;;;;;;;;3550:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;3673:4;3644:9;:26;3654:15;3644:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3484:200;:::o;2056:186:27:-;2147:19;2183:12;2147:49;;2206:5;:14;;;2221:5;2228:6;2206:29;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2056:186;;;;:::o;771:212::-;881:12;903;881:35;;926:50;944:5;951;958:9;969:6;926:17;:50::i;:::-;771:212;;;;;:::o;9018:572:34:-;9096:7;9115:24;;:::i;:::-;9142:9;:23;9152:12;9142:23;;;;;;;;;;;;;;;9115:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9275:1;9251:8;:20;;;:25;;;;:55;;;;;9305:1;9280:8;:21;;;:26;;;;9251:55;9243:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;9364:8;:20;;;9339:45;;:8;:21;;;:45;;;9335:249;;9407:64;9449:8;:20;;;9425:8;:21;;;:44;9418:52;;:2;:52;9407:6;:10;;:64;;;;:::i;:::-;9400:71;;;;;9335:249;9509:64;9550:8;:21;;;9527:8;:20;;;:44;9520:52;;:2;:52;9509:6;:10;;:64;;;;:::i;:::-;9502:71;;;9018:572;;;;;:::o;3196:282:37:-;3330:15;3282:33;:45;3316:10;3282:45;;;;;;;;;;;;:63;;;;;;;;;;;;;;;;;;3408:10;3355:33;:50;3389:15;3355:50;;;;;;;;;;;;;;;:63;;;;3467:4;3429:18;:35;3448:15;3429:35;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;3196:282;;:::o;1228:189:27:-;1326:12;1348;1326:35;;1371:39;1385:5;1392:9;1403:6;1371:13;:39::i;:::-;1228:189;;;;:::o;9596:571:34:-;9673:7;9692:24;;:::i;:::-;9719:9;:23;9729:12;9719:23;;;;;;;;;;;;;;;9692:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9852:1;9828:8;:20;;;:25;;;;:55;;;;;9882:1;9857:8;:21;;;:26;;;;9828:55;9820:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;9941:8;:20;;;9916:45;;:8;:21;;;:45;;;9912:249;;9984:64;10026:8;:20;;;10002:8;:21;;;:44;9995:52;;:2;:52;9984:6;:10;;:64;;;;:::i;:::-;9977:71;;;;;9912:249;10086:64;10127:8;:21;;;10104:8;:20;;;:44;10097:52;;:2;:52;10086:6;:10;;:64;;;;:::i;:::-;10079:71;;;9596:571;;;;;:::o;1638:211:27:-;1733:29;1789:12;1733:69;;1812:5;:10;;;1823:9;1834:6;1812:29;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1638:211;;;;:::o;3690:333:37:-;3803:18;:35;3822:15;3803:35;;;;;;;;;;;;;;;;;;;;;;;;;3795:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;3918:98;;;;;;;;3954:11;3918:98;;;;;;3993:12;3918:98;;;;;3889:9;:26;3899:15;3889:26;;;;;;;;;;;;;;;:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3690:333;;;:::o;2885:193:27:-;2985:86;2995:5;3025:27;;;3054:4;3060:2;3064:5;3002:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2985:9;:86::i;:::-;2885:193;;;;:::o;3538:215:5:-;3596:7;3624:1;3619;:6;3615:20;;;3634:1;3627:8;;;;3615:20;3645:9;3661:1;3657;:5;3645:17;;3689:1;3684;3680;:5;;;;;;:10;3672:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3745:1;3738:8;;;3538:215;;;;;:::o;4217:150::-;4275:7;4306:1;4302;:5;4294:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;4359:1;4355;:5;;;;;;4348:12;;4217:150;;;;:::o;2455:165:27:-;2537:76;2547:5;2577:23;;;2602:2;2606:5;2554:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2537:9;:76::i;:::-;2455:165;;;:::o;3239:338::-;3318:12;3332:23;3367:5;3359:19;;3379:4;3359:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3317:67;;;;3402:7;3394:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3467:1;3447:10;:17;:21;3443:128;;;3504:10;3493:30;;;;;;;;;;;;:::i;:::-;3485:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;3443:128;3239:338;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;5:130::-;;85:6;72:20;63:29;;97:33;124:5;97:33;:::i;:::-;57:78;;;;:::o;142:128::-;;223:6;217:13;208:22;;235:30;259:5;235:30;:::i;:::-;202:68;;;;:::o;277:130::-;;357:6;344:20;335:29;;369:33;396:5;369:33;:::i;:::-;329:78;;;;:::o;428:336::-;;;542:3;535:4;527:6;523:17;519:27;509:2;;560:1;557;550:12;509:2;593:6;580:20;570:30;;620:18;612:6;609:30;606:2;;;652:1;649;642:12;606:2;686:4;678:6;674:17;662:29;;737:3;729:4;721:6;717:17;707:8;703:32;700:41;697:2;;;754:1;751;744:12;697:2;502:262;;;;;:::o;772:130::-;;852:6;839:20;830:29;;864:33;891:5;864:33;:::i;:::-;824:78;;;;:::o;909:128::-;;988:6;975:20;966:29;;1000:32;1026:5;1000:32;:::i;:::-;960:77;;;;:::o;1044:126::-;;1122:6;1109:20;1100:29;;1134:31;1159:5;1134:31;:::i;:::-;1094:76;;;;:::o;1177:241::-;;1281:2;1269:9;1260:7;1256:23;1252:32;1249:2;;;1297:1;1294;1287:12;1249:2;1332:1;1349:53;1394:7;1385:6;1374:9;1370:22;1349:53;:::i;:::-;1339:63;;1311:97;1243:175;;;;:::o;1425:491::-;;;;1563:2;1551:9;1542:7;1538:23;1534:32;1531:2;;;1579:1;1576;1569:12;1531:2;1614:1;1631:53;1676:7;1667:6;1656:9;1652:22;1631:53;:::i;:::-;1621:63;;1593:97;1721:2;1739:53;1784:7;1775:6;1764:9;1760:22;1739:53;:::i;:::-;1729:63;;1700:98;1829:2;1847:53;1892:7;1883:6;1872:9;1868:22;1847:53;:::i;:::-;1837:63;;1808:98;1525:391;;;;;:::o;1923:483::-;;;;2057:2;2045:9;2036:7;2032:23;2028:32;2025:2;;;2073:1;2070;2063:12;2025:2;2108:1;2125:53;2170:7;2161:6;2150:9;2146:22;2125:53;:::i;:::-;2115:63;;2087:97;2215:2;2233:51;2276:7;2267:6;2256:9;2252:22;2233:51;:::i;:::-;2223:61;;2194:96;2321:2;2339:51;2382:7;2373:6;2362:9;2358:22;2339:51;:::i;:::-;2329:61;;2300:96;2019:387;;;;;:::o;2413:257::-;;2525:2;2513:9;2504:7;2500:23;2496:32;2493:2;;;2541:1;2538;2531:12;2493:2;2576:1;2593:61;2646:7;2637:6;2626:9;2622:22;2593:61;:::i;:::-;2583:71;;2555:105;2487:183;;;;:::o;2677:241::-;;2781:2;2769:9;2760:7;2756:23;2752:32;2749:2;;;2797:1;2794;2787:12;2749:2;2832:1;2849:53;2894:7;2885:6;2874:9;2870:22;2849:53;:::i;:::-;2839:63;;2811:97;2743:175;;;;:::o;2925:366::-;;;3046:2;3034:9;3025:7;3021:23;3017:32;3014:2;;;3062:1;3059;3052:12;3014:2;3097:1;3114:53;3159:7;3150:6;3139:9;3135:22;3114:53;:::i;:::-;3104:63;;3076:97;3204:2;3222:53;3267:7;3258:6;3247:9;3243:22;3222:53;:::i;:::-;3212:63;;3183:98;3008:283;;;;;:::o;3298:490::-;;;;3438:2;3426:9;3417:7;3413:23;3409:32;3406:2;;;3454:1;3451;3444:12;3406:2;3489:1;3506:53;3551:7;3542:6;3531:9;3527:22;3506:53;:::i;:::-;3496:63;;3468:97;3624:2;3613:9;3609:18;3596:32;3648:18;3640:6;3637:30;3634:2;;;3680:1;3677;3670:12;3634:2;3708:64;3764:7;3755:6;3744:9;3740:22;3708:64;:::i;:::-;3690:82;;;;3575:203;3400:388;;;;;:::o;3795:861::-;;;;;;;3983:3;3971:9;3962:7;3958:23;3954:33;3951:2;;;4000:1;3997;3990:12;3951:2;4035:1;4052:53;4097:7;4088:6;4077:9;4073:22;4052:53;:::i;:::-;4042:63;;4014:97;4142:2;4160:51;4203:7;4194:6;4183:9;4179:22;4160:51;:::i;:::-;4150:61;;4121:96;4248:2;4266:52;4310:7;4301:6;4290:9;4286:22;4266:52;:::i;:::-;4256:62;;4227:97;4355:2;4373:53;4418:7;4409:6;4398:9;4394:22;4373:53;:::i;:::-;4363:63;;4334:98;4491:3;4480:9;4476:19;4463:33;4516:18;4508:6;4505:30;4502:2;;;4548:1;4545;4538:12;4502:2;4576:64;4632:7;4623:6;4612:9;4608:22;4576:64;:::i;:::-;4558:82;;;;4442:204;3945:711;;;;;;;;:::o;4663:360::-;;;4781:2;4769:9;4760:7;4756:23;4752:32;4749:2;;;4797:1;4794;4787:12;4749:2;4832:1;4849:52;4893:7;4884:6;4873:9;4869:22;4849:52;:::i;:::-;4839:62;;4811:96;4938:2;4956:51;4999:7;4990:6;4979:9;4975:22;4956:51;:::i;:::-;4946:61;;4917:96;4743:280;;;;;:::o;5030:360::-;;;5148:2;5136:9;5127:7;5123:23;5119:32;5116:2;;;5164:1;5161;5154:12;5116:2;5199:1;5216:51;5259:7;5250:6;5239:9;5235:22;5216:51;:::i;:::-;5206:61;;5178:95;5304:2;5322:52;5366:7;5357:6;5346:9;5342:22;5322:52;:::i;:::-;5312:62;;5283:97;5110:280;;;;;:::o;5397:103::-;5470:24;5488:5;5470:24;:::i;:::-;5465:3;5458:37;5452:48;;:::o;5507:113::-;5590:24;5608:5;5590:24;:::i;:::-;5585:3;5578:37;5572:48;;:::o;5627:104::-;5704:21;5719:5;5704:21;:::i;:::-;5699:3;5692:34;5686:45;;:::o;5738:103::-;5811:24;5829:5;5811:24;:::i;:::-;5806:3;5799:37;5793:48;;:::o;5848:113::-;5931:24;5949:5;5931:24;:::i;:::-;5926:3;5919:37;5913:48;;:::o;5968:323::-;;6068:38;6100:5;6068:38;:::i;:::-;6118:60;6171:6;6166:3;6118:60;:::i;:::-;6111:67;;6183:52;6228:6;6223:3;6216:4;6209:5;6205:16;6183:52;:::i;:::-;6256:29;6278:6;6256:29;:::i;:::-;6251:3;6247:39;6240:46;;6048:243;;;;;:::o;6298:343::-;;6408:38;6440:5;6408:38;:::i;:::-;6458:70;6521:6;6516:3;6458:70;:::i;:::-;6451:77;;6533:52;6578:6;6573:3;6566:4;6559:5;6555:16;6533:52;:::i;:::-;6606:29;6628:6;6606:29;:::i;:::-;6601:3;6597:39;6590:46;;6388:253;;;;;:::o;6648:356::-;;6776:38;6808:5;6776:38;:::i;:::-;6826:88;6907:6;6902:3;6826:88;:::i;:::-;6819:95;;6919:52;6964:6;6959:3;6952:4;6945:5;6941:16;6919:52;:::i;:::-;6992:6;6987:3;6983:16;6976:23;;6756:248;;;;;:::o;7012:332::-;;7172:67;7236:2;7231:3;7172:67;:::i;:::-;7165:74;;7272:34;7268:1;7263:3;7259:11;7252:55;7335:2;7330:3;7326:12;7319:19;;7158:186;;;:::o;7353:330::-;;7513:67;7577:2;7572:3;7513:67;:::i;:::-;7506:74;;7613:32;7609:1;7604:3;7600:11;7593:53;7674:2;7669:3;7665:12;7658:19;;7499:184;;;:::o;7692:314::-;;7852:67;7916:2;7911:3;7852:67;:::i;:::-;7845:74;;7952:16;7948:1;7943:3;7939:11;7932:37;7997:2;7992:3;7988:12;7981:19;;7838:168;;;:::o;8015:373::-;;8175:67;8239:2;8234:3;8175:67;:::i;:::-;8168:74;;8275:34;8271:1;8266:3;8262:11;8255:55;8344:6;8339:2;8334:3;8330:12;8323:28;8379:2;8374:3;8370:12;8363:19;;8161:227;;;:::o;8397:318::-;;8557:67;8621:2;8616:3;8557:67;:::i;:::-;8550:74;;8657:20;8653:1;8648:3;8644:11;8637:41;8706:2;8701:3;8697:12;8690:19;;8543:172;;;:::o;8724:326::-;;8884:67;8948:2;8943:3;8884:67;:::i;:::-;8877:74;;8984:28;8980:1;8975:3;8971:11;8964:49;9041:2;9036:3;9032:12;9025:19;;8870:180;;;:::o;9059:370::-;;9219:67;9283:2;9278:3;9219:67;:::i;:::-;9212:74;;9319:34;9315:1;9310:3;9306:11;9299:55;9388:3;9383:2;9378:3;9374:12;9367:25;9420:2;9415:3;9411:12;9404:19;;9205:224;;;:::o;9438:377::-;;9598:67;9662:2;9657:3;9598:67;:::i;:::-;9591:74;;9698:34;9694:1;9689:3;9685:11;9678:55;9767:10;9762:2;9757:3;9753:12;9746:32;9806:2;9801:3;9797:12;9790:19;;9584:231;;;:::o;9900:1434::-;;10063:4;10058:3;10054:14;10155:4;10148:5;10144:16;10138:23;10167:63;10224:4;10219:3;10215:14;10201:12;10167:63;:::i;:::-;10083:153;10336:4;10329:5;10325:16;10319:23;10348:59;10401:4;10396:3;10392:14;10378:12;10348:59;:::i;:::-;10246:167;10501:4;10494:5;10490:16;10484:23;10513:59;10566:4;10561:3;10557:14;10543:12;10513:59;:::i;:::-;10423:155;10658:4;10651:5;10647:16;10641:23;10670:63;10727:4;10722:3;10718:14;10704:12;10670:63;:::i;:::-;10588:151;10836:4;10829:5;10825:16;10819:23;10888:3;10882:4;10878:14;10871:4;10866:3;10862:14;10855:38;10908:71;10974:4;10960:12;10908:71;:::i;:::-;10900:79;;10749:242;11070:4;11063:5;11059:16;11053:23;11082:63;11139:4;11134:3;11130:14;11116:12;11082:63;:::i;:::-;11001:150;11227:4;11220:5;11216:16;11210:23;11239:63;11296:4;11291:3;11287:14;11273:12;11239:63;:::i;:::-;11161:147;11325:4;11318:11;;10036:1298;;;;;:::o;11341:103::-;11414:24;11432:5;11414:24;:::i;:::-;11409:3;11402:37;11396:48;;:::o;11451:113::-;11534:24;11552:5;11534:24;:::i;:::-;11529:3;11522:37;11516:48;;:::o;11571:97::-;11640:22;11656:5;11640:22;:::i;:::-;11635:3;11628:35;11622:46;;:::o;11675:107::-;11754:22;11770:5;11754:22;:::i;:::-;11749:3;11742:35;11736:46;;:::o;11789:271::-;;11942:93;12031:3;12022:6;11942:93;:::i;:::-;11935:100;;12052:3;12045:10;;11923:137;;;;:::o;12067:222::-;;12194:2;12183:9;12179:18;12171:26;;12208:71;12276:1;12265:9;12261:17;12252:6;12208:71;:::i;:::-;12165:124;;;;:::o;12296:444::-;;12479:2;12468:9;12464:18;12456:26;;12493:71;12561:1;12550:9;12546:17;12537:6;12493:71;:::i;:::-;12575:72;12643:2;12632:9;12628:18;12619:6;12575:72;:::i;:::-;12658;12726:2;12715:9;12711:18;12702:6;12658:72;:::i;:::-;12450:290;;;;;;:::o;12747:333::-;;12902:2;12891:9;12887:18;12879:26;;12916:71;12984:1;12973:9;12969:17;12960:6;12916:71;:::i;:::-;12998:72;13066:2;13055:9;13051:18;13042:6;12998:72;:::i;:::-;12873:207;;;;;:::o;13087:960::-;;13392:3;13381:9;13377:19;13369:27;;13407:71;13475:1;13464:9;13460:17;13451:6;13407:71;:::i;:::-;13489:68;13553:2;13542:9;13538:18;13529:6;13489:68;:::i;:::-;13568;13632:2;13621:9;13617:18;13608:6;13568:68;:::i;:::-;13647:72;13715:2;13704:9;13700:18;13691:6;13647:72;:::i;:::-;13768:9;13762:4;13758:20;13752:3;13741:9;13737:19;13730:49;13793:76;13864:4;13855:6;13793:76;:::i;:::-;13785:84;;13880:73;13948:3;13937:9;13933:19;13924:6;13880:73;:::i;:::-;13964;14032:3;14021:9;14017:19;14008:6;13964:73;:::i;:::-;13363:684;;;;;;;;;;:::o;14054:210::-;;14175:2;14164:9;14160:18;14152:26;;14189:65;14251:1;14240:9;14236:17;14227:6;14189:65;:::i;:::-;14146:118;;;;:::o;14271:222::-;;14398:2;14387:9;14383:18;14375:26;;14412:71;14480:1;14469:9;14465:17;14456:6;14412:71;:::i;:::-;14369:124;;;;:::o;14500:416::-;;14700:2;14689:9;14685:18;14677:26;;14750:9;14744:4;14740:20;14736:1;14725:9;14721:17;14714:47;14775:131;14901:4;14775:131;:::i;:::-;14767:139;;14671:245;;;:::o;14923:416::-;;15123:2;15112:9;15108:18;15100:26;;15173:9;15167:4;15163:20;15159:1;15148:9;15144:17;15137:47;15198:131;15324:4;15198:131;:::i;:::-;15190:139;;15094:245;;;:::o;15346:416::-;;15546:2;15535:9;15531:18;15523:26;;15596:9;15590:4;15586:20;15582:1;15571:9;15567:17;15560:47;15621:131;15747:4;15621:131;:::i;:::-;15613:139;;15517:245;;;:::o;15769:416::-;;15969:2;15958:9;15954:18;15946:26;;16019:9;16013:4;16009:20;16005:1;15994:9;15990:17;15983:47;16044:131;16170:4;16044:131;:::i;:::-;16036:139;;15940:245;;;:::o;16192:416::-;;16392:2;16381:9;16377:18;16369:26;;16442:9;16436:4;16432:20;16428:1;16417:9;16413:17;16406:47;16467:131;16593:4;16467:131;:::i;:::-;16459:139;;16363:245;;;:::o;16615:416::-;;16815:2;16804:9;16800:18;16792:26;;16865:9;16859:4;16855:20;16851:1;16840:9;16836:17;16829:47;16890:131;17016:4;16890:131;:::i;:::-;16882:139;;16786:245;;;:::o;17038:416::-;;17238:2;17227:9;17223:18;17215:26;;17288:9;17282:4;17278:20;17274:1;17263:9;17259:17;17252:47;17313:131;17439:4;17313:131;:::i;:::-;17305:139;;17209:245;;;:::o;17461:416::-;;17661:2;17650:9;17646:18;17638:26;;17711:9;17705:4;17701:20;17697:1;17686:9;17682:17;17675:47;17736:131;17862:4;17736:131;:::i;:::-;17728:139;;17632:245;;;:::o;17884:394::-;;18073:2;18062:9;18058:18;18050:26;;18123:9;18117:4;18113:20;18109:1;18098:9;18094:17;18087:47;18148:120;18263:4;18254:6;18148:120;:::i;:::-;18140:128;;18044:234;;;;:::o;18285:222::-;;18412:2;18401:9;18397:18;18389:26;;18426:71;18494:1;18483:9;18479:17;18470:6;18426:71;:::i;:::-;18383:124;;;;:::o;18514:317::-;;18661:2;18650:9;18646:18;18638:26;;18675:67;18739:1;18728:9;18724:17;18715:6;18675:67;:::i;:::-;18753:68;18817:2;18806:9;18802:18;18793:6;18753:68;:::i;:::-;18632:199;;;;;:::o;18838:121::-;;18931:5;18925:12;18915:22;;18896:63;;;:::o;18967:152::-;;19071:6;19066:3;19059:19;19108:4;19103:3;19099:14;19084:29;;19052:67;;;;:::o;19128:162::-;;19242:6;19237:3;19230:19;19279:4;19274:3;19270:14;19255:29;;19223:67;;;;:::o;19299:144::-;;19434:3;19419:18;;19412:31;;;;:::o;19452:163::-;;19567:6;19562:3;19555:19;19604:4;19599:3;19595:14;19580:29;;19548:67;;;;:::o;19623:91::-;;19685:24;19703:5;19685:24;:::i;:::-;19674:35;;19668:46;;;:::o;19721:85::-;;19794:5;19787:13;19780:21;19769:32;;19763:43;;;:::o;19813:72::-;;19875:5;19864:16;;19858:27;;;:::o;19892:121::-;;19965:42;19958:5;19954:54;19943:65;;19937:76;;;:::o;20020:72::-;;20082:5;20071:16;;20065:27;;;:::o;20099:96::-;;20171:18;20164:5;20160:30;20149:41;;20143:52;;;:::o;20202:81::-;;20273:4;20266:5;20262:16;20251:27;;20245:38;;;:::o;20291:268::-;20356:1;20363:101;20377:6;20374:1;20371:13;20363:101;;;20453:1;20448:3;20444:11;20438:18;20434:1;20429:3;20425:11;20418:39;20399:2;20396:1;20392:10;20387:15;;20363:101;;;20479:6;20476:1;20473:13;20470:2;;;20544:1;20535:6;20530:3;20526:16;20519:27;20470:2;20340:219;;;;:::o;20567:97::-;;20655:2;20651:7;20646:2;20639:5;20635:14;20631:28;20621:38;;20615:49;;;:::o;20672:117::-;20741:24;20759:5;20741:24;:::i;:::-;20734:5;20731:35;20721:2;;20780:1;20777;20770:12;20721:2;20715:74;:::o;20796:111::-;20862:21;20877:5;20862:21;:::i;:::-;20855:5;20852:32;20842:2;;20898:1;20895;20888:12;20842:2;20836:71;:::o;20914:117::-;20983:24;21001:5;20983:24;:::i;:::-;20976:5;20973:35;20963:2;;21022:1;21019;21012:12;20963:2;20957:74;:::o;21038:117::-;21107:24;21125:5;21107:24;:::i;:::-;21100:5;21097:35;21087:2;;21146:1;21143;21136:12;21087:2;21081:74;:::o;21162:115::-;21230:23;21247:5;21230:23;:::i;:::-;21223:5;21220:34;21210:2;;21268:1;21265;21258:12;21210:2;21204:73;:::o;21284:113::-;21351:22;21367:5;21351:22;:::i;:::-;21344:5;21341:33;21331:2;;21388:1;21385;21378:12;21331:2;21325:72;:::o", - "source": "pragma solidity 0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"../interfaces/IDepositExecute.sol\";\nimport \"./HandlerHelpers.sol\";\nimport \"../ERC20Safe.sol\";\nimport \"@openzeppelin/contracts/presets/ERC20PresetMinterPauser.sol\";\nimport \"@openzeppelin/contracts/math/SafeMath.sol\";\n\n/**\n @title Handles ERC20 deposits and deposit executions.\n @author ChainSafe Systems.\n @notice This contract is intended to be used with the Bridge contract.\n */\ncontract ERC20Handler is IDepositExecute, HandlerHelpers, ERC20Safe {\n using SafeMath for uint256;\n\n struct DepositRecord {\n address _tokenAddress;\n uint8 _lenDestinationRecipientAddress;\n uint8 _destinationChainID;\n bytes32 _resourceID;\n bytes _destinationRecipientAddress;\n address _depositer;\n uint _amount;\n }\n\n // depositNonce => Deposit Record\n mapping (uint8 => mapping(uint64 => DepositRecord)) public _depositRecords;\n\n event Deposited(address indexed token, address indexed recipient, uint256 amount);\n event Withdrawn(address indexed token, address indexed depositer, uint256 amount);\n\n /**\n @param bridgeAddress Contract address of previously deployed Bridge.\n @param initialResourceIDs Resource IDs are used to identify a specific contract address.\n These are the Resource IDs this contract will initially support.\n @param initialContractAddresses These are the addresses the {initialResourceIDs} will point to, and are the contracts that will be\n called to perform various deposit calls.\n @param burnableContractAddresses These addresses will be set as burnable and when {deposit} is called, the deposited token will be burned.\n When {executeProposal} is called, new tokens will be minted.\n\n @dev {initialResourceIDs} and {initialContractAddresses} must have the same length (one resourceID for every address).\n Also, these arrays must be ordered in the way that {initialResourceIDs}[0] is the intended resourceID for {initialContractAddresses}[0].\n */\n constructor(\n address bridgeAddress,\n bytes32[] memory initialResourceIDs,\n address[] memory initialContractAddresses,\n address[] memory burnableContractAddresses\n ) public {\n require(initialResourceIDs.length == initialContractAddresses.length,\n \"initialResourceIDs and initialContractAddresses len mismatch\");\n\n _bridgeAddress = bridgeAddress;\n\n uint256 initialCount = initialResourceIDs.length;\n for (uint256 i = 0; i < initialCount; i++) {\n _setResource(initialResourceIDs[i], initialContractAddresses[i]);\n }\n\n uint256 burnableCount = burnableContractAddresses.length;\n for (uint256 i = 0; i < burnableCount; i++) {\n _setBurnable(burnableContractAddresses[i]);\n }\n }\n\n /**\n @param depositNonce This ID will have been generated by the Bridge contract.\n @param destId ID of chain deposit will be bridged to.\n @return DepositRecord which consists of:\n - _tokenAddress Address used when {deposit} was executed.\n - _destinationChainID ChainID deposited tokens are intended to end up on.\n - _resourceID ResourceID used when {deposit} was executed.\n - _lenDestinationRecipientAddress Used to parse recipient's address from {_destinationRecipientAddress}\n - _destinationRecipientAddress Address tokens are intended to be deposited to on desitnation chain.\n - _depositer Address that initially called {deposit} in the Bridge contract.\n - _amount Amount of tokens that were deposited.\n */\n function getDepositRecord(uint64 depositNonce, uint8 destId) external view returns (DepositRecord memory) {\n return _depositRecords[destId][depositNonce];\n }\n\n /**\n @notice A deposit is initiatied by making a deposit in the Bridge contract.\n @param destinationChainID Chain ID of chain tokens are expected to be bridged to.\n @param depositNonce This value is generated as an ID by the Bridge contract.\n @param depositer Address of account making the deposit in the Bridge contract.\n @param data Consists of: {resourceID}, {amount}, {lenRecipientAddress}, and {recipientAddress}\n all padded to 32 bytes.\n @notice Data passed into the function should be constructed as follows:\n amount uint256 bytes 0 - 32\n recipientAddress length uint256 bytes 32 - 64\n recipientAddress bytes bytes 64 - END\n @dev Depending if the corresponding {tokenAddress} for the parsed {resourceID} is\n marked true in {_burnList}, deposited tokens will be burned, if not, they will be locked.\n */\n function deposit(\n bytes32 resourceID,\n uint8 destinationChainID,\n uint64 depositNonce,\n address depositer,\n bytes calldata data\n ) external override onlyBridge {\n bytes memory recipientAddress;\n uint256 amount;\n uint256 lenRecipientAddress;\n\n assembly {\n\n amount := calldataload(0xC4)\n\n recipientAddress := mload(0x40)\n lenRecipientAddress := calldataload(0xE4)\n mstore(0x40, add(0x20, add(recipientAddress, lenRecipientAddress)))\n\n calldatacopy(\n recipientAddress, // copy to destinationRecipientAddress\n 0xE4, // copy from calldata @ 0x104\n sub(calldatasize(), 0xE4) // copy size (calldatasize - 0x104)\n )\n }\n\n address tokenAddress = _resourceIDToTokenContractAddress[resourceID];\n require(_contractWhitelist[tokenAddress], \"provided tokenAddress is not whitelisted\");\n\n if (_burnList[tokenAddress]) {\n burnERC20(tokenAddress, depositer, amount);\n } else {\n lockERC20(tokenAddress, depositer, address(this), amount);\n }\n\n _depositRecords[destinationChainID][depositNonce] = DepositRecord(\n tokenAddress,\n uint8(lenRecipientAddress),\n destinationChainID,\n resourceID,\n recipientAddress,\n depositer,\n toDestBalance(tokenAddress, amount)\n );\n\n emit Withdrawn(tokenAddress, depositer, amount);\n }\n\n /**\n @notice Proposal execution should be initiated when a proposal is finalized in the Bridge contract.\n by a relayer on the deposit's destination chain.\n @param data Consists of {resourceID}, {amount}, {lenDestinationRecipientAddress},\n and {destinationRecipientAddress} all padded to 32 bytes.\n @notice Data passed into the function should be constructed as follows:\n amount uint256 bytes 0 - 32\n destinationRecipientAddress length uint256 bytes 32 - 64\n destinationRecipientAddress bytes bytes 64 - END\n */\n function executeProposal(bytes32 resourceID, bytes calldata data) external override onlyBridge {\n uint256 amount;\n bytes memory destinationRecipientAddress;\n\n assembly {\n amount := calldataload(0x64)\n\n destinationRecipientAddress := mload(0x40)\n let lenDestinationRecipientAddress := calldataload(0x84)\n mstore(0x40, add(0x20, add(destinationRecipientAddress, lenDestinationRecipientAddress)))\n\n // in the calldata the destinationRecipientAddress is stored at 0xC4 after accounting for the function signature and length declaration\n calldatacopy(\n destinationRecipientAddress, // copy to destinationRecipientAddress\n 0x84, // copy from calldata @ 0x84\n sub(calldatasize(), 0x84) // copy size to the end of calldata\n )\n }\n\n bytes20 recipientAddress;\n address tokenAddress = _resourceIDToTokenContractAddress[resourceID];\n\n assembly {\n recipientAddress := mload(add(destinationRecipientAddress, 0x20))\n }\n\n require(_contractWhitelist[tokenAddress], \"provided tokenAddress is not whitelisted\");\n\n if (_burnList[tokenAddress]) {\n mintERC20(tokenAddress, address(recipientAddress), toSrcBalance(tokenAddress, amount));\n } else {\n releaseERC20(tokenAddress, address(recipientAddress), toSrcBalance(tokenAddress, amount));\n }\n\n emit Deposited(tokenAddress, address(recipientAddress), toSrcBalance(tokenAddress, amount));\n }\n\n /**\n @notice Used to manually release ERC20 tokens from ERC20Safe.\n @param tokenAddress Address of token contract to release.\n @param recipient Address to release tokens to.\n @param amount The amount of ERC20 tokens to release.\n */\n function withdraw(address tokenAddress, address recipient, uint amount) external override onlyBridge {\n releaseERC20(tokenAddress, recipient, amount);\n }\n\n function toDestBalance(address tokenAddress, uint256 amount) internal returns(uint256) {\n Decimals memory decimals = _decimals[tokenAddress];\n // We are not allowed decimals not set or not set correctly\n require(decimals.srcDecimals != 0 && decimals.destDecimals != 0, \"Wrong decimals\");\n if (decimals.destDecimals >= decimals.srcDecimals) {\n return amount.mul(10 ** (decimals.destDecimals - decimals.srcDecimals));\n } else {\n return amount.div(10 ** (decimals.srcDecimals - decimals.destDecimals));\n }\n }\n\n function toSrcBalance(address tokenAddress, uint256 amount) internal returns(uint256) {\n Decimals memory decimals = _decimals[tokenAddress];\n // We are not allowed decimals not set or not set correctly\n require(decimals.srcDecimals != 0 && decimals.destDecimals != 0, \"Wrong decimals\");\n if (decimals.destDecimals >= decimals.srcDecimals) {\n return amount.div(10 ** (decimals.destDecimals - decimals.srcDecimals));\n } else {\n return amount.mul(10 ** (decimals.srcDecimals - decimals.destDecimals));\n }\n }\n}\n", - "sourcePath": "/root/dev-spaces/me/chainbridge-solidity/contracts/handlers/ERC20Handler.sol", - "ast": { - "absolutePath": "project:/contracts/handlers/ERC20Handler.sol", - "exportedSymbols": { - "ERC20Handler": [7269] - }, - "id": 7270, - "license": null, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 6809, - "literals": ["solidity", "0.7", ".0"], - "nodeType": "PragmaDirective", - "src": "0:22:34" - }, - { - "id": 6810, - "literals": ["experimental", "ABIEncoderV2"], - "nodeType": "PragmaDirective", - "src": "23:33:34" - }, - { - "absolutePath": "project:/contracts/interfaces/IDepositExecute.sol", - "file": "../interfaces/IDepositExecute.sol", - "id": 6811, - "nodeType": "ImportDirective", - "scope": 7270, - "sourceUnit": 8246, - "src": "58:43:34", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "project:/contracts/handlers/HandlerHelpers.sol", - "file": "./HandlerHelpers.sol", - "id": 6812, - "nodeType": "ImportDirective", - "scope": 7270, - "sourceUnit": 8210, - "src": "102:30:34", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "project:/contracts/ERC20Safe.sol", - "file": "../ERC20Safe.sol", - "id": 6813, - "nodeType": "ImportDirective", - "scope": 7270, - "sourceUnit": 5943, - "src": "133:26:34", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "@openzeppelin/contracts/presets/ERC20PresetMinterPauser.sol", - "file": "@openzeppelin/contracts/presets/ERC20PresetMinterPauser.sol", - "id": 6814, - "nodeType": "ImportDirective", - "scope": 7270, - "sourceUnit": 1074, - "src": "160:69:34", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol", - "file": "@openzeppelin/contracts/math/SafeMath.sol", - "id": 6815, - "nodeType": "ImportDirective", - "scope": 7270, - "sourceUnit": 938, - "src": "230:51:34", - "symbolAliases": [], - "unitAlias": "" - }, - { - "abstract": false, - "baseContracts": [ - { - "arguments": null, - "baseName": { - "contractScope": null, - "id": 6817, - "name": "IDepositExecute", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 8245, - "src": "480:15:34", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IDepositExecute_$8245", - "typeString": "contract IDepositExecute" - } - }, - "id": 6818, - "nodeType": "InheritanceSpecifier", - "src": "480:15:34" + "nodeType": "YulAssignment", + "src": "4259:23:66", + "value": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "4270:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4277:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4266:3:66" }, + "nodeType": "YulFunctionCall", + "src": "4266:16:66" + }, + "variableNames": [ { - "arguments": null, - "baseName": { - "contractScope": null, - "id": 6819, - "name": "HandlerHelpers", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 8209, - "src": "497:14:34", - "typeDescriptions": { - "typeIdentifier": "t_contract$_HandlerHelpers_$8209", - "typeString": "contract HandlerHelpers" - } + "name": "dst", + "nodeType": "YulIdentifier", + "src": "4259:3:66" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "4292:44:66", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4310:6:66" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "4322:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4330:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "4318:3:66" }, - "id": 6820, - "nodeType": "InheritanceSpecifier", - "src": "497:14:34" + "nodeType": "YulFunctionCall", + "src": "4318:17:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4306:3:66" }, + "nodeType": "YulFunctionCall", + "src": "4306:30:66" + }, + "variables": [ { - "arguments": null, - "baseName": { - "contractScope": null, - "id": 6821, - "name": "ERC20Safe", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5942, - "src": "513:9:34", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Safe_$5942", - "typeString": "contract ERC20Safe" - } - }, - "id": 6822, - "nodeType": "InheritanceSpecifier", - "src": "513:9:34" - } - ], - "contractDependencies": [5942, 8209, 8245, 8283], - "contractKind": "contract", - "documentation": { - "id": 6816, - "nodeType": "StructuredDocumentation", - "src": "283:171:34", - "text": "@title Handles ERC20 deposits and deposit executions.\n@author ChainSafe Systems.\n@notice This contract is intended to be used with the Bridge contract." - }, - "fullyImplemented": true, - "id": 7269, - "linearizedBaseContracts": [7269, 5942, 8209, 8283, 8245], - "name": "ERC20Handler", - "nodeType": "ContractDefinition", - "nodes": [ - { - "id": 6825, - "libraryName": { - "contractScope": null, - "id": 6823, - "name": "SafeMath", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 937, - "src": "535:8:34", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$937", - "typeString": "library SafeMath" - } + "name": "srcEnd", + "nodeType": "YulTypedName", + "src": "4296:6:66", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4364:103:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", + "nodeType": "YulIdentifier", + "src": "4378:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "4378:79:66" }, - "nodeType": "UsingForDirective", - "src": "529:27:34", - "typeName": { - "id": 6824, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "548:7:34", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } + "nodeType": "YulExpressionStatement", + "src": "4378:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "4351:6:66" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "4359:3:66" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "4348:2:66" }, - { - "canonicalName": "ERC20Handler.DepositRecord", - "id": 6840, - "members": [ + "nodeType": "YulFunctionCall", + "src": "4348:15:66" + }, + "nodeType": "YulIf", + "src": "4345:122:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4552:155:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "4567:21:66", + "value": { + "name": "src", + "nodeType": "YulIdentifier", + "src": "4585:3:66" + }, + "variables": [ + { + "name": "elementPos", + "nodeType": "YulTypedName", + "src": "4571:10:66", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ { - "constant": false, - "id": 6827, - "mutability": "mutable", - "name": "_tokenAddress", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 6840, - "src": "593:21:34", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 6826, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "593:7:34", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" + "name": "dst", + "nodeType": "YulIdentifier", + "src": "4609:3:66" }, { - "constant": false, - "id": 6829, - "mutability": "mutable", - "name": "_lenDestinationRecipientAddress", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 6840, - "src": "624:40:34", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 6828, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "624:5:34", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } + "arguments": [ + { + "name": "elementPos", + "nodeType": "YulIdentifier", + "src": "4646:10:66" }, - "value": null, - "visibility": "internal" + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "4658:3:66" + } + ], + "functionName": { + "name": "abi_decode_t_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "4614:31:66" + }, + "nodeType": "YulFunctionCall", + "src": "4614:48:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4602:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "4602:61:66" + }, + "nodeType": "YulExpressionStatement", + "src": "4602:61:66" + }, + { + "nodeType": "YulAssignment", + "src": "4676:21:66", + "value": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "4687:3:66" }, { - "constant": false, - "id": 6831, - "mutability": "mutable", - "name": "_destinationChainID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 6840, - "src": "674:27:34", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 6830, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "674:5:34", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" + "kind": "number", + "nodeType": "YulLiteral", + "src": "4692:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4683:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "4683:14:66" + }, + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "4676:3:66" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "4505:3:66" + }, + { + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "4510:6:66" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "4502:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "4502:15:66" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "4518:25:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4520:21:66", + "value": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "4531:3:66" }, { - "constant": false, - "id": 6833, - "mutability": "mutable", - "name": "_resourceID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 6840, - "src": "711:19:34", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 6832, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "711:7:34", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 6835, - "mutability": "mutable", - "name": "_destinationRecipientAddress", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 6840, - "src": "740:36:34", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 6834, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "740:5:34", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 6837, - "mutability": "mutable", - "name": "_depositer", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 6840, - "src": "786:18:34", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 6836, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "786:7:34", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 6839, - "mutability": "mutable", - "name": "_amount", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 6840, - "src": "814:15:34", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6838, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "814:4:34", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" + "kind": "number", + "nodeType": "YulLiteral", + "src": "4536:4:66", + "type": "", + "value": "0x20" } - ], - "name": "DepositRecord", - "nodeType": "StructDefinition", - "scope": 7269, - "src": "562:274:34", - "visibility": "public" - }, - { - "constant": false, - "functionSelector": "4402027f", - "id": 6846, - "mutability": "mutable", - "name": "_depositRecords", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7269, - "src": "880:74:34", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint8_$_t_mapping$_t_uint64_$_t_struct$_DepositRecord_$6840_storage_$_$", - "typeString": "mapping(uint8 => mapping(uint64 => struct ERC20Handler.DepositRecord))" + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4527:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "4527:14:66" }, - "typeName": { - "id": 6845, - "keyType": { - "id": 6841, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "889:5:34", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Mapping", - "src": "880:51:34", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint8_$_t_mapping$_t_uint64_$_t_struct$_DepositRecord_$6840_storage_$_$", - "typeString": "mapping(uint8 => mapping(uint64 => struct ERC20Handler.DepositRecord))" + "variableNames": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "4520:3:66" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "4480:21:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "4482:17:66", + "value": { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4493:6:66" + }, + "variables": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "4486:3:66", + "type": "" + } + ] + } + ] + }, + "src": "4476:231:66" + } + ] + }, + "name": "abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "4064:6:66", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "4072:6:66", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "4080:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "4088:5:66", + "type": "" + } + ], + "src": "3981:732:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4824:297:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "4873:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulIdentifier", + "src": "4875:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "4875:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "4875:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4852:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4860:4:66", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4848:3:66" }, - "valueType": { - "id": 6844, - "keyType": { - "id": 6842, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "906:6:34", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "nodeType": "Mapping", - "src": "898:32:34", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_DepositRecord_$6840_storage_$", - "typeString": "mapping(uint64 => struct ERC20Handler.DepositRecord)" - }, - "valueType": { - "contractScope": null, - "id": 6843, - "name": "DepositRecord", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 6840, - "src": "916:13:34", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DepositRecord_$6840_storage_ptr", - "typeString": "struct ERC20Handler.DepositRecord" - } - } - } + "nodeType": "YulFunctionCall", + "src": "4848:17:66" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "4867:3:66" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "4844:3:66" }, - "value": null, - "visibility": "public" + "nodeType": "YulFunctionCall", + "src": "4844:27:66" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "4837:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "4837:35:66" + }, + "nodeType": "YulIf", + "src": "4834:122:66" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "4965:27:66", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4985:6:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "4979:5:66" }, + "nodeType": "YulFunctionCall", + "src": "4979:13:66" + }, + "variables": [ { - "anonymous": false, - "documentation": null, - "id": 6854, - "name": "Deposited", - "nodeType": "EventDefinition", - "parameters": { - "id": 6853, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 6848, - "indexed": true, - "mutability": "mutable", - "name": "token", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 6854, - "src": "977:21:34", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 6847, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "977:7:34", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 6850, - "indexed": true, - "mutability": "mutable", - "name": "recipient", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 6854, - "src": "1000:25:34", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 6849, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1000:7:34", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 6852, - "indexed": false, - "mutability": "mutable", - "name": "amount", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 6854, - "src": "1027:14:34", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6851, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1027:7:34", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "976:66:34" + "name": "length", + "nodeType": "YulTypedName", + "src": "4969:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5001:114:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5088:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5096:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5084:3:66" }, - "src": "961:82:34" + "nodeType": "YulFunctionCall", + "src": "5084:17:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "5103:6:66" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "5111:3:66" + } + ], + "functionName": { + "name": "abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr_fromMemory", + "nodeType": "YulIdentifier", + "src": "5010:73:66" }, + "nodeType": "YulFunctionCall", + "src": "5010:105:66" + }, + "variableNames": [ { - "anonymous": false, - "documentation": null, - "id": 6862, - "name": "Withdrawn", - "nodeType": "EventDefinition", - "parameters": { - "id": 6861, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 6856, - "indexed": true, - "mutability": "mutable", - "name": "token", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 6862, - "src": "1064:21:34", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 6855, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1064:7:34", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 6858, - "indexed": true, - "mutability": "mutable", - "name": "depositer", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 6862, - "src": "1087:25:34", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 6857, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1087:7:34", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 6860, - "indexed": false, - "mutability": "mutable", - "name": "amount", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 6862, - "src": "1114:14:34", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6859, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1114:7:34", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1063:66:34" + "name": "array", + "nodeType": "YulIdentifier", + "src": "5001:5:66" + } + ] + } + ] + }, + "name": "abi_decode_t_array$_t_address_$dyn_memory_ptr_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "4802:6:66", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "4810:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "4818:5:66", + "type": "" + } + ], + "src": "4736:385:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5330:1226:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "5377:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "5379:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "5379:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "5379:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "5351:7:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5360:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "5347:3:66" }, - "src": "1048:82:34" + "nodeType": "YulFunctionCall", + "src": "5347:23:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5372:3:66", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "5343:3:66" }, + "nodeType": "YulFunctionCall", + "src": "5343:33:66" + }, + "nodeType": "YulIf", + "src": "5340:120:66" + }, + { + "nodeType": "YulBlock", + "src": "5470:128:66", + "statements": [ { - "body": { - "id": 6939, - "nodeType": "Block", - "src": "2289:590:34", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 6882, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 6878, - "name": "initialResourceIDs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6868, - "src": "2307:18:34", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - }, - "id": 6879, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2307:25:34", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 6880, - "name": "initialContractAddresses", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6871, - "src": "2336:24:34", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 6881, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2336:31:34", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2307:60:34", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "696e697469616c5265736f7572636549447320616e6420696e697469616c436f6e7472616374416464726573736573206c656e206d69736d61746368", - "id": 6883, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2381:62:34", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_4ad26bc3c99f2850e5fe1de98475000419054e7d49a87288c0e5940e995dd510", - "typeString": "literal_string \"initialResourceIDs and initialContractAddresses len mismatch\"" - }, - "value": "initialResourceIDs and initialContractAddresses len mismatch" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_4ad26bc3c99f2850e5fe1de98475000419054e7d49a87288c0e5940e995dd510", - "typeString": "literal_string \"initialResourceIDs and initialContractAddresses len mismatch\"" - } - ], - "id": 6877, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "2299:7:34", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 6884, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2299:145:34", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 6885, - "nodeType": "ExpressionStatement", - "src": "2299:145:34" - }, - { - "expression": { - "argumentTypes": null, - "id": 6888, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 6886, - "name": "_bridgeAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8035, - "src": "2455:14:34", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 6887, - "name": "bridgeAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6865, - "src": "2472:13:34", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "2455:30:34", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 6889, - "nodeType": "ExpressionStatement", - "src": "2455:30:34" - }, - { - "assignments": [6891], - "declarations": [ - { - "constant": false, - "id": 6891, - "mutability": "mutable", - "name": "initialCount", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 6939, - "src": "2496:20:34", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6890, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2496:7:34", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 6894, - "initialValue": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 6892, - "name": "initialResourceIDs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6868, - "src": "2519:18:34", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - }, - "id": 6893, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2519:25:34", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2496:48:34" - }, - { - "body": { - "id": 6914, - "nodeType": "Block", - "src": "2597:89:34", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 6906, - "name": "initialResourceIDs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6868, - "src": "2624:18:34", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - }, - "id": 6908, - "indexExpression": { - "argumentTypes": null, - "id": 6907, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6896, - "src": "2643:1:34", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2624:21:34", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 6909, - "name": "initialContractAddresses", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6871, - "src": "2647:24:34", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 6911, - "indexExpression": { - "argumentTypes": null, - "id": 6910, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6896, - "src": "2672:1:34", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2647:27:34", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 6905, - "name": "_setResource", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8163, - "src": "2611:12:34", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", - "typeString": "function (bytes32,address)" - } - }, - "id": 6912, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2611:64:34", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 6913, - "nodeType": "ExpressionStatement", - "src": "2611:64:34" - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 6901, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 6899, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6896, - "src": "2574:1:34", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "id": 6900, - "name": "initialCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6891, - "src": "2578:12:34", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2574:16:34", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 6915, - "initializationExpression": { - "assignments": [6896], - "declarations": [ - { - "constant": false, - "id": 6896, - "mutability": "mutable", - "name": "i", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 6915, - "src": "2559:9:34", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6895, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2559:7:34", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 6898, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 6897, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2571:1:34", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "2559:13:34" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 6903, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "2592:3:34", - "subExpression": { - "argumentTypes": null, - "id": 6902, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6896, - "src": "2592:1:34", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 6904, - "nodeType": "ExpressionStatement", - "src": "2592:3:34" - }, - "nodeType": "ForStatement", - "src": "2554:132:34" - }, - { - "assignments": [6917], - "declarations": [ - { - "constant": false, - "id": 6917, - "mutability": "mutable", - "name": "burnableCount", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 6939, - "src": "2696:21:34", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6916, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2696:7:34", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 6920, - "initialValue": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 6918, - "name": "burnableContractAddresses", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6874, - "src": "2720:25:34", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 6919, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2720:32:34", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2696:56:34" - }, - { - "body": { - "id": 6937, - "nodeType": "Block", - "src": "2806:67:34", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 6932, - "name": "burnableContractAddresses", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6874, - "src": "2833:25:34", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 6934, - "indexExpression": { - "argumentTypes": null, - "id": 6933, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6922, - "src": "2859:1:34", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2833:28:34", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 6931, - "name": "_setBurnable", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8182, - "src": "2820:12:34", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", - "typeString": "function (address)" - } - }, - "id": 6935, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2820:42:34", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 6936, - "nodeType": "ExpressionStatement", - "src": "2820:42:34" - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 6927, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 6925, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6922, - "src": "2782:1:34", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "id": 6926, - "name": "burnableCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6917, - "src": "2786:13:34", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2782:17:34", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 6938, - "initializationExpression": { - "assignments": [6922], - "declarations": [ - { - "constant": false, - "id": 6922, - "mutability": "mutable", - "name": "i", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 6938, - "src": "2767:9:34", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6921, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2767:7:34", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 6924, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 6923, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2779:1:34", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "2767:13:34" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 6929, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "2801:3:34", - "subExpression": { - "argumentTypes": null, - "id": 6928, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6922, - "src": "2801:1:34", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 6930, - "nodeType": "ExpressionStatement", - "src": "2801:3:34" - }, - "nodeType": "ForStatement", - "src": "2762:111:34" - } - ] - }, - "documentation": { - "id": 6863, - "nodeType": "StructuredDocumentation", - "src": "1136:935:34", - "text": "@param bridgeAddress Contract address of previously deployed Bridge.\n@param initialResourceIDs Resource IDs are used to identify a specific contract address.\nThese are the Resource IDs this contract will initially support.\n@param initialContractAddresses These are the addresses the {initialResourceIDs} will point to, and are the contracts that will be\ncalled to perform various deposit calls.\n@param burnableContractAddresses These addresses will be set as burnable and when {deposit} is called, the deposited token will be burned.\nWhen {executeProposal} is called, new tokens will be minted.\n@dev {initialResourceIDs} and {initialContractAddresses} must have the same length (one resourceID for every address).\nAlso, these arrays must be ordered in the way that {initialResourceIDs}[0] is the intended resourceID for {initialContractAddresses}[0]." - }, - "id": 6940, - "implemented": true, - "kind": "constructor", - "modifiers": [], - "name": "", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 6875, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 6865, - "mutability": "mutable", - "name": "bridgeAddress", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 6940, - "src": "2097:30:34", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 6864, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2097:7:34", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 6868, - "mutability": "mutable", - "name": "initialResourceIDs", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 6940, - "src": "2137:35:34", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[]" - }, - "typeName": { - "baseType": { - "id": 6866, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2137:7:34", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 6867, - "length": null, - "nodeType": "ArrayTypeName", - "src": "2137:9:34", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[]" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 6871, - "mutability": "mutable", - "name": "initialContractAddresses", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 6940, - "src": "2182:41:34", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[]" - }, - "typeName": { - "baseType": { - "id": 6869, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2182:7:34", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 6870, - "length": null, - "nodeType": "ArrayTypeName", - "src": "2182:9:34", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 6874, - "mutability": "mutable", - "name": "burnableContractAddresses", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 6940, - "src": "2233:42:34", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[]" - }, - "typeName": { - "baseType": { - "id": 6872, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2233:7:34", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 6873, - "length": null, - "nodeType": "ArrayTypeName", - "src": "2233:9:34", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - }, - "value": null, - "visibility": "internal" - } + "nodeType": "YulVariableDeclaration", + "src": "5485:15:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5499:1:66", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "5489:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5514:74:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5560:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5571:6:66" + } ], - "src": "2087:194:34" + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5556:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "5556:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "5580:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "5524:31:66" }, - "returnParameters": { - "id": 6876, - "nodeType": "ParameterList", - "parameters": [], - "src": "2289:0:34" + "nodeType": "YulFunctionCall", + "src": "5524:64:66" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "5514:6:66" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "5608:307:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "5623:39:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5647:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5658:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5643:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "5643:18:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "5637:5:66" }, - "scope": 7269, - "src": "2076:803:34", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" + "nodeType": "YulFunctionCall", + "src": "5637:25:66" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "5627:6:66", + "type": "" + } + ] }, { - "body": { - "id": 6956, - "nodeType": "Block", - "src": "3778:61:34", - "statements": [ - { - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 6950, - "name": "_depositRecords", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6846, - "src": "3795:15:34", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint8_$_t_mapping$_t_uint64_$_t_struct$_DepositRecord_$6840_storage_$_$", - "typeString": "mapping(uint8 => mapping(uint64 => struct ERC20Handler.DepositRecord storage ref))" - } - }, - "id": 6952, - "indexExpression": { - "argumentTypes": null, - "id": 6951, - "name": "destId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6945, - "src": "3811:6:34", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3795:23:34", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_DepositRecord_$6840_storage_$", - "typeString": "mapping(uint64 => struct ERC20Handler.DepositRecord storage ref)" - } - }, - "id": 6954, - "indexExpression": { - "argumentTypes": null, - "id": 6953, - "name": "depositNonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6943, - "src": "3819:12:34", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3795:37:34", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DepositRecord_$6840_storage", - "typeString": "struct ERC20Handler.DepositRecord storage ref" - } - }, - "functionReturnParameters": 6949, - "id": 6955, - "nodeType": "Return", - "src": "3788:44:34" - } - ] + "body": { + "nodeType": "YulBlock", + "src": "5709:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "5711:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "5711:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "5711:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5681:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5689:18:66", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "5678:2:66" }, - "documentation": { - "id": 6941, - "nodeType": "StructuredDocumentation", - "src": "2885:782:34", - "text": "@param depositNonce This ID will have been generated by the Bridge contract.\n@param destId ID of chain deposit will be bridged to.\n@return DepositRecord which consists of:\n- _tokenAddress Address used when {deposit} was executed.\n- _destinationChainID ChainID deposited tokens are intended to end up on.\n- _resourceID ResourceID used when {deposit} was executed.\n- _lenDestinationRecipientAddress Used to parse recipient's address from {_destinationRecipientAddress}\n- _destinationRecipientAddress Address tokens are intended to be deposited to on desitnation chain.\n- _depositer Address that initially called {deposit} in the Bridge contract.\n- _amount Amount of tokens that were deposited." - }, - "functionSelector": "ba484c09", - "id": 6957, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getDepositRecord", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 6946, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 6943, - "mutability": "mutable", - "name": "depositNonce", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 6957, - "src": "3698:19:34", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 6942, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "3698:6:34", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 6945, - "mutability": "mutable", - "name": "destId", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 6957, - "src": "3719:12:34", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 6944, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "3719:5:34", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } + "nodeType": "YulFunctionCall", + "src": "5678:30:66" + }, + "nodeType": "YulIf", + "src": "5675:117:66" + }, + { + "nodeType": "YulAssignment", + "src": "5806:99:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5877:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5888:6:66" + } ], - "src": "3697:35:34" + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5873:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "5873:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "5897:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory", + "nodeType": "YulIdentifier", + "src": "5816:56:66" }, - "returnParameters": { - "id": 6949, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 6948, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 6957, - "src": "3756:20:34", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DepositRecord_$6840_memory_ptr", - "typeString": "struct ERC20Handler.DepositRecord" - }, - "typeName": { - "contractScope": null, - "id": 6947, - "name": "DepositRecord", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 6840, - "src": "3756:13:34", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DepositRecord_$6840_storage_ptr", - "typeString": "struct ERC20Handler.DepositRecord" - } - }, - "value": null, - "visibility": "internal" - } + "nodeType": "YulFunctionCall", + "src": "5816:89:66" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "5806:6:66" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "5925:307:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "5940:39:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5964:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5975:2:66", + "type": "", + "value": "64" + } ], - "src": "3755:22:34" + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5960:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "5960:18:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "5954:5:66" }, - "scope": 7269, - "src": "3672:167:34", - "stateMutability": "view", - "virtual": false, - "visibility": "external" + "nodeType": "YulFunctionCall", + "src": "5954:25:66" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "5944:6:66", + "type": "" + } + ] }, { - "baseFunctions": [8236], - "body": { - "id": 7047, - "nodeType": "Block", - "src": "5004:1354:34", - "statements": [ - { - "assignments": [6975], - "declarations": [ - { - "constant": false, - "id": 6975, - "mutability": "mutable", - "name": "recipientAddress", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7047, - "src": "5014:31:34", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 6974, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "5014:5:34", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 6976, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "5014:31:34" - }, - { - "assignments": [6978], - "declarations": [ - { - "constant": false, - "id": 6978, - "mutability": "mutable", - "name": "amount", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7047, - "src": "5055:21:34", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6977, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5055:7:34", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 6979, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "5055:21:34" - }, - { - "assignments": [6981], - "declarations": [ - { - "constant": false, - "id": 6981, - "mutability": "mutable", - "name": "lenRecipientAddress", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7047, - "src": "5086:34:34", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6980, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5086:7:34", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 6982, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "5086:34:34" - }, - { - "AST": { - "nodeType": "YulBlock", - "src": "5140:476:34", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "5155:28:34", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5178:4:34", - "type": "", - "value": "0xC4" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "5165:12:34" - }, - "nodeType": "YulFunctionCall", - "src": "5165:18:34" - }, - "variableNames": [ - { - "name": "amount", - "nodeType": "YulIdentifier", - "src": "5155:6:34" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "5197:31:34", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5223:4:34", - "type": "", - "value": "0x40" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "5217:5:34" - }, - "nodeType": "YulFunctionCall", - "src": "5217:11:34" - }, - "variableNames": [ - { - "name": "recipientAddress", - "nodeType": "YulIdentifier", - "src": "5197:16:34" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "5241:41:34", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5277:4:34", - "type": "", - "value": "0xE4" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "5264:12:34" - }, - "nodeType": "YulFunctionCall", - "src": "5264:18:34" - }, - "variableNames": [ - { - "name": "lenRecipientAddress", - "nodeType": "YulIdentifier", - "src": "5241:19:34" - } - ] - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5302:4:34", - "type": "", - "value": "0x40" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5312:4:34", - "type": "", - "value": "0x20" - }, - { - "arguments": [ - { - "name": "recipientAddress", - "nodeType": "YulIdentifier", - "src": "5322:16:34" - }, - { - "name": "lenRecipientAddress", - "nodeType": "YulIdentifier", - "src": "5340:19:34" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "5318:3:34" - }, - "nodeType": "YulFunctionCall", - "src": "5318:42:34" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "5308:3:34" - }, - "nodeType": "YulFunctionCall", - "src": "5308:53:34" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "5295:6:34" - }, - "nodeType": "YulFunctionCall", - "src": "5295:67:34" - }, - "nodeType": "YulExpressionStatement", - "src": "5295:67:34" - }, - { - "expression": { - "arguments": [ - { - "name": "recipientAddress", - "nodeType": "YulIdentifier", - "src": "5406:16:34" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5479:4:34", - "type": "", - "value": "0xE4" - }, - { - "arguments": [ - { - "arguments": [], - "functionName": { - "name": "calldatasize", - "nodeType": "YulIdentifier", - "src": "5535:12:34" - }, - "nodeType": "YulFunctionCall", - "src": "5535:14:34" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5551:4:34", - "type": "", - "value": "0xE4" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "5531:3:34" - }, - "nodeType": "YulFunctionCall", - "src": "5531:25:34" - } - ], - "functionName": { - "name": "calldatacopy", - "nodeType": "YulIdentifier", - "src": "5376:12:34" - }, - "nodeType": "YulFunctionCall", - "src": "5376:230:34" - }, - "nodeType": "YulExpressionStatement", - "src": "5376:230:34" - } - ] - }, - "evmVersion": "istanbul", - "externalReferences": [ - { - "declaration": 6978, - "isOffset": false, - "isSlot": false, - "src": "5155:6:34", - "valueSize": 1 - }, - { - "declaration": 6981, - "isOffset": false, - "isSlot": false, - "src": "5241:19:34", - "valueSize": 1 - }, - { - "declaration": 6981, - "isOffset": false, - "isSlot": false, - "src": "5340:19:34", - "valueSize": 1 - }, - { - "declaration": 6975, - "isOffset": false, - "isSlot": false, - "src": "5197:16:34", - "valueSize": 1 - }, - { - "declaration": 6975, - "isOffset": false, - "isSlot": false, - "src": "5322:16:34", - "valueSize": 1 - }, - { - "declaration": 6975, - "isOffset": false, - "isSlot": false, - "src": "5406:16:34", - "valueSize": 1 - } - ], - "id": 6983, - "nodeType": "InlineAssembly", - "src": "5131:485:34" - }, + "body": { + "nodeType": "YulBlock", + "src": "6026:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "6028:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "6028:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "6028:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5998:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6006:18:66", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "5995:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "5995:30:66" + }, + "nodeType": "YulIf", + "src": "5992:117:66" + }, + { + "nodeType": "YulAssignment", + "src": "6123:99:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6194:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6205:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6190:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "6190:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "6214:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_array$_t_address_$dyn_memory_ptr_fromMemory", + "nodeType": "YulIdentifier", + "src": "6133:56:66" + }, + "nodeType": "YulFunctionCall", + "src": "6133:89:66" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "6123:6:66" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "6242:307:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "6257:39:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6281:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6292:2:66", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6277:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "6277:18:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "6271:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "6271:25:66" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "6261:6:66", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6343:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "6345:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "6345:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "6345:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6315:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6323:18:66", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "6312:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "6312:30:66" + }, + "nodeType": "YulIf", + "src": "6309:117:66" + }, + { + "nodeType": "YulAssignment", + "src": "6440:99:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6511:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6522:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6507:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "6507:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "6531:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_array$_t_address_$dyn_memory_ptr_fromMemory", + "nodeType": "YulIdentifier", + "src": "6450:56:66" + }, + "nodeType": "YulFunctionCall", + "src": "6450:89:66" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "6440:6:66" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_array$_t_bytes32_$dyn_memory_ptrt_array$_t_address_$dyn_memory_ptrt_array$_t_address_$dyn_memory_ptr_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "5276:9:66", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "5287:7:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "5299:6:66", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "5307:6:66", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "5315:6:66", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "5323:6:66", + "type": "" + } + ], + "src": "5127:1429:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6658:73:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "6675:3:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "6680:6:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6668:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "6668:19:66" + }, + "nodeType": "YulExpressionStatement", + "src": "6668:19:66" + }, + { + "nodeType": "YulAssignment", + "src": "6696:29:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "6715:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6720:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6711:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "6711:14:66" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "6696:11:66" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "6630:3:66", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "6635:6:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "6646:11:66", + "type": "" + } + ], + "src": "6562:169:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6843:141:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "6865:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6873:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6861:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "6861:14:66" + }, + { + "hexValue": "696e697469616c5265736f7572636549447320616e6420696e697469616c436f", + "kind": "string", + "nodeType": "YulLiteral", + "src": "6877:34:66", + "type": "", + "value": "initialResourceIDs and initialCo" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6854:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "6854:58:66" + }, + "nodeType": "YulExpressionStatement", + "src": "6854:58:66" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "6933:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6941:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6929:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "6929:15:66" + }, + { + "hexValue": "6e7472616374416464726573736573206c656e206d69736d61746368", + "kind": "string", + "nodeType": "YulLiteral", + "src": "6946:30:66", + "type": "", + "value": "ntractAddresses len mismatch" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6922:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "6922:55:66" + }, + "nodeType": "YulExpressionStatement", + "src": "6922:55:66" + } + ] + }, + "name": "store_literal_in_memory_4ad26bc3c99f2850e5fe1de98475000419054e7d49a87288c0e5940e995dd510", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "6835:6:66", + "type": "" + } + ], + "src": "6737:247:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7136:220:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7146:74:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "7212:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7217:2:66", + "type": "", + "value": "60" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "7153:58:66" + }, + "nodeType": "YulFunctionCall", + "src": "7153:67:66" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "7146:3:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "7318:3:66" + } + ], + "functionName": { + "name": "store_literal_in_memory_4ad26bc3c99f2850e5fe1de98475000419054e7d49a87288c0e5940e995dd510", + "nodeType": "YulIdentifier", + "src": "7229:88:66" + }, + "nodeType": "YulFunctionCall", + "src": "7229:93:66" + }, + "nodeType": "YulExpressionStatement", + "src": "7229:93:66" + }, + { + "nodeType": "YulAssignment", + "src": "7331:19:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "7342:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7347:2:66", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7338:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "7338:12:66" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "7331:3:66" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_4ad26bc3c99f2850e5fe1de98475000419054e7d49a87288c0e5940e995dd510_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "7124:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "7132:3:66", + "type": "" + } + ], + "src": "6990:366:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7533:248:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7543:26:66", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7555:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7566:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7551:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "7551:18:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7543:4:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7590:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7601:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7586:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "7586:17:66" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7609:4:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7615:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "7605:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "7605:20:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7579:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "7579:47:66" + }, + "nodeType": "YulExpressionStatement", + "src": "7579:47:66" + }, + { + "nodeType": "YulAssignment", + "src": "7635:139:66", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7769:4:66" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_4ad26bc3c99f2850e5fe1de98475000419054e7d49a87288c0e5940e995dd510_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "7643:124:66" + }, + "nodeType": "YulFunctionCall", + "src": "7643:131:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7635:4:66" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_4ad26bc3c99f2850e5fe1de98475000419054e7d49a87288c0e5940e995dd510__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "7513:9:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "7528:4:66", + "type": "" + } + ], + "src": "7362:419:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7815:152:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7832:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7835:77:66", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7825:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "7825:88:66" + }, + "nodeType": "YulExpressionStatement", + "src": "7825:88:66" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7929:1:66", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7932:4:66", + "type": "", + "value": "0x32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7922:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "7922:15:66" + }, + "nodeType": "YulExpressionStatement", + "src": "7922:15:66" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7953:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7956:4:66", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "7946:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "7946:15:66" + }, + "nodeType": "YulExpressionStatement", + "src": "7946:15:66" + } + ] + }, + "name": "panic_error_0x32", + "nodeType": "YulFunctionDefinition", + "src": "7787:180:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8001:152:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8018:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8021:77:66", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8011:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "8011:88:66" + }, + "nodeType": "YulExpressionStatement", + "src": "8011:88:66" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8115:1:66", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8118:4:66", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8108:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "8108:15:66" + }, + "nodeType": "YulExpressionStatement", + "src": "8108:15:66" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8139:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8142:4:66", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "8132:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "8132:15:66" + }, + "nodeType": "YulExpressionStatement", + "src": "8132:15:66" + } + ] + }, + "name": "panic_error_0x11", + "nodeType": "YulFunctionDefinition", + "src": "7973:180:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8204:32:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8214:16:66", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8225:5:66" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "8214:7:66" + } + ] + } + ] + }, + "name": "cleanup_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "8186:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "8196:7:66", + "type": "" + } + ], + "src": "8159:77:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8285:190:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8295:33:66", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8322:5:66" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "8304:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "8304:24:66" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8295:5:66" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8418:22:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "8420:16:66" + }, + "nodeType": "YulFunctionCall", + "src": "8420:18:66" + }, + "nodeType": "YulExpressionStatement", + "src": "8420:18:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8343:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8350:66:66", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "8340:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "8340:77:66" + }, + "nodeType": "YulIf", + "src": "8337:103:66" + }, + { + "nodeType": "YulAssignment", + "src": "8449:20:66", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8460:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8467:1:66", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8456:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "8456:13:66" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "8449:3:66" + } + ] + } + ] + }, + "name": "increment_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "8271:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nodeType": "YulTypedName", + "src": "8281:3:66", + "type": "" + } + ], + "src": "8242:233:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8587:117:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "8609:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8617:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8605:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "8605:14:66" + }, + { + "hexValue": "70726f766964656420636f6e7472616374206973206e6f742077686974656c69", + "kind": "string", + "nodeType": "YulLiteral", + "src": "8621:34:66", + "type": "", + "value": "provided contract is not whiteli" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8598:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "8598:58:66" + }, + "nodeType": "YulExpressionStatement", + "src": "8598:58:66" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "8677:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8685:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8673:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "8673:15:66" + }, + { + "hexValue": "73746564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "8690:6:66", + "type": "", + "value": "sted" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8666:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "8666:31:66" + }, + "nodeType": "YulExpressionStatement", + "src": "8666:31:66" + } + ] + }, + "name": "store_literal_in_memory_2daab49254b4a5228983fbc316d7992ab0064c3e34fa43dd7fbf9d5c4fe8b0da", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "8579:6:66", + "type": "" + } + ], + "src": "8481:223:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8856:220:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8866:74:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "8932:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8937:2:66", + "type": "", + "value": "36" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "8873:58:66" + }, + "nodeType": "YulFunctionCall", + "src": "8873:67:66" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "8866:3:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "9038:3:66" + } + ], + "functionName": { + "name": "store_literal_in_memory_2daab49254b4a5228983fbc316d7992ab0064c3e34fa43dd7fbf9d5c4fe8b0da", + "nodeType": "YulIdentifier", + "src": "8949:88:66" + }, + "nodeType": "YulFunctionCall", + "src": "8949:93:66" + }, + "nodeType": "YulExpressionStatement", + "src": "8949:93:66" + }, + { + "nodeType": "YulAssignment", + "src": "9051:19:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "9062:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9067:2:66", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9058:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "9058:12:66" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "9051:3:66" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_2daab49254b4a5228983fbc316d7992ab0064c3e34fa43dd7fbf9d5c4fe8b0da_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "8844:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "8852:3:66", + "type": "" + } + ], + "src": "8710:366:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9253:248:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "9263:26:66", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9275:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9286:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9271:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "9271:18:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "9263:4:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9310:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9321:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9306:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "9306:17:66" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "9329:4:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9335:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "9325:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "9325:20:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9299:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "9299:47:66" + }, + "nodeType": "YulExpressionStatement", + "src": "9299:47:66" + }, + { + "nodeType": "YulAssignment", + "src": "9355:139:66", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "9489:4:66" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_2daab49254b4a5228983fbc316d7992ab0064c3e34fa43dd7fbf9d5c4fe8b0da_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "9363:124:66" + }, + "nodeType": "YulFunctionCall", + "src": "9363:131:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "9355:4:66" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_2daab49254b4a5228983fbc316d7992ab0064c3e34fa43dd7fbf9d5c4fe8b0da__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "9233:9:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "9248:4:66", + "type": "" + } + ], + "src": "9082:419:66" + } + ] + }, + "contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_address(value)\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_array$_t_bytes32_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n revert(0, 0)\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_bytes32(value) {\n if iszero(eq(value, cleanup_t_bytes32(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes32_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_bytes32(value)\n }\n\n // bytes32[]\n function abi_decode_available_length_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_bytes32_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x20))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x20) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_bytes32_fromMemory(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // bytes32[]\n function abi_decode_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := mload(offset)\n array := abi_decode_available_length_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory(add(offset, 0x20), length, end)\n }\n\n function array_allocation_size_t_array$_t_address_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n // address[]\n function abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr_fromMemory(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_address_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x20))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x20) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_address_fromMemory(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // address[]\n function abi_decode_t_array$_t_address_$dyn_memory_ptr_fromMemory(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := mload(offset)\n array := abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr_fromMemory(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_addresst_array$_t_bytes32_$dyn_memory_ptrt_array$_t_address_$dyn_memory_ptrt_array$_t_address_$dyn_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3 {\n if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := mload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value1 := abi_decode_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := mload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value2 := abi_decode_t_array$_t_address_$dyn_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := mload(add(headStart, 96))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value3 := abi_decode_t_array$_t_address_$dyn_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function store_literal_in_memory_4ad26bc3c99f2850e5fe1de98475000419054e7d49a87288c0e5940e995dd510(memPtr) {\n\n mstore(add(memPtr, 0), \"initialResourceIDs and initialCo\")\n\n mstore(add(memPtr, 32), \"ntractAddresses len mismatch\")\n\n }\n\n function abi_encode_t_stringliteral_4ad26bc3c99f2850e5fe1de98475000419054e7d49a87288c0e5940e995dd510_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 60)\n store_literal_in_memory_4ad26bc3c99f2850e5fe1de98475000419054e7d49a87288c0e5940e995dd510(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_4ad26bc3c99f2850e5fe1de98475000419054e7d49a87288c0e5940e995dd510__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_4ad26bc3c99f2850e5fe1de98475000419054e7d49a87288c0e5940e995dd510_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n\n function store_literal_in_memory_2daab49254b4a5228983fbc316d7992ab0064c3e34fa43dd7fbf9d5c4fe8b0da(memPtr) {\n\n mstore(add(memPtr, 0), \"provided contract is not whiteli\")\n\n mstore(add(memPtr, 32), \"sted\")\n\n }\n\n function abi_encode_t_stringliteral_2daab49254b4a5228983fbc316d7992ab0064c3e34fa43dd7fbf9d5c4fe8b0da_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 36)\n store_literal_in_memory_2daab49254b4a5228983fbc316d7992ab0064c3e34fa43dd7fbf9d5c4fe8b0da(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_2daab49254b4a5228983fbc316d7992ab0064c3e34fa43dd7fbf9d5c4fe8b0da__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_2daab49254b4a5228983fbc316d7992ab0064c3e34fa43dd7fbf9d5c4fe8b0da_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n}\n", + "id": 66, + "language": "Yul", + "name": "#utility.yul" + } + ], + "deployedGeneratedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:26540:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "47:35:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "57:19:66", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "73:2:66", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "67:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "67:9:66" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "57:6:66" + } + ] + } + ] + }, + "name": "allocate_unbounded", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "40:6:66", + "type": "" + } + ], + "src": "7:75:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "177:28:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "194:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "197:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "187:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "187:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "187:12:66" + } + ] + }, + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulFunctionDefinition", + "src": "88:117:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "300:28:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "317:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "320:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "310:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "310:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "310:12:66" + } + ] + }, + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulFunctionDefinition", + "src": "211:117:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "379:81:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "389:65:66", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "404:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "411:42:66", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "400:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "400:54:66" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "389:7:66" + } + ] + } + ] + }, + "name": "cleanup_t_uint160", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "361:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "371:7:66", + "type": "" + } + ], + "src": "334:126:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "511:51:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "521:35:66", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "550:5:66" + } + ], + "functionName": { + "name": "cleanup_t_uint160", + "nodeType": "YulIdentifier", + "src": "532:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "532:24:66" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "521:7:66" + } + ] + } + ] + }, + "name": "cleanup_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "493:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "503:7:66", + "type": "" + } + ], + "src": "466:96:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "611:79:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "668:16:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "677:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "680:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "670:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "670:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "670:12:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "634:5:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "659:5:66" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "641:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "641:24:66" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "631:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "631:35:66" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "624:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "624:43:66" + }, + "nodeType": "YulIf", + "src": "621:63:66" + } + ] + }, + "name": "validator_revert_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "604:5:66", + "type": "" + } + ], + "src": "568:122:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "748:87:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "758:29:66", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "780:6:66" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "767:12:66" + }, + "nodeType": "YulFunctionCall", + "src": "767:20:66" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "758:5:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "823:5:66" + } + ], + "functionName": { + "name": "validator_revert_t_address", + "nodeType": "YulIdentifier", + "src": "796:26:66" + }, + "nodeType": "YulFunctionCall", + "src": "796:33:66" + }, + "nodeType": "YulExpressionStatement", + "src": "796:33:66" + } + ] + }, + "name": "abi_decode_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "726:6:66", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "734:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "742:5:66", + "type": "" + } + ], + "src": "696:139:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "907:263:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "953:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "955:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "955:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "955:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "928:7:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "937:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "924:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "924:23:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "949:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "920:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "920:32:66" + }, + "nodeType": "YulIf", + "src": "917:119:66" + }, + { + "nodeType": "YulBlock", + "src": "1046:117:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "1061:15:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1075:1:66", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1065:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1090:63:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1125:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1136:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1121:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "1121:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1145:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "1100:20:66" + }, + "nodeType": "YulFunctionCall", + "src": "1100:53:66" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1090:6:66" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "877:9:66", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "888:7:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "900:6:66", + "type": "" + } + ], + "src": "841:329:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1221:32:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1231:16:66", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1242:5:66" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "1231:7:66" + } + ] + } + ] + }, + "name": "cleanup_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1203:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "1213:7:66", + "type": "" + } + ], + "src": "1176:77:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1302:79:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1359:16:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1368:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1371:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1361:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "1361:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "1361:12:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1325:5:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1350:5:66" + } + ], + "functionName": { + "name": "cleanup_t_bytes32", + "nodeType": "YulIdentifier", + "src": "1332:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "1332:24:66" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "1322:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "1322:35:66" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1315:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "1315:43:66" + }, + "nodeType": "YulIf", + "src": "1312:63:66" + } + ] + }, + "name": "validator_revert_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1295:5:66", + "type": "" + } + ], + "src": "1259:122:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1439:87:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1449:29:66", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1471:6:66" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1458:12:66" + }, + "nodeType": "YulFunctionCall", + "src": "1458:20:66" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1449:5:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1514:5:66" + } + ], + "functionName": { + "name": "validator_revert_t_bytes32", + "nodeType": "YulIdentifier", + "src": "1487:26:66" + }, + "nodeType": "YulFunctionCall", + "src": "1487:33:66" + }, + "nodeType": "YulExpressionStatement", + "src": "1487:33:66" + } + ] + }, + "name": "abi_decode_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1417:6:66", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "1425:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1433:5:66", + "type": "" + } + ], + "src": "1387:139:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1598:263:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1644:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "1646:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "1646:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "1646:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1619:7:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1628:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1615:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "1615:23:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1640:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1611:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "1611:32:66" + }, + "nodeType": "YulIf", + "src": "1608:119:66" + }, + { + "nodeType": "YulBlock", + "src": "1737:117:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "1752:15:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1766:1:66", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1756:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1781:63:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1816:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1827:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1812:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "1812:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1836:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_bytes32", + "nodeType": "YulIdentifier", + "src": "1791:20:66" + }, + "nodeType": "YulFunctionCall", + "src": "1791:53:66" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1781:6:66" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1568:9:66", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1579:7:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1591:6:66", + "type": "" + } + ], + "src": "1532:329:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1932:53:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "1949:3:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1972:5:66" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "1954:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "1954:24:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1942:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "1942:37:66" + }, + "nodeType": "YulExpressionStatement", + "src": "1942:37:66" + } + ] + }, + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1920:5:66", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "1927:3:66", + "type": "" + } + ], + "src": "1867:118:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2089:124:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2099:26:66", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2111:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2122:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2107:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "2107:18:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "2099:4:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2179:6:66" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2192:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2203:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2188:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "2188:17:66" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "2135:43:66" + }, + "nodeType": "YulFunctionCall", + "src": "2135:71:66" + }, + "nodeType": "YulExpressionStatement", + "src": "2135:71:66" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2061:9:66", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2073:6:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "2084:4:66", + "type": "" + } + ], + "src": "1991:222:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2262:43:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2272:27:66", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2287:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2294:4:66", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "2283:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "2283:16:66" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "2272:7:66" + } + ] + } + ] + }, + "name": "cleanup_t_uint8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2244:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "2254:7:66", + "type": "" + } + ], + "src": "2219:86:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2352:77:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2407:16:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2416:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2419:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2409:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "2409:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "2409:12:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2375:5:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2398:5:66" + } + ], + "functionName": { + "name": "cleanup_t_uint8", + "nodeType": "YulIdentifier", + "src": "2382:15:66" + }, + "nodeType": "YulFunctionCall", + "src": "2382:22:66" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "2372:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "2372:33:66" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "2365:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "2365:41:66" + }, + "nodeType": "YulIf", + "src": "2362:61:66" + } + ] + }, + "name": "validator_revert_t_uint8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2345:5:66", + "type": "" + } + ], + "src": "2311:118:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2485:85:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2495:29:66", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2517:6:66" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "2504:12:66" + }, + "nodeType": "YulFunctionCall", + "src": "2504:20:66" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2495:5:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2558:5:66" + } + ], + "functionName": { + "name": "validator_revert_t_uint8", + "nodeType": "YulIdentifier", + "src": "2533:24:66" + }, + "nodeType": "YulFunctionCall", + "src": "2533:31:66" + }, + "nodeType": "YulExpressionStatement", + "src": "2533:31:66" + } + ] + }, + "name": "abi_decode_t_uint8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "2463:6:66", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "2471:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2479:5:66", + "type": "" + } + ], + "src": "2435:135:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2620:57:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2630:41:66", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2645:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2652:18:66", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "2641:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "2641:30:66" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "2630:7:66" + } + ] + } + ] + }, + "name": "cleanup_t_uint64", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2602:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "2612:7:66", + "type": "" + } + ], + "src": "2576:101:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2725:78:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2781:16:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2790:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2793:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2783:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "2783:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "2783:12:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2748:5:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2772:5:66" + } + ], + "functionName": { + "name": "cleanup_t_uint64", + "nodeType": "YulIdentifier", + "src": "2755:16:66" + }, + "nodeType": "YulFunctionCall", + "src": "2755:23:66" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "2745:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "2745:34:66" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "2738:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "2738:42:66" + }, + "nodeType": "YulIf", + "src": "2735:62:66" + } + ] + }, + "name": "validator_revert_t_uint64", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2718:5:66", + "type": "" + } + ], + "src": "2683:120:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2860:86:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2870:29:66", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2892:6:66" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "2879:12:66" + }, + "nodeType": "YulFunctionCall", + "src": "2879:20:66" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2870:5:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2934:5:66" + } + ], + "functionName": { + "name": "validator_revert_t_uint64", + "nodeType": "YulIdentifier", + "src": "2908:25:66" + }, + "nodeType": "YulFunctionCall", + "src": "2908:32:66" + }, + "nodeType": "YulExpressionStatement", + "src": "2908:32:66" + } + ] + }, + "name": "abi_decode_t_uint64", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "2838:6:66", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "2846:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2854:5:66", + "type": "" + } + ], + "src": "2809:137:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3041:28:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3058:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3061:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3051:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "3051:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "3051:12:66" + } + ] + }, + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulFunctionDefinition", + "src": "2952:117:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3164:28:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3181:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3184:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3174:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "3174:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "3174:12:66" + } + ] + }, + "name": "revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490", + "nodeType": "YulFunctionDefinition", + "src": "3075:117:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3287:28:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3304:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3307:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3297:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "3297:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "3297:12:66" + } + ] + }, + "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", + "nodeType": "YulFunctionDefinition", + "src": "3198:117:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3408:478:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3457:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulIdentifier", + "src": "3459:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "3459:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "3459:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3436:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3444:4:66", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3432:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "3432:17:66" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "3451:3:66" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "3428:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "3428:27:66" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3421:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "3421:35:66" + }, + "nodeType": "YulIf", + "src": "3418:122:66" + }, + { + "nodeType": "YulAssignment", + "src": "3549:30:66", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3572:6:66" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "3559:12:66" + }, + "nodeType": "YulFunctionCall", + "src": "3559:20:66" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "3549:6:66" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3622:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490", + "nodeType": "YulIdentifier", + "src": "3624:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "3624:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "3624:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "3594:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3602:18:66", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "3591:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "3591:30:66" + }, + "nodeType": "YulIf", + "src": "3588:117:66" + }, + { + "nodeType": "YulAssignment", + "src": "3714:29:66", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3730:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3738:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3726:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "3726:17:66" + }, + "variableNames": [ + { + "name": "arrayPos", + "nodeType": "YulIdentifier", + "src": "3714:8:66" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3797:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", + "nodeType": "YulIdentifier", + "src": "3799:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "3799:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "3799:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "arrayPos", + "nodeType": "YulIdentifier", + "src": "3762:8:66" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "3776:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3784:4:66", + "type": "", + "value": "0x01" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "3772:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "3772:17:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3758:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "3758:32:66" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "3792:3:66" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "3755:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "3755:41:66" + }, + "nodeType": "YulIf", + "src": "3752:128:66" + } + ] + }, + "name": "abi_decode_t_bytes_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "3375:6:66", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "3383:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "arrayPos", + "nodeType": "YulTypedName", + "src": "3391:8:66", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "3401:6:66", + "type": "" + } + ], + "src": "3334:552:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4042:953:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "4089:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "4091:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "4091:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "4091:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4063:7:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4072:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "4059:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "4059:23:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4084:3:66", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "4055:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "4055:33:66" + }, + "nodeType": "YulIf", + "src": "4052:120:66" + }, + { + "nodeType": "YulBlock", + "src": "4182:117:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "4197:15:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4211:1:66", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "4201:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4226:63:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4261:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4272:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4257:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "4257:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4281:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_bytes32", + "nodeType": "YulIdentifier", + "src": "4236:20:66" + }, + "nodeType": "YulFunctionCall", + "src": "4236:53:66" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "4226:6:66" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "4309:116:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "4324:16:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4338:2:66", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "4328:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4354:61:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4387:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4398:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4383:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "4383:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4407:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_uint8", + "nodeType": "YulIdentifier", + "src": "4364:18:66" + }, + "nodeType": "YulFunctionCall", + "src": "4364:51:66" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "4354:6:66" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "4435:117:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "4450:16:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4464:2:66", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "4454:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4480:62:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4514:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4525:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4510:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "4510:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4534:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_uint64", + "nodeType": "YulIdentifier", + "src": "4490:19:66" + }, + "nodeType": "YulFunctionCall", + "src": "4490:52:66" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "4480:6:66" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "4562:118:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "4577:16:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4591:2:66", + "type": "", + "value": "96" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "4581:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4607:63:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4642:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4653:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4638:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "4638:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4662:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "4617:20:66" + }, + "nodeType": "YulFunctionCall", + "src": "4617:53:66" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "4607:6:66" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "4690:298:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "4705:47:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4736:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4747:3:66", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4732:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "4732:19:66" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4719:12:66" + }, + "nodeType": "YulFunctionCall", + "src": "4719:33:66" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "4709:6:66", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4799:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "4801:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "4801:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "4801:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4771:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4779:18:66", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "4768:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "4768:30:66" + }, + "nodeType": "YulIf", + "src": "4765:117:66" + }, + { + "nodeType": "YulAssignment", + "src": "4896:82:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4950:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4961:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4946:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "4946:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4970:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_bytes_calldata_ptr", + "nodeType": "YulIdentifier", + "src": "4914:31:66" + }, + "nodeType": "YulFunctionCall", + "src": "4914:64:66" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "4896:6:66" + }, + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "4904:6:66" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_uint8t_uint64t_addresst_bytes_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3972:9:66", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "3983:7:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "3995:6:66", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "4003:6:66", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "4011:6:66", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "4019:6:66", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "4027:6:66", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "4035:6:66", + "type": "" + } + ], + "src": "3892:1103:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5081:388:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "5127:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "5129:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "5129:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "5129:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "5102:7:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5111:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "5098:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "5098:23:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5123:2:66", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "5094:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "5094:32:66" + }, + "nodeType": "YulIf", + "src": "5091:119:66" + }, + { + "nodeType": "YulBlock", + "src": "5220:115:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "5235:15:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5249:1:66", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "5239:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5264:61:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5297:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5308:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5293:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "5293:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "5317:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_uint8", + "nodeType": "YulIdentifier", + "src": "5274:18:66" + }, + "nodeType": "YulFunctionCall", + "src": "5274:51:66" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "5264:6:66" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "5345:117:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "5360:16:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5374:2:66", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "5364:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5390:62:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5424:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5435:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5420:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "5420:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "5444:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_uint64", + "nodeType": "YulIdentifier", + "src": "5400:19:66" + }, + "nodeType": "YulFunctionCall", + "src": "5400:52:66" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "5390:6:66" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint8t_uint64", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "5043:9:66", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "5054:7:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "5066:6:66", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "5074:6:66", + "type": "" + } + ], + "src": "5001:468:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5536:51:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "5553:3:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5574:5:66" + } + ], + "functionName": { + "name": "cleanup_t_uint8", + "nodeType": "YulIdentifier", + "src": "5558:15:66" + }, + "nodeType": "YulFunctionCall", + "src": "5558:22:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5546:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "5546:35:66" + }, + "nodeType": "YulExpressionStatement", + "src": "5546:35:66" + } + ] + }, + "name": "abi_encode_t_uint8_to_t_uint8_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "5524:5:66", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "5531:3:66", + "type": "" + } + ], + "src": "5475:112:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5658:53:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "5675:3:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5698:5:66" + } + ], + "functionName": { + "name": "cleanup_t_bytes32", + "nodeType": "YulIdentifier", + "src": "5680:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "5680:24:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5668:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "5668:37:66" + }, + "nodeType": "YulExpressionStatement", + "src": "5668:37:66" + } + ] + }, + "name": "abi_encode_t_bytes32_to_t_bytes32_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "5646:5:66", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "5653:3:66", + "type": "" + } + ], + "src": "5593:118:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5775:40:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5786:22:66", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5802:5:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "5796:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "5796:12:66" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "5786:6:66" + } + ] + } + ] + }, + "name": "array_length_t_bytes_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "5758:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "5768:6:66", + "type": "" + } + ], + "src": "5717:98:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5916:73:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "5933:3:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "5938:6:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5926:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "5926:19:66" + }, + "nodeType": "YulExpressionStatement", + "src": "5926:19:66" + }, + { + "nodeType": "YulAssignment", + "src": "5954:29:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "5973:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5978:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5969:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "5969:14:66" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "5954:11:66" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "5888:3:66", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "5893:6:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "5904:11:66", + "type": "" + } + ], + "src": "5821:168:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6057:184:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "6067:10:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6076:1:66", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "6071:1:66", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6136:63:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ { - "assignments": [6985], - "declarations": [ - { - "constant": false, - "id": 6985, - "mutability": "mutable", - "name": "tokenAddress", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7047, - "src": "5626:20:34", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 6984, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5626:7:34", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 6989, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 6986, - "name": "_resourceIDToTokenContractAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8039, - "src": "5649:33:34", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", - "typeString": "mapping(bytes32 => address)" - } - }, - "id": 6988, - "indexExpression": { - "argumentTypes": null, - "id": 6987, - "name": "resourceID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6960, - "src": "5683:10:34", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5649:45:34", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5626:68:34" + "name": "dst", + "nodeType": "YulIdentifier", + "src": "6161:3:66" }, { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 6991, - "name": "_contractWhitelist", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8047, - "src": "5712:18:34", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 6993, - "indexExpression": { - "argumentTypes": null, - "id": 6992, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6985, - "src": "5731:12:34", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5712:32:34", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "70726f766964656420746f6b656e41646472657373206973206e6f742077686974656c6973746564", - "id": 6994, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5746:42:34", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_d6f36190bb0602e32e72016fc9d55735c428c14ee06e9999974578d6c009c7ad", - "typeString": "literal_string \"provided tokenAddress is not whitelisted\"" - }, - "value": "provided tokenAddress is not whitelisted" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_d6f36190bb0602e32e72016fc9d55735c428c14ee06e9999974578d6c009c7ad", - "typeString": "literal_string \"provided tokenAddress is not whitelisted\"" - } - ], - "id": 6990, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "5704:7:34", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 6995, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5704:85:34", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 6996, - "nodeType": "ExpressionStatement", - "src": "5704:85:34" - }, + "name": "i", + "nodeType": "YulIdentifier", + "src": "6166:1:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6157:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "6157:11:66" + }, + { + "arguments": [ { - "condition": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 6997, - "name": "_burnList", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8051, - "src": "5804:9:34", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 6999, - "indexExpression": { - "argumentTypes": null, - "id": 6998, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6985, - "src": "5814:12:34", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5804:23:34", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 7017, - "nodeType": "Block", - "src": "5902:82:34", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 7008, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6985, - "src": "5926:12:34", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 7009, - "name": "depositer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6966, - "src": "5940:9:34", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 7012, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -28, - "src": "5959:4:34", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Handler_$7269", - "typeString": "contract ERC20Handler" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_ERC20Handler_$7269", - "typeString": "contract ERC20Handler" - } - ], - "id": 7011, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5951:7:34", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 7010, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5951:7:34", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 7013, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5951:13:34", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 7014, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6978, - "src": "5966:6:34", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 7007, - "name": "lockERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5778, - "src": "5916:9:34", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,address,uint256)" - } - }, - "id": 7015, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5916:57:34", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 7016, - "nodeType": "ExpressionStatement", - "src": "5916:57:34" - } - ] + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "6180:3:66" }, - "id": 7018, - "nodeType": "IfStatement", - "src": "5800:184:34", - "trueBody": { - "id": 7006, - "nodeType": "Block", - "src": "5829:67:34", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 7001, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6985, - "src": "5853:12:34", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 7002, - "name": "depositer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6966, - "src": "5867:9:34", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 7003, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6978, - "src": "5878:6:34", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 7000, - "name": "burnERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5849, - "src": "5843:9:34", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256)" - } - }, - "id": 7004, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5843:42:34", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 7005, - "nodeType": "ExpressionStatement", - "src": "5843:42:34" - } - ] + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "6185:1:66" } - }, + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6176:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "6176:11:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "6170:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "6170:18:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6150:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "6150:39:66" + }, + "nodeType": "YulExpressionStatement", + "src": "6150:39:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "6097:1:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "6100:6:66" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "6094:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "6094:13:66" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "6108:19:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6110:15:66", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "6119:1:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6122:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6115:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "6115:10:66" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "6110:1:66" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "6090:3:66", + "statements": [] + }, + "src": "6086:113:66" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "6219:3:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "6224:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6215:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "6215:16:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6233:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6208:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "6208:27:66" + }, + "nodeType": "YulExpressionStatement", + "src": "6208:27:66" + } + ] + }, + "name": "copy_memory_to_memory_with_cleanup", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "6039:3:66", + "type": "" + }, + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "6044:3:66", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "6049:6:66", + "type": "" + } + ], + "src": "5995:246:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6295:54:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6305:38:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "6323:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6330:2:66", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6319:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "6319:14:66" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6339:2:66", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "6335:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "6335:7:66" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "6315:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "6315:28:66" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "6305:6:66" + } + ] + } + ] + }, + "name": "round_up_to_mul_of_32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "6278:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "result", + "nodeType": "YulTypedName", + "src": "6288:6:66", + "type": "" + } + ], + "src": "6247:102:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6445:283:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "6455:52:66", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "6501:5:66" + } + ], + "functionName": { + "name": "array_length_t_bytes_memory_ptr", + "nodeType": "YulIdentifier", + "src": "6469:31:66" + }, + "nodeType": "YulFunctionCall", + "src": "6469:38:66" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "6459:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "6516:77:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "6581:3:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "6586:6:66" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "6523:57:66" + }, + "nodeType": "YulFunctionCall", + "src": "6523:70:66" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "6516:3:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "6641:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6648:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6637:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "6637:16:66" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "6655:3:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "6660:6:66" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nodeType": "YulIdentifier", + "src": "6602:34:66" + }, + "nodeType": "YulFunctionCall", + "src": "6602:65:66" + }, + "nodeType": "YulExpressionStatement", + "src": "6602:65:66" + }, + { + "nodeType": "YulAssignment", + "src": "6676:46:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "6687:3:66" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "6714:6:66" + } + ], + "functionName": { + "name": "round_up_to_mul_of_32", + "nodeType": "YulIdentifier", + "src": "6692:21:66" + }, + "nodeType": "YulFunctionCall", + "src": "6692:29:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6683:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "6683:39:66" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "6676:3:66" + } + ] + } + ] + }, + "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "6426:5:66", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "6433:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "6441:3:66", + "type": "" + } + ], + "src": "6355:373:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6779:32:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6789:16:66", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "6800:5:66" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "6789:7:66" + } + ] + } + ] + }, + "name": "cleanup_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "6761:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "6771:7:66", + "type": "" + } + ], + "src": "6734:77:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6882:53:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "6899:3:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "6922:5:66" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "6904:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "6904:24:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6892:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "6892:37:66" + }, + "nodeType": "YulExpressionStatement", + "src": "6892:37:66" + } + ] + }, + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "6870:5:66", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "6877:3:66", + "type": "" + } + ], + "src": "6817:118:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7217:681:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7227:27:66", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7239:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7250:3:66", + "type": "", + "value": "224" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7235:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "7235:19:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7227:4:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "7308:6:66" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7321:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7332:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7317:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "7317:17:66" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "7264:43:66" + }, + "nodeType": "YulFunctionCall", + "src": "7264:71:66" + }, + "nodeType": "YulExpressionStatement", + "src": "7264:71:66" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "7385:6:66" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7398:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7409:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7394:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "7394:18:66" + } + ], + "functionName": { + "name": "abi_encode_t_uint8_to_t_uint8_fromStack", + "nodeType": "YulIdentifier", + "src": "7345:39:66" + }, + "nodeType": "YulFunctionCall", + "src": "7345:68:66" + }, + "nodeType": "YulExpressionStatement", + "src": "7345:68:66" + }, + { + "expression": { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "7463:6:66" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7476:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7487:2:66", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7472:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "7472:18:66" + } + ], + "functionName": { + "name": "abi_encode_t_uint8_to_t_uint8_fromStack", + "nodeType": "YulIdentifier", + "src": "7423:39:66" + }, + "nodeType": "YulFunctionCall", + "src": "7423:68:66" + }, + "nodeType": "YulExpressionStatement", + "src": "7423:68:66" + }, + { + "expression": { + "arguments": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "7545:6:66" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7558:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7569:2:66", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7554:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "7554:18:66" + } + ], + "functionName": { + "name": "abi_encode_t_bytes32_to_t_bytes32_fromStack", + "nodeType": "YulIdentifier", + "src": "7501:43:66" + }, + "nodeType": "YulFunctionCall", + "src": "7501:72:66" + }, + "nodeType": "YulExpressionStatement", + "src": "7501:72:66" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7594:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7605:3:66", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7590:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "7590:19:66" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7615:4:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7621:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "7611:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "7611:20:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7583:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "7583:49:66" + }, + "nodeType": "YulExpressionStatement", + "src": "7583:49:66" + }, + { + "nodeType": "YulAssignment", + "src": "7641:84:66", + "value": { + "arguments": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "7711:6:66" + }, + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7720:4:66" + } + ], + "functionName": { + "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "7649:61:66" + }, + "nodeType": "YulFunctionCall", + "src": "7649:76:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7641:4:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "7779:6:66" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7792:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7803:3:66", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7788:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "7788:19:66" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "7735:43:66" + }, + "nodeType": "YulFunctionCall", + "src": "7735:73:66" + }, + "nodeType": "YulExpressionStatement", + "src": "7735:73:66" + }, + { + "expression": { + "arguments": [ + { + "name": "value6", + "nodeType": "YulIdentifier", + "src": "7862:6:66" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7875:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7886:3:66", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7871:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "7871:19:66" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "7818:43:66" + }, + "nodeType": "YulFunctionCall", + "src": "7818:73:66" + }, + "nodeType": "YulExpressionStatement", + "src": "7818:73:66" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_uint8_t_uint8_t_bytes32_t_bytes_memory_ptr_t_address_t_uint256__to_t_address_t_uint8_t_uint8_t_bytes32_t_bytes_memory_ptr_t_address_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "7141:9:66", + "type": "" + }, + { + "name": "value6", + "nodeType": "YulTypedName", + "src": "7153:6:66", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "7161:6:66", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "7169:6:66", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "7177:6:66", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "7185:6:66", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "7193:6:66", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "7201:6:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "7212:4:66", + "type": "" + } + ], + "src": "6941:957:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7946:48:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7956:32:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "7981:5:66" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "7974:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "7974:13:66" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "7967:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "7967:21:66" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "7956:7:66" + } + ] + } + ] + }, + "name": "cleanup_t_bool", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "7928:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "7938:7:66", + "type": "" + } + ], + "src": "7904:90:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8059:50:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "8076:3:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8096:5:66" + } + ], + "functionName": { + "name": "cleanup_t_bool", + "nodeType": "YulIdentifier", + "src": "8081:14:66" + }, + "nodeType": "YulFunctionCall", + "src": "8081:21:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8069:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "8069:34:66" + }, + "nodeType": "YulExpressionStatement", + "src": "8069:34:66" + } + ] + }, + "name": "abi_encode_t_bool_to_t_bool_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "8047:5:66", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "8054:3:66", + "type": "" + } + ], + "src": "8000:109:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8207:118:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8217:26:66", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8229:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8240:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8225:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "8225:18:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "8217:4:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "8291:6:66" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8304:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8315:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8300:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "8300:17:66" + } + ], + "functionName": { + "name": "abi_encode_t_bool_to_t_bool_fromStack", + "nodeType": "YulIdentifier", + "src": "8253:37:66" + }, + "nodeType": "YulFunctionCall", + "src": "8253:65:66" + }, + "nodeType": "YulExpressionStatement", + "src": "8253:65:66" + } + ] + }, + "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "8179:9:66", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "8191:6:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "8202:4:66", + "type": "" + } + ], + "src": "8115:210:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8374:79:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "8431:16:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8440:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8443:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "8433:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "8433:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "8433:12:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8397:5:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8422:5:66" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "8404:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "8404:24:66" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "8394:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "8394:35:66" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "8387:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "8387:43:66" + }, + "nodeType": "YulIf", + "src": "8384:63:66" + } + ] + }, + "name": "validator_revert_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "8367:5:66", + "type": "" + } + ], + "src": "8331:122:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8511:87:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8521:29:66", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "8543:6:66" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "8530:12:66" + }, + "nodeType": "YulFunctionCall", + "src": "8530:20:66" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8521:5:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8586:5:66" + } + ], + "functionName": { + "name": "validator_revert_t_uint256", + "nodeType": "YulIdentifier", + "src": "8559:26:66" + }, + "nodeType": "YulFunctionCall", + "src": "8559:33:66" + }, + "nodeType": "YulExpressionStatement", + "src": "8559:33:66" + } + ] + }, + "name": "abi_decode_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "8489:6:66", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "8497:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "8505:5:66", + "type": "" + } + ], + "src": "8459:139:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8704:519:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "8750:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "8752:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "8752:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "8752:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "8725:7:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8734:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "8721:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "8721:23:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8746:2:66", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "8717:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "8717:32:66" + }, + "nodeType": "YulIf", + "src": "8714:119:66" + }, + { + "nodeType": "YulBlock", + "src": "8843:117:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "8858:15:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8872:1:66", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "8862:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "8887:63:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8922:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "8933:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8918:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "8918:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "8942:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "8897:20:66" + }, + "nodeType": "YulFunctionCall", + "src": "8897:53:66" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "8887:6:66" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "8970:118:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "8985:16:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8999:2:66", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "8989:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "9015:63:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9050:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "9061:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9046:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "9046:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "9070:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "9025:20:66" + }, + "nodeType": "YulFunctionCall", + "src": "9025:53:66" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "9015:6:66" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "9098:118:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "9113:16:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9127:2:66", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "9117:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "9143:63:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9178:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "9189:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9174:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "9174:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "9198:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "9153:20:66" + }, + "nodeType": "YulFunctionCall", + "src": "9153:53:66" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "9143:6:66" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "8658:9:66", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "8669:7:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "8681:6:66", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "8689:6:66", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "8697:6:66", + "type": "" + } + ], + "src": "8604:619:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9312:391:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "9358:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "9360:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "9360:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "9360:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "9333:7:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9342:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "9329:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "9329:23:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9354:2:66", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "9325:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "9325:32:66" + }, + "nodeType": "YulIf", + "src": "9322:119:66" + }, + { + "nodeType": "YulBlock", + "src": "9451:117:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "9466:15:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9480:1:66", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "9470:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "9495:63:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9530:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "9541:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9526:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "9526:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "9550:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_bytes32", + "nodeType": "YulIdentifier", + "src": "9505:20:66" + }, + "nodeType": "YulFunctionCall", + "src": "9505:53:66" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "9495:6:66" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "9578:118:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "9593:16:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9607:2:66", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "9597:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "9623:63:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9658:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "9669:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9654:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "9654:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "9678:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "9633:20:66" + }, + "nodeType": "YulFunctionCall", + "src": "9633:53:66" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "9623:6:66" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "9274:9:66", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "9285:7:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "9297:6:66", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "9305:6:66", + "type": "" + } + ], + "src": "9229:474:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9789:388:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "9835:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "9837:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "9837:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "9837:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "9810:7:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9819:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "9806:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "9806:23:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9831:2:66", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "9802:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "9802:32:66" + }, + "nodeType": "YulIf", + "src": "9799:119:66" + }, + { + "nodeType": "YulBlock", + "src": "9928:116:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "9943:15:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9957:1:66", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "9947:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "9972:62:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10006:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "10017:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10002:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "10002:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "10026:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_uint64", + "nodeType": "YulIdentifier", + "src": "9982:19:66" + }, + "nodeType": "YulFunctionCall", + "src": "9982:52:66" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "9972:6:66" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "10054:116:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "10069:16:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10083:2:66", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "10073:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10099:61:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10132:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "10143:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10128:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "10128:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "10152:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_uint8", + "nodeType": "YulIdentifier", + "src": "10109:18:66" + }, + "nodeType": "YulFunctionCall", + "src": "10109:51:66" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "10099:6:66" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint64t_uint8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "9751:9:66", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "9762:7:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "9774:6:66", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "9782:6:66", + "type": "" + } + ], + "src": "9709:468:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10238:53:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "10255:3:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "10278:5:66" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "10260:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "10260:24:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10248:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "10248:37:66" + }, + "nodeType": "YulExpressionStatement", + "src": "10248:37:66" + } + ] + }, + "name": "abi_encode_t_address_to_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "10226:5:66", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "10233:3:66", + "type": "" + } + ], + "src": "10183:108:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10348:51:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "10365:3:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "10386:5:66" + } + ], + "functionName": { + "name": "cleanup_t_uint8", + "nodeType": "YulIdentifier", + "src": "10370:15:66" + }, + "nodeType": "YulFunctionCall", + "src": "10370:22:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10358:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "10358:35:66" + }, + "nodeType": "YulExpressionStatement", + "src": "10358:35:66" + } + ] + }, + "name": "abi_encode_t_uint8_to_t_uint8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "10336:5:66", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "10343:3:66", + "type": "" + } + ], + "src": "10297:102:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10460:53:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "10477:3:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "10500:5:66" + } + ], + "functionName": { + "name": "cleanup_t_bytes32", + "nodeType": "YulIdentifier", + "src": "10482:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "10482:24:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10470:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "10470:37:66" + }, + "nodeType": "YulExpressionStatement", + "src": "10470:37:66" + } + ] + }, + "name": "abi_encode_t_bytes32_to_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "10448:5:66", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "10455:3:66", + "type": "" + } + ], + "src": "10405:108:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10604:73:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "10621:3:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "10626:6:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10614:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "10614:19:66" + }, + "nodeType": "YulExpressionStatement", + "src": "10614:19:66" + }, + { + "nodeType": "YulAssignment", + "src": "10642:29:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "10661:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10666:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10657:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "10657:14:66" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "10642:11:66" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_bytes_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "10576:3:66", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "10581:6:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "10592:11:66", + "type": "" + } + ], + "src": "10519:158:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10763:273:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "10773:52:66", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "10819:5:66" + } + ], + "functionName": { + "name": "array_length_t_bytes_memory_ptr", + "nodeType": "YulIdentifier", + "src": "10787:31:66" + }, + "nodeType": "YulFunctionCall", + "src": "10787:38:66" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "10777:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10834:67:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "10889:3:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "10894:6:66" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_bytes_memory_ptr", + "nodeType": "YulIdentifier", + "src": "10841:47:66" + }, + "nodeType": "YulFunctionCall", + "src": "10841:60:66" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "10834:3:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "10949:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10956:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10945:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "10945:16:66" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "10963:3:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "10968:6:66" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nodeType": "YulIdentifier", + "src": "10910:34:66" + }, + "nodeType": "YulFunctionCall", + "src": "10910:65:66" + }, + "nodeType": "YulExpressionStatement", + "src": "10910:65:66" + }, + { + "nodeType": "YulAssignment", + "src": "10984:46:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "10995:3:66" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "11022:6:66" + } + ], + "functionName": { + "name": "round_up_to_mul_of_32", + "nodeType": "YulIdentifier", + "src": "11000:21:66" + }, + "nodeType": "YulFunctionCall", + "src": "11000:29:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10991:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "10991:39:66" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "10984:3:66" + } + ] + } + ] + }, + "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "10744:5:66", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "10751:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "10759:3:66", + "type": "" + } + ], + "src": "10683:353:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11097:53:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11114:3:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "11137:5:66" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "11119:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "11119:24:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11107:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "11107:37:66" + }, + "nodeType": "YulExpressionStatement", + "src": "11107:37:66" + } + ] + }, + "name": "abi_encode_t_uint256_to_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "11085:5:66", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "11092:3:66", + "type": "" + } + ], + "src": "11042:108:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11370:1433:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "11380:26:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11396:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11401:4:66", + "type": "", + "value": "0xe0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11392:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "11392:14:66" + }, + "variables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "11384:4:66", + "type": "" + } + ] + }, + { + "nodeType": "YulBlock", + "src": "11416:173:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "11460:43:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "11490:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11497:4:66", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11486:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "11486:16:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "11480:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "11480:23:66" + }, + "variables": [ + { + "name": "memberValue0", + "nodeType": "YulTypedName", + "src": "11464:12:66", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "memberValue0", + "nodeType": "YulIdentifier", + "src": "11550:12:66" + }, + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11568:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11573:4:66", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11564:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "11564:14:66" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address", + "nodeType": "YulIdentifier", + "src": "11516:33:66" + }, + "nodeType": "YulFunctionCall", + "src": "11516:63:66" + }, + "nodeType": "YulExpressionStatement", + "src": "11516:63:66" + } + ] + }, + { + "nodeType": "YulBlock", + "src": "11599:187:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "11661:43:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "11691:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11698:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11687:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "11687:16:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "11681:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "11681:23:66" + }, + "variables": [ + { + "name": "memberValue0", + "nodeType": "YulTypedName", + "src": "11665:12:66", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "memberValue0", + "nodeType": "YulIdentifier", + "src": "11747:12:66" + }, + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11765:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11770:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11761:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "11761:14:66" + } + ], + "functionName": { + "name": "abi_encode_t_uint8_to_t_uint8", + "nodeType": "YulIdentifier", + "src": "11717:29:66" + }, + "nodeType": "YulFunctionCall", + "src": "11717:59:66" + }, + "nodeType": "YulExpressionStatement", + "src": "11717:59:66" + } + ] + }, + { + "nodeType": "YulBlock", + "src": "11796:175:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "11846:43:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "11876:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11883:4:66", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11872:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "11872:16:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "11866:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "11866:23:66" + }, + "variables": [ + { + "name": "memberValue0", + "nodeType": "YulTypedName", + "src": "11850:12:66", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "memberValue0", + "nodeType": "YulIdentifier", + "src": "11932:12:66" + }, + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11950:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11955:4:66", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11946:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "11946:14:66" + } + ], + "functionName": { + "name": "abi_encode_t_uint8_to_t_uint8", + "nodeType": "YulIdentifier", + "src": "11902:29:66" + }, + "nodeType": "YulFunctionCall", + "src": "11902:59:66" + }, + "nodeType": "YulExpressionStatement", + "src": "11902:59:66" + } + ] + }, + { + "nodeType": "YulBlock", + "src": "11981:171:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "12023:43:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "12053:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12060:4:66", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12049:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "12049:16:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "12043:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "12043:23:66" + }, + "variables": [ + { + "name": "memberValue0", + "nodeType": "YulTypedName", + "src": "12027:12:66", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "memberValue0", + "nodeType": "YulIdentifier", + "src": "12113:12:66" + }, + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "12131:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12136:4:66", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12127:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "12127:14:66" + } + ], + "functionName": { + "name": "abi_encode_t_bytes32_to_t_bytes32", + "nodeType": "YulIdentifier", + "src": "12079:33:66" + }, + "nodeType": "YulFunctionCall", + "src": "12079:63:66" + }, + "nodeType": "YulExpressionStatement", + "src": "12079:63:66" + } + ] + }, + { + "nodeType": "YulBlock", + "src": "12162:257:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "12221:43:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "12251:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12258:4:66", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12247:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "12247:16:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "12241:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "12241:23:66" + }, + "variables": [ + { + "name": "memberValue0", + "nodeType": "YulTypedName", + "src": "12225:12:66", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "12289:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12294:4:66", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12285:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "12285:14:66" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "12305:4:66" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "12311:3:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "12301:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "12301:14:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12278:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "12278:38:66" + }, + "nodeType": "YulExpressionStatement", + "src": "12278:38:66" + }, + { + "nodeType": "YulAssignment", + "src": "12329:79:66", + "value": { + "arguments": [ + { + "name": "memberValue0", + "nodeType": "YulIdentifier", + "src": "12389:12:66" + }, + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "12403:4:66" + } + ], + "functionName": { + "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr", + "nodeType": "YulIdentifier", + "src": "12337:51:66" + }, + "nodeType": "YulFunctionCall", + "src": "12337:71:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "12329:4:66" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "12429:170:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "12470:43:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "12500:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12507:4:66", + "type": "", + "value": "0xa0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12496:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "12496:16:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "12490:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "12490:23:66" + }, + "variables": [ + { + "name": "memberValue0", + "nodeType": "YulTypedName", + "src": "12474:12:66", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "memberValue0", + "nodeType": "YulIdentifier", + "src": "12560:12:66" + }, + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "12578:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12583:4:66", + "type": "", + "value": "0xa0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12574:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "12574:14:66" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address", + "nodeType": "YulIdentifier", + "src": "12526:33:66" + }, + "nodeType": "YulFunctionCall", + "src": "12526:63:66" + }, + "nodeType": "YulExpressionStatement", + "src": "12526:63:66" + } + ] + }, + { + "nodeType": "YulBlock", + "src": "12609:167:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "12647:43:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "12677:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12684:4:66", + "type": "", + "value": "0xc0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12673:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "12673:16:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "12667:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "12667:23:66" + }, + "variables": [ + { + "name": "memberValue0", + "nodeType": "YulTypedName", + "src": "12651:12:66", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "memberValue0", + "nodeType": "YulIdentifier", + "src": "12737:12:66" + }, + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "12755:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12760:4:66", + "type": "", + "value": "0xc0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12751:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "12751:14:66" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256", + "nodeType": "YulIdentifier", + "src": "12703:33:66" + }, + "nodeType": "YulFunctionCall", + "src": "12703:63:66" + }, + "nodeType": "YulExpressionStatement", + "src": "12703:63:66" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "12786:11:66", + "value": { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "12793:4:66" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "12786:3:66" + } + ] + } + ] + }, + "name": "abi_encode_t_struct$_DepositRecord_$2056_memory_ptr_to_t_struct$_DepositRecord_$2056_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "11349:5:66", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "11356:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "11365:3:66", + "type": "" + } + ], + "src": "11234:1569:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12969:237:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "12979:26:66", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12991:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13002:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12987:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "12987:18:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "12979:4:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13026:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13037:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13022:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "13022:17:66" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "13045:4:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13051:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "13041:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "13041:20:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13015:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "13015:47:66" + }, + "nodeType": "YulExpressionStatement", + "src": "13015:47:66" + }, + { + "nodeType": "YulAssignment", + "src": "13071:128:66", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "13185:6:66" + }, + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "13194:4:66" + } + ], + "functionName": { + "name": "abi_encode_t_struct$_DepositRecord_$2056_memory_ptr_to_t_struct$_DepositRecord_$2056_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "13079:105:66" + }, + "nodeType": "YulFunctionCall", + "src": "13079:120:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "13071:4:66" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_struct$_DepositRecord_$2056_memory_ptr__to_t_struct$_DepositRecord_$2056_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "12941:9:66", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "12953:6:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "12964:4:66", + "type": "" + } + ], + "src": "12809:397:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13310:124:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "13320:26:66", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13332:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13343:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13328:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "13328:18:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "13320:4:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "13400:6:66" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13413:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13424:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13409:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "13409:17:66" + } + ], + "functionName": { + "name": "abi_encode_t_bytes32_to_t_bytes32_fromStack", + "nodeType": "YulIdentifier", + "src": "13356:43:66" + }, + "nodeType": "YulFunctionCall", + "src": "13356:71:66" + }, + "nodeType": "YulExpressionStatement", + "src": "13356:71:66" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "13282:9:66", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "13294:6:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "13305:4:66", + "type": "" + } + ], + "src": "13212:222:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13542:570:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "13588:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "13590:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "13590:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "13590:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "13563:7:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13572:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "13559:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "13559:23:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13584:2:66", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "13555:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "13555:32:66" + }, + "nodeType": "YulIf", + "src": "13552:119:66" + }, + { + "nodeType": "YulBlock", + "src": "13681:117:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "13696:15:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13710:1:66", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "13700:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "13725:63:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13760:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "13771:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13756:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "13756:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "13780:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_bytes32", + "nodeType": "YulIdentifier", + "src": "13735:20:66" + }, + "nodeType": "YulFunctionCall", + "src": "13735:53:66" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "13725:6:66" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "13808:297:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "13823:46:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13854:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13865:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13850:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "13850:18:66" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "13837:12:66" + }, + "nodeType": "YulFunctionCall", + "src": "13837:32:66" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "13827:6:66", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13916:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "13918:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "13918:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "13918:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "13888:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13896:18:66", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "13885:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "13885:30:66" + }, + "nodeType": "YulIf", + "src": "13882:117:66" + }, + { + "nodeType": "YulAssignment", + "src": "14013:82:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14067:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "14078:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14063:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "14063:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "14087:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_bytes_calldata_ptr", + "nodeType": "YulIdentifier", + "src": "14031:31:66" + }, + "nodeType": "YulFunctionCall", + "src": "14031:64:66" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "14013:6:66" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "14021:6:66" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_bytes_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "13496:9:66", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "13507:7:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "13519:6:66", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "13527:6:66", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "13535:6:66", + "type": "" + } + ], + "src": "13440:672:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14214:73:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14231:3:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "14236:6:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14224:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "14224:19:66" + }, + "nodeType": "YulExpressionStatement", + "src": "14224:19:66" + }, + { + "nodeType": "YulAssignment", + "src": "14252:29:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14271:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14276:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14267:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "14267:14:66" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "14252:11:66" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "14186:3:66", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "14191:6:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "14202:11:66", + "type": "" + } + ], + "src": "14118:169:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14399:121:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "14421:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14429:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14417:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "14417:14:66" + }, + { + "hexValue": "70726f766964656420746f6b656e41646472657373206973206e6f7420776869", + "kind": "string", + "nodeType": "YulLiteral", + "src": "14433:34:66", + "type": "", + "value": "provided tokenAddress is not whi" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14410:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "14410:58:66" + }, + "nodeType": "YulExpressionStatement", + "src": "14410:58:66" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "14489:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14497:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14485:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "14485:15:66" + }, + { + "hexValue": "74656c6973746564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "14502:10:66", + "type": "", + "value": "telisted" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14478:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "14478:35:66" + }, + "nodeType": "YulExpressionStatement", + "src": "14478:35:66" + } + ] + }, + "name": "store_literal_in_memory_d6f36190bb0602e32e72016fc9d55735c428c14ee06e9999974578d6c009c7ad", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "14391:6:66", + "type": "" + } + ], + "src": "14293:227:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14672:220:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "14682:74:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14748:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14753:2:66", + "type": "", + "value": "40" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "14689:58:66" + }, + "nodeType": "YulFunctionCall", + "src": "14689:67:66" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14682:3:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14854:3:66" + } + ], + "functionName": { + "name": "store_literal_in_memory_d6f36190bb0602e32e72016fc9d55735c428c14ee06e9999974578d6c009c7ad", + "nodeType": "YulIdentifier", + "src": "14765:88:66" + }, + "nodeType": "YulFunctionCall", + "src": "14765:93:66" + }, + "nodeType": "YulExpressionStatement", + "src": "14765:93:66" + }, + { + "nodeType": "YulAssignment", + "src": "14867:19:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14878:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14883:2:66", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14874:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "14874:12:66" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "14867:3:66" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_d6f36190bb0602e32e72016fc9d55735c428c14ee06e9999974578d6c009c7ad_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "14660:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "14668:3:66", + "type": "" + } + ], + "src": "14526:366:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15069:248:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "15079:26:66", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15091:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15102:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15087:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "15087:18:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "15079:4:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15126:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15137:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15122:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "15122:17:66" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "15145:4:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15151:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "15141:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "15141:20:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "15115:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "15115:47:66" + }, + "nodeType": "YulExpressionStatement", + "src": "15115:47:66" + }, + { + "nodeType": "YulAssignment", + "src": "15171:139:66", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "15305:4:66" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_d6f36190bb0602e32e72016fc9d55735c428c14ee06e9999974578d6c009c7ad_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "15179:124:66" + }, + "nodeType": "YulFunctionCall", + "src": "15179:131:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "15171:4:66" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_d6f36190bb0602e32e72016fc9d55735c428c14ee06e9999974578d6c009c7ad__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "15049:9:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "15064:4:66", + "type": "" + } + ], + "src": "14898:419:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15351:152:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15368:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15371:77:66", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "15361:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "15361:88:66" + }, + "nodeType": "YulExpressionStatement", + "src": "15361:88:66" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15465:1:66", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15468:4:66", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "15458:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "15458:15:66" + }, + "nodeType": "YulExpressionStatement", + "src": "15458:15:66" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15489:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15492:4:66", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "15482:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "15482:15:66" + }, + "nodeType": "YulExpressionStatement", + "src": "15482:15:66" + } + ] + }, + "name": "panic_error_0x41", + "nodeType": "YulFunctionDefinition", + "src": "15323:180:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15537:152:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15554:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15557:77:66", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "15547:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "15547:88:66" + }, + "nodeType": "YulExpressionStatement", + "src": "15547:88:66" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15651:1:66", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15654:4:66", + "type": "", + "value": "0x22" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "15644:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "15644:15:66" + }, + "nodeType": "YulExpressionStatement", + "src": "15644:15:66" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15675:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15678:4:66", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "15668:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "15668:15:66" + }, + "nodeType": "YulExpressionStatement", + "src": "15668:15:66" + } + ] + }, + "name": "panic_error_0x22", + "nodeType": "YulFunctionDefinition", + "src": "15509:180:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15746:269:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "15756:22:66", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "15770:4:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15776:1:66", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "15766:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "15766:12:66" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "15756:6:66" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "15787:38:66", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "15817:4:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15823:1:66", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "15813:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "15813:12:66" + }, + "variables": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulTypedName", + "src": "15791:18:66", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15864:51:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "15878:27:66", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "15892:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15900:4:66", + "type": "", + "value": "0x7f" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "15888:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "15888:17:66" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "15878:6:66" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "15844:18:66" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "15837:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "15837:26:66" + }, + "nodeType": "YulIf", + "src": "15834:81:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15967:42:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x22", + "nodeType": "YulIdentifier", + "src": "15981:16:66" + }, + "nodeType": "YulFunctionCall", + "src": "15981:18:66" + }, + "nodeType": "YulExpressionStatement", + "src": "15981:18:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "15931:18:66" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "15954:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15962:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "15951:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "15951:14:66" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "15928:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "15928:38:66" + }, + "nodeType": "YulIf", + "src": "15925:84:66" + } + ] + }, + "name": "extract_byte_array_length", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nodeType": "YulTypedName", + "src": "15730:4:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "15739:6:66", + "type": "" + } + ], + "src": "15695:320:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16074:87:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "16084:11:66", + "value": { + "name": "ptr", + "nodeType": "YulIdentifier", + "src": "16092:3:66" + }, + "variableNames": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "16084:4:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16112:1:66", + "type": "", + "value": "0" + }, + { + "name": "ptr", + "nodeType": "YulIdentifier", + "src": "16115:3:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16105:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "16105:14:66" + }, + "nodeType": "YulExpressionStatement", + "src": "16105:14:66" + }, + { + "nodeType": "YulAssignment", + "src": "16128:26:66", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16146:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16149:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "keccak256", + "nodeType": "YulIdentifier", + "src": "16136:9:66" + }, + "nodeType": "YulFunctionCall", + "src": "16136:18:66" + }, + "variableNames": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "16128:4:66" + } + ] + } + ] + }, + "name": "array_dataslot_t_bytes_storage", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "ptr", + "nodeType": "YulTypedName", + "src": "16061:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "data", + "nodeType": "YulTypedName", + "src": "16069:4:66", + "type": "" + } + ], + "src": "16021:140:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16211:49:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "16221:33:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "16239:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16246:2:66", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16235:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "16235:14:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16251:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "16231:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "16231:23:66" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "16221:6:66" + } + ] + } + ] + }, + "name": "divide_by_32_ceil", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "16194:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "result", + "nodeType": "YulTypedName", + "src": "16204:6:66", + "type": "" + } + ], + "src": "16167:93:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16319:54:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "16329:37:66", + "value": { + "arguments": [ + { + "name": "bits", + "nodeType": "YulIdentifier", + "src": "16354:4:66" + }, + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "16360:5:66" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "16350:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "16350:16:66" + }, + "variableNames": [ + { + "name": "newValue", + "nodeType": "YulIdentifier", + "src": "16329:8:66" + } + ] + } + ] + }, + "name": "shift_left_dynamic", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "bits", + "nodeType": "YulTypedName", + "src": "16294:4:66", + "type": "" + }, + { + "name": "value", + "nodeType": "YulTypedName", + "src": "16300:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "newValue", + "nodeType": "YulTypedName", + "src": "16310:8:66", + "type": "" + } + ], + "src": "16266:107:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16455:317:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "16465:35:66", + "value": { + "arguments": [ + { + "name": "shiftBytes", + "nodeType": "YulIdentifier", + "src": "16486:10:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16498:1:66", + "type": "", + "value": "8" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "16482:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "16482:18:66" + }, + "variables": [ + { + "name": "shiftBits", + "nodeType": "YulTypedName", + "src": "16469:9:66", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "16509:109:66", + "value": { + "arguments": [ + { + "name": "shiftBits", + "nodeType": "YulIdentifier", + "src": "16540:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16551:66:66", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "shift_left_dynamic", + "nodeType": "YulIdentifier", + "src": "16521:18:66" + }, + "nodeType": "YulFunctionCall", + "src": "16521:97:66" + }, + "variables": [ + { + "name": "mask", + "nodeType": "YulTypedName", + "src": "16513:4:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "16627:51:66", + "value": { + "arguments": [ + { + "name": "shiftBits", + "nodeType": "YulIdentifier", + "src": "16658:9:66" + }, + { + "name": "toInsert", + "nodeType": "YulIdentifier", + "src": "16669:8:66" + } + ], + "functionName": { + "name": "shift_left_dynamic", + "nodeType": "YulIdentifier", + "src": "16639:18:66" + }, + "nodeType": "YulFunctionCall", + "src": "16639:39:66" + }, + "variableNames": [ + { + "name": "toInsert", + "nodeType": "YulIdentifier", + "src": "16627:8:66" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "16687:30:66", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "16700:5:66" + }, + { + "arguments": [ + { + "name": "mask", + "nodeType": "YulIdentifier", + "src": "16711:4:66" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "16707:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "16707:9:66" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "16696:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "16696:21:66" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "16687:5:66" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "16726:40:66", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "16739:5:66" + }, + { + "arguments": [ + { + "name": "toInsert", + "nodeType": "YulIdentifier", + "src": "16750:8:66" + }, + { + "name": "mask", + "nodeType": "YulIdentifier", + "src": "16760:4:66" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "16746:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "16746:19:66" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "16736:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "16736:30:66" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "16726:6:66" + } + ] + } + ] + }, + "name": "update_byte_slice_dynamic32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "16416:5:66", + "type": "" + }, + { + "name": "shiftBytes", + "nodeType": "YulTypedName", + "src": "16423:10:66", + "type": "" + }, + { + "name": "toInsert", + "nodeType": "YulTypedName", + "src": "16435:8:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "result", + "nodeType": "YulTypedName", + "src": "16448:6:66", + "type": "" + } + ], + "src": "16379:393:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16810:28:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "16820:12:66", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "16827:5:66" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "16820:3:66" + } + ] + } + ] + }, + "name": "identity", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "16796:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nodeType": "YulTypedName", + "src": "16806:3:66", + "type": "" + } + ], + "src": "16778:60:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16904:82:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "16914:66:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "16972:5:66" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "16954:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "16954:24:66" + } + ], + "functionName": { + "name": "identity", + "nodeType": "YulIdentifier", + "src": "16945:8:66" + }, + "nodeType": "YulFunctionCall", + "src": "16945:34:66" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "16927:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "16927:53:66" + }, + "variableNames": [ + { + "name": "converted", + "nodeType": "YulIdentifier", + "src": "16914:9:66" + } + ] + } + ] + }, + "name": "convert_t_uint256_to_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "16884:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "converted", + "nodeType": "YulTypedName", + "src": "16894:9:66", + "type": "" + } + ], + "src": "16844:142:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17039:28:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "17049:12:66", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "17056:5:66" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "17049:3:66" + } + ] + } + ] + }, + "name": "prepare_store_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "17025:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nodeType": "YulTypedName", + "src": "17035:3:66", + "type": "" + } + ], + "src": "16992:75:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17149:193:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "17159:63:66", + "value": { + "arguments": [ + { + "name": "value_0", + "nodeType": "YulIdentifier", + "src": "17214:7:66" + } + ], + "functionName": { + "name": "convert_t_uint256_to_t_uint256", + "nodeType": "YulIdentifier", + "src": "17183:30:66" + }, + "nodeType": "YulFunctionCall", + "src": "17183:39:66" + }, + "variables": [ + { + "name": "convertedValue_0", + "nodeType": "YulTypedName", + "src": "17163:16:66", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "17238:4:66" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "17278:4:66" + } + ], + "functionName": { + "name": "sload", + "nodeType": "YulIdentifier", + "src": "17272:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "17272:11:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "17285:6:66" + }, + { + "arguments": [ + { + "name": "convertedValue_0", + "nodeType": "YulIdentifier", + "src": "17317:16:66" + } + ], + "functionName": { + "name": "prepare_store_t_uint256", + "nodeType": "YulIdentifier", + "src": "17293:23:66" + }, + "nodeType": "YulFunctionCall", + "src": "17293:41:66" + } + ], + "functionName": { + "name": "update_byte_slice_dynamic32", + "nodeType": "YulIdentifier", + "src": "17244:27:66" + }, + "nodeType": "YulFunctionCall", + "src": "17244:91:66" + } + ], + "functionName": { + "name": "sstore", + "nodeType": "YulIdentifier", + "src": "17231:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "17231:105:66" + }, + "nodeType": "YulExpressionStatement", + "src": "17231:105:66" + } + ] + }, + "name": "update_storage_value_t_uint256_to_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "slot", + "nodeType": "YulTypedName", + "src": "17126:4:66", + "type": "" + }, + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "17132:6:66", + "type": "" + }, + { + "name": "value_0", + "nodeType": "YulTypedName", + "src": "17140:7:66", + "type": "" + } + ], + "src": "17073:269:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17397:24:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "17407:8:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17414:1:66", + "type": "", + "value": "0" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "17407:3:66" + } + ] + } + ] + }, + "name": "zero_value_for_split_t_uint256", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "ret", + "nodeType": "YulTypedName", + "src": "17393:3:66", + "type": "" + } + ], + "src": "17348:73:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17480:136:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "17490:46:66", + "value": { + "arguments": [], + "functionName": { + "name": "zero_value_for_split_t_uint256", + "nodeType": "YulIdentifier", + "src": "17504:30:66" + }, + "nodeType": "YulFunctionCall", + "src": "17504:32:66" + }, + "variables": [ + { + "name": "zero_0", + "nodeType": "YulTypedName", + "src": "17494:6:66", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "17589:4:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "17595:6:66" + }, + { + "name": "zero_0", + "nodeType": "YulIdentifier", + "src": "17603:6:66" + } + ], + "functionName": { + "name": "update_storage_value_t_uint256_to_t_uint256", + "nodeType": "YulIdentifier", + "src": "17545:43:66" + }, + "nodeType": "YulFunctionCall", + "src": "17545:65:66" + }, + "nodeType": "YulExpressionStatement", + "src": "17545:65:66" + } + ] + }, + "name": "storage_set_to_zero_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "slot", + "nodeType": "YulTypedName", + "src": "17466:4:66", + "type": "" + }, + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "17472:6:66", + "type": "" + } + ], + "src": "17427:189:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17672:136:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "17739:63:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "start", + "nodeType": "YulIdentifier", + "src": "17783:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17790:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "storage_set_to_zero_t_uint256", + "nodeType": "YulIdentifier", + "src": "17753:29:66" + }, + "nodeType": "YulFunctionCall", + "src": "17753:39:66" + }, + "nodeType": "YulExpressionStatement", + "src": "17753:39:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "start", + "nodeType": "YulIdentifier", + "src": "17692:5:66" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "17699:3:66" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "17689:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "17689:14:66" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "17704:26:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "17706:22:66", + "value": { + "arguments": [ + { + "name": "start", + "nodeType": "YulIdentifier", + "src": "17719:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17726:1:66", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17715:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "17715:13:66" + }, + "variableNames": [ + { + "name": "start", + "nodeType": "YulIdentifier", + "src": "17706:5:66" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "17686:2:66", + "statements": [] + }, + "src": "17682:120:66" + } + ] + }, + "name": "clear_storage_range_t_bytes1", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "start", + "nodeType": "YulTypedName", + "src": "17660:5:66", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "17667:3:66", + "type": "" + } + ], + "src": "17622:186:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17892:463:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "17918:430:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "17932:53:66", + "value": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "17979:5:66" + } + ], + "functionName": { + "name": "array_dataslot_t_bytes_storage", + "nodeType": "YulIdentifier", + "src": "17948:30:66" + }, + "nodeType": "YulFunctionCall", + "src": "17948:37:66" + }, + "variables": [ + { + "name": "dataArea", + "nodeType": "YulTypedName", + "src": "17936:8:66", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "17998:63:66", + "value": { + "arguments": [ + { + "name": "dataArea", + "nodeType": "YulIdentifier", + "src": "18021:8:66" + }, + { + "arguments": [ { - "expression": { - "argumentTypes": null, - "id": 7039, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 7019, - "name": "_depositRecords", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6846, - "src": "5994:15:34", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint8_$_t_mapping$_t_uint64_$_t_struct$_DepositRecord_$6840_storage_$_$", - "typeString": "mapping(uint8 => mapping(uint64 => struct ERC20Handler.DepositRecord storage ref))" - } - }, - "id": 7022, - "indexExpression": { - "argumentTypes": null, - "id": 7020, - "name": "destinationChainID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6962, - "src": "6010:18:34", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5994:35:34", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_DepositRecord_$6840_storage_$", - "typeString": "mapping(uint64 => struct ERC20Handler.DepositRecord storage ref)" - } - }, - "id": 7023, - "indexExpression": { - "argumentTypes": null, - "id": 7021, - "name": "depositNonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6964, - "src": "6030:12:34", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "5994:49:34", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DepositRecord_$6840_storage", - "typeString": "struct ERC20Handler.DepositRecord storage ref" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 7025, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6985, - "src": "6073:12:34", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 7028, - "name": "lenRecipientAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6981, - "src": "6105:19:34", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 7027, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "6099:5:34", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint8_$", - "typeString": "type(uint8)" - }, - "typeName": { - "id": 7026, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "6099:5:34", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 7029, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6099:26:34", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "id": 7030, - "name": "destinationChainID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6962, - "src": "6139:18:34", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "id": 7031, - "name": "resourceID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6960, - "src": "6171:10:34", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 7032, - "name": "recipientAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6975, - "src": "6195:16:34", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 7033, - "name": "depositer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6966, - "src": "6225:9:34", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 7035, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6985, - "src": "6262:12:34", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 7036, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6978, - "src": "6276:6:34", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 7034, - "name": "toDestBalance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7207, - "src": "6248:13:34", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (address,uint256) returns (uint256)" - } - }, - "id": 7037, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6248:35:34", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 7024, - "name": "DepositRecord", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6840, - "src": "6046:13:34", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_DepositRecord_$6840_storage_ptr_$", - "typeString": "type(struct ERC20Handler.DepositRecord storage pointer)" - } - }, - "id": 7038, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "structConstructorCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6046:247:34", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_DepositRecord_$6840_memory_ptr", - "typeString": "struct ERC20Handler.DepositRecord memory" - } - }, - "src": "5994:299:34", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DepositRecord_$6840_storage", - "typeString": "struct ERC20Handler.DepositRecord storage ref" - } - }, - "id": 7040, - "nodeType": "ExpressionStatement", - "src": "5994:299:34" - }, + "name": "startIndex", + "nodeType": "YulIdentifier", + "src": "18049:10:66" + } + ], + "functionName": { + "name": "divide_by_32_ceil", + "nodeType": "YulIdentifier", + "src": "18031:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "18031:29:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18017:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "18017:44:66" + }, + "variables": [ + { + "name": "deleteStart", + "nodeType": "YulTypedName", + "src": "18002:11:66", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18218:27:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "18220:23:66", + "value": { + "name": "dataArea", + "nodeType": "YulIdentifier", + "src": "18235:8:66" + }, + "variableNames": [ { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 7042, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6985, - "src": "6319:12:34", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 7043, - "name": "depositer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6966, - "src": "6333:9:34", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 7044, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6978, - "src": "6344:6:34", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 7041, - "name": "Withdrawn", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6862, - "src": "6309:9:34", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256)" - } - }, - "id": 7045, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6309:42:34", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 7046, - "nodeType": "EmitStatement", - "src": "6304:47:34" + "name": "deleteStart", + "nodeType": "YulIdentifier", + "src": "18220:11:66" } - ] + ] + } + ] }, - "documentation": { - "id": 6958, - "nodeType": "StructuredDocumentation", - "src": "3845:950:34", - "text": "@notice A deposit is initiatied by making a deposit in the Bridge contract.\n@param destinationChainID Chain ID of chain tokens are expected to be bridged to.\n@param depositNonce This value is generated as an ID by the Bridge contract.\n@param depositer Address of account making the deposit in the Bridge contract.\n@param data Consists of: {resourceID}, {amount}, {lenRecipientAddress}, and {recipientAddress}\nall padded to 32 bytes.\n@notice Data passed into the function should be constructed as follows:\namount uint256 bytes 0 - 32\nrecipientAddress length uint256 bytes 32 - 64\nrecipientAddress bytes bytes 64 - END\n@dev Depending if the corresponding {tokenAddress} for the parsed {resourceID} is\nmarked true in {_burnList}, deposited tokens will be burned, if not, they will be locked." - }, - "functionSelector": "38995da9", - "id": 7048, - "implemented": true, - "kind": "function", - "modifiers": [ + "condition": { + "arguments": [ { - "arguments": null, - "id": 6972, - "modifierName": { - "argumentTypes": null, - "id": 6971, - "name": "onlyBridge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8062, - "src": "4993:10:34", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "4993:10:34" + "name": "startIndex", + "nodeType": "YulIdentifier", + "src": "18202:10:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18214:2:66", + "type": "", + "value": "32" } - ], - "name": "deposit", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 6970, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "4984:8:34" - }, - "parameters": { - "id": 6969, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 6960, - "mutability": "mutable", - "name": "resourceID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7048, - "src": "4826:18:34", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 6959, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4826:7:34", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 6962, - "mutability": "mutable", - "name": "destinationChainID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7048, - "src": "4854:26:34", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 6961, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "4854:5:34", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 6964, - "mutability": "mutable", - "name": "depositNonce", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7048, - "src": "4890:20:34", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 6963, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "4890:6:34", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "value": null, - "visibility": "internal" - }, + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "18199:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "18199:18:66" + }, + "nodeType": "YulIf", + "src": "18196:49:66" + }, + { + "expression": { + "arguments": [ + { + "name": "deleteStart", + "nodeType": "YulIdentifier", + "src": "18287:11:66" + }, + { + "arguments": [ { - "constant": false, - "id": 6966, - "mutability": "mutable", - "name": "depositer", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7048, - "src": "4920:17:34", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 6965, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4920:7:34", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" + "name": "dataArea", + "nodeType": "YulIdentifier", + "src": "18304:8:66" }, { - "constant": false, - "id": 6968, - "mutability": "mutable", - "name": "data", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7048, - "src": "4947:21:34", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 6967, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "4947:5:34", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" + "arguments": [ + { + "name": "len", + "nodeType": "YulIdentifier", + "src": "18332:3:66" + } + ], + "functionName": { + "name": "divide_by_32_ceil", + "nodeType": "YulIdentifier", + "src": "18314:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "18314:22:66" } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18300:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "18300:37:66" + } + ], + "functionName": { + "name": "clear_storage_range_t_bytes1", + "nodeType": "YulIdentifier", + "src": "18258:28:66" + }, + "nodeType": "YulFunctionCall", + "src": "18258:80:66" + }, + "nodeType": "YulExpressionStatement", + "src": "18258:80:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "len", + "nodeType": "YulIdentifier", + "src": "17909:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17914:2:66", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "17906:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "17906:11:66" + }, + "nodeType": "YulIf", + "src": "17903:445:66" + } + ] + }, + "name": "clean_up_bytearray_end_slots_t_bytes_storage", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "17868:5:66", + "type": "" + }, + { + "name": "len", + "nodeType": "YulTypedName", + "src": "17875:3:66", + "type": "" + }, + { + "name": "startIndex", + "nodeType": "YulTypedName", + "src": "17880:10:66", + "type": "" + } + ], + "src": "17814:541:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18424:54:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "18434:37:66", + "value": { + "arguments": [ + { + "name": "bits", + "nodeType": "YulIdentifier", + "src": "18459:4:66" + }, + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "18465:5:66" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "18455:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "18455:16:66" + }, + "variableNames": [ + { + "name": "newValue", + "nodeType": "YulIdentifier", + "src": "18434:8:66" + } + ] + } + ] + }, + "name": "shift_right_unsigned_dynamic", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "bits", + "nodeType": "YulTypedName", + "src": "18399:4:66", + "type": "" + }, + { + "name": "value", + "nodeType": "YulTypedName", + "src": "18405:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "newValue", + "nodeType": "YulTypedName", + "src": "18415:8:66", + "type": "" + } + ], + "src": "18361:117:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18535:118:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "18545:68:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18594:1:66", + "type": "", + "value": "8" + }, + { + "name": "bytes", + "nodeType": "YulIdentifier", + "src": "18597:5:66" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "18590:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "18590:13:66" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18609:1:66", + "type": "", + "value": "0" + } ], - "src": "4816:158:34" + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "18605:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "18605:6:66" + } + ], + "functionName": { + "name": "shift_right_unsigned_dynamic", + "nodeType": "YulIdentifier", + "src": "18561:28:66" + }, + "nodeType": "YulFunctionCall", + "src": "18561:51:66" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "18557:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "18557:56:66" + }, + "variables": [ + { + "name": "mask", + "nodeType": "YulTypedName", + "src": "18549:4:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "18622:25:66", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "18636:4:66" + }, + { + "name": "mask", + "nodeType": "YulIdentifier", + "src": "18642:4:66" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "18632:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "18632:15:66" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "18622:6:66" + } + ] + } + ] + }, + "name": "mask_bytes_dynamic", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nodeType": "YulTypedName", + "src": "18512:4:66", + "type": "" + }, + { + "name": "bytes", + "nodeType": "YulTypedName", + "src": "18518:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "result", + "nodeType": "YulTypedName", + "src": "18528:6:66", + "type": "" + } + ], + "src": "18484:169:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18739:214:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "18872:37:66", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "18899:4:66" + }, + { + "name": "len", + "nodeType": "YulIdentifier", + "src": "18905:3:66" + } + ], + "functionName": { + "name": "mask_bytes_dynamic", + "nodeType": "YulIdentifier", + "src": "18880:18:66" + }, + "nodeType": "YulFunctionCall", + "src": "18880:29:66" + }, + "variableNames": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "18872:4:66" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "18918:29:66", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "18929:4:66" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18939:1:66", + "type": "", + "value": "2" + }, + { + "name": "len", + "nodeType": "YulIdentifier", + "src": "18942:3:66" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "18935:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "18935:11:66" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "18926:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "18926:21:66" + }, + "variableNames": [ + { + "name": "used", + "nodeType": "YulIdentifier", + "src": "18918:4:66" + } + ] + } + ] + }, + "name": "extract_used_part_and_set_length_of_short_byte_array", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nodeType": "YulTypedName", + "src": "18720:4:66", + "type": "" + }, + { + "name": "len", + "nodeType": "YulTypedName", + "src": "18726:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "used", + "nodeType": "YulTypedName", + "src": "18734:4:66", + "type": "" + } + ], + "src": "18658:295:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19048:1300:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "19059:50:66", + "value": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "19105:3:66" + } + ], + "functionName": { + "name": "array_length_t_bytes_memory_ptr", + "nodeType": "YulIdentifier", + "src": "19073:31:66" + }, + "nodeType": "YulFunctionCall", + "src": "19073:36:66" + }, + "variables": [ + { + "name": "newLen", + "nodeType": "YulTypedName", + "src": "19063:6:66", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19194:22:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "19196:16:66" + }, + "nodeType": "YulFunctionCall", + "src": "19196:18:66" }, - "returnParameters": { - "id": 6973, - "nodeType": "ParameterList", - "parameters": [], - "src": "5004:0:34" + "nodeType": "YulExpressionStatement", + "src": "19196:18:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "19166:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19174:18:66", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "19163:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "19163:30:66" + }, + "nodeType": "YulIf", + "src": "19160:56:66" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "19226:52:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "19272:4:66" + } + ], + "functionName": { + "name": "sload", + "nodeType": "YulIdentifier", + "src": "19266:5:66" }, - "scope": 7269, - "src": "4800:1558:34", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" + "nodeType": "YulFunctionCall", + "src": "19266:11:66" + } + ], + "functionName": { + "name": "extract_byte_array_length", + "nodeType": "YulIdentifier", + "src": "19240:25:66" + }, + "nodeType": "YulFunctionCall", + "src": "19240:38:66" + }, + "variables": [ + { + "name": "oldLen", + "nodeType": "YulTypedName", + "src": "19230:6:66", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "19370:4:66" + }, + { + "name": "oldLen", + "nodeType": "YulIdentifier", + "src": "19376:6:66" + }, + { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "19384:6:66" + } + ], + "functionName": { + "name": "clean_up_bytearray_end_slots_t_bytes_storage", + "nodeType": "YulIdentifier", + "src": "19325:44:66" }, + "nodeType": "YulFunctionCall", + "src": "19325:66:66" + }, + "nodeType": "YulExpressionStatement", + "src": "19325:66:66" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "19401:18:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19418:1:66", + "type": "", + "value": "0" + }, + "variables": [ { - "baseFunctions": [8244], - "body": { - "id": 7125, - "nodeType": "Block", - "src": "7098:1477:34", - "statements": [ + "name": "srcOffset", + "nodeType": "YulTypedName", + "src": "19405:9:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "19429:17:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19442:4:66", + "type": "", + "value": "0x20" + }, + "variableNames": [ + { + "name": "srcOffset", + "nodeType": "YulIdentifier", + "src": "19429:9:66" + } + ] + }, + { + "cases": [ + { + "body": { + "nodeType": "YulBlock", + "src": "19493:610:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "19507:37:66", + "value": { + "arguments": [ { - "assignments": [7060], - "declarations": [ - { - "constant": false, - "id": 7060, - "mutability": "mutable", - "name": "amount", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7125, - "src": "7108:20:34", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 7059, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7108:7:34", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 7061, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "7108:20:34" + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "19526:6:66" }, { - "assignments": [7063], - "declarations": [ - { - "constant": false, - "id": 7063, - "mutability": "mutable", - "name": "destinationRecipientAddress", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7125, - "src": "7138:41:34", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 7062, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "7138:5:34", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 7064, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "7138:41:34" - }, + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19538:4:66", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "19534:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "19534:9:66" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "19522:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "19522:22:66" + }, + "variables": [ + { + "name": "loopEnd", + "nodeType": "YulTypedName", + "src": "19511:7:66", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "19558:50:66", + "value": { + "arguments": [ { - "AST": { - "nodeType": "YulBlock", - "src": "7199:681:34", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "7213:28:34", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7236:4:34", - "type": "", - "value": "0x64" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "7223:12:34" - }, - "nodeType": "YulFunctionCall", - "src": "7223:18:34" - }, - "variableNames": [ - { - "name": "amount", - "nodeType": "YulIdentifier", - "src": "7213:6:34" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "7255:42:34", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7292:4:34", - "type": "", - "value": "0x40" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "7286:5:34" - }, - "nodeType": "YulFunctionCall", - "src": "7286:11:34" - }, - "variableNames": [ - { - "name": "destinationRecipientAddress", - "nodeType": "YulIdentifier", - "src": "7255:27:34" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "7310:56:34", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7361:4:34", - "type": "", - "value": "0x84" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "7348:12:34" - }, - "nodeType": "YulFunctionCall", - "src": "7348:18:34" - }, - "variables": [ - { - "name": "lenDestinationRecipientAddress", - "nodeType": "YulTypedName", - "src": "7314:30:34", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7386:4:34", - "type": "", - "value": "0x40" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7396:4:34", - "type": "", - "value": "0x20" - }, - { - "arguments": [ - { - "name": "destinationRecipientAddress", - "nodeType": "YulIdentifier", - "src": "7406:27:34" - }, - { - "name": "lenDestinationRecipientAddress", - "nodeType": "YulIdentifier", - "src": "7435:30:34" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "7402:3:34" - }, - "nodeType": "YulFunctionCall", - "src": "7402:64:34" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "7392:3:34" - }, - "nodeType": "YulFunctionCall", - "src": "7392:75:34" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "7379:6:34" - }, - "nodeType": "YulFunctionCall", - "src": "7379:89:34" - }, - "nodeType": "YulExpressionStatement", - "src": "7379:89:34" + "name": "slot", + "nodeType": "YulIdentifier", + "src": "19603:4:66" + } + ], + "functionName": { + "name": "array_dataslot_t_bytes_storage", + "nodeType": "YulIdentifier", + "src": "19572:30:66" + }, + "nodeType": "YulFunctionCall", + "src": "19572:36:66" + }, + "variables": [ + { + "name": "dstPtr", + "nodeType": "YulTypedName", + "src": "19562:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "19621:10:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19630:1:66", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "19625:1:66", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19689:163:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nodeType": "YulIdentifier", + "src": "19714:6:66" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "19732:3:66" + }, + { + "name": "srcOffset", + "nodeType": "YulIdentifier", + "src": "19737:9:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19728:3:66" }, - { - "expression": { - "arguments": [ - { - "name": "destinationRecipientAddress", - "nodeType": "YulIdentifier", - "src": "7660:27:34" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7744:4:34", - "type": "", - "value": "0x84" - }, - { - "arguments": [ - { - "arguments": [], - "functionName": { - "name": "calldatasize", - "nodeType": "YulIdentifier", - "src": "7799:12:34" - }, - "nodeType": "YulFunctionCall", - "src": "7799:14:34" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7815:4:34", - "type": "", - "value": "0x84" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "7795:3:34" - }, - "nodeType": "YulFunctionCall", - "src": "7795:25:34" - } - ], - "functionName": { - "name": "calldatacopy", - "nodeType": "YulIdentifier", - "src": "7630:12:34" - }, - "nodeType": "YulFunctionCall", - "src": "7630:240:34" - }, - "nodeType": "YulExpressionStatement", - "src": "7630:240:34" - } - ] - }, - "evmVersion": "istanbul", - "externalReferences": [ - { - "declaration": 7060, - "isOffset": false, - "isSlot": false, - "src": "7213:6:34", - "valueSize": 1 - }, - { - "declaration": 7063, - "isOffset": false, - "isSlot": false, - "src": "7255:27:34", - "valueSize": 1 - }, - { - "declaration": 7063, - "isOffset": false, - "isSlot": false, - "src": "7406:27:34", - "valueSize": 1 + "nodeType": "YulFunctionCall", + "src": "19728:19:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "19722:5:66" }, - { - "declaration": 7063, - "isOffset": false, - "isSlot": false, - "src": "7660:27:34", - "valueSize": 1 - } + "nodeType": "YulFunctionCall", + "src": "19722:26:66" + } ], - "id": 7065, - "nodeType": "InlineAssembly", - "src": "7190:690:34" + "functionName": { + "name": "sstore", + "nodeType": "YulIdentifier", + "src": "19707:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "19707:42:66" + }, + "nodeType": "YulExpressionStatement", + "src": "19707:42:66" }, { - "assignments": [7067], - "declarations": [ - { - "constant": false, - "id": 7067, - "mutability": "mutable", - "name": "recipientAddress", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7125, - "src": "7890:24:34", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes20", - "typeString": "bytes20" - }, - "typeName": { - "id": 7066, - "name": "bytes20", - "nodeType": "ElementaryTypeName", - "src": "7890:7:34", - "typeDescriptions": { - "typeIdentifier": "t_bytes20", - "typeString": "bytes20" - } - }, - "value": null, - "visibility": "internal" - } + "nodeType": "YulAssignment", + "src": "19766:24:66", + "value": { + "arguments": [ + { + "name": "dstPtr", + "nodeType": "YulIdentifier", + "src": "19780:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19788:1:66", + "type": "", + "value": "1" + } ], - "id": 7068, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "7890:24:34" + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19776:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "19776:14:66" + }, + "variableNames": [ + { + "name": "dstPtr", + "nodeType": "YulIdentifier", + "src": "19766:6:66" + } + ] }, { - "assignments": [7070], - "declarations": [ - { - "constant": false, - "id": 7070, - "mutability": "mutable", - "name": "tokenAddress", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7125, - "src": "7924:20:34", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 7069, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "7924:7:34", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } + "nodeType": "YulAssignment", + "src": "19807:31:66", + "value": { + "arguments": [ + { + "name": "srcOffset", + "nodeType": "YulIdentifier", + "src": "19824:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19835:2:66", + "type": "", + "value": "32" + } ], - "id": 7074, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 7071, - "name": "_resourceIDToTokenContractAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8039, - "src": "7947:33:34", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", - "typeString": "mapping(bytes32 => address)" - } - }, - "id": 7073, - "indexExpression": { - "argumentTypes": null, - "id": 7072, - "name": "resourceID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7051, - "src": "7981:10:34", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7947:45:34", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19820:3:66" }, - "nodeType": "VariableDeclarationStatement", - "src": "7924:68:34" + "nodeType": "YulFunctionCall", + "src": "19820:18:66" + }, + "variableNames": [ + { + "name": "srcOffset", + "nodeType": "YulIdentifier", + "src": "19807:9:66" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "19655:1:66" }, { - "AST": { - "nodeType": "YulBlock", - "src": "8012:89:34", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "8026:65:34", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "destinationRecipientAddress", - "nodeType": "YulIdentifier", - "src": "8056:27:34" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "8085:4:34", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "8052:3:34" - }, - "nodeType": "YulFunctionCall", - "src": "8052:38:34" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "8046:5:34" - }, - "nodeType": "YulFunctionCall", - "src": "8046:45:34" - }, - "variableNames": [ - { - "name": "recipientAddress", - "nodeType": "YulIdentifier", - "src": "8026:16:34" - } - ] - } - ] + "name": "loopEnd", + "nodeType": "YulIdentifier", + "src": "19658:7:66" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "19652:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "19652:14:66" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "19667:21:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "19669:17:66", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "19678:1:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19681:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19674:3:66" }, - "evmVersion": "istanbul", - "externalReferences": [ - { - "declaration": 7063, - "isOffset": false, - "isSlot": false, - "src": "8056:27:34", - "valueSize": 1 + "nodeType": "YulFunctionCall", + "src": "19674:12:66" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "19669:1:66" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "19648:3:66", + "statements": [] + }, + "src": "19644:208:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19888:156:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "19906:43:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "19933:3:66" + }, + { + "name": "srcOffset", + "nodeType": "YulIdentifier", + "src": "19938:9:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19929:3:66" }, - { - "declaration": 7067, - "isOffset": false, - "isSlot": false, - "src": "8026:16:34", - "valueSize": 1 - } + "nodeType": "YulFunctionCall", + "src": "19929:19:66" + } ], - "id": 7075, - "nodeType": "InlineAssembly", - "src": "8003:98:34" + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "19923:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "19923:26:66" + }, + "variables": [ + { + "name": "lastValue", + "nodeType": "YulTypedName", + "src": "19910:9:66", + "type": "" + } + ] }, { - "expression": { - "argumentTypes": null, + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nodeType": "YulIdentifier", + "src": "19973:6:66" + }, + { "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 7077, - "name": "_contractWhitelist", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8047, - "src": "8119:18:34", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 7079, - "indexExpression": { - "argumentTypes": null, - "id": 7078, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7070, - "src": "8138:12:34", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8119:32:34", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } + { + "name": "lastValue", + "nodeType": "YulIdentifier", + "src": "20000:9:66" + }, + { + "arguments": [ + { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "20015:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20023:4:66", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "20011:3:66" }, - { - "argumentTypes": null, - "hexValue": "70726f766964656420746f6b656e41646472657373206973206e6f742077686974656c6973746564", - "id": 7080, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8153:42:34", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_d6f36190bb0602e32e72016fc9d55735c428c14ee06e9999974578d6c009c7ad", - "typeString": "literal_string \"provided tokenAddress is not whitelisted\"" - }, - "value": "provided tokenAddress is not whitelisted" - } + "nodeType": "YulFunctionCall", + "src": "20011:17:66" + } ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_d6f36190bb0602e32e72016fc9d55735c428c14ee06e9999974578d6c009c7ad", - "typeString": "literal_string \"provided tokenAddress is not whitelisted\"" - } - ], - "id": 7076, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "8111:7:34", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } + "functionName": { + "name": "mask_bytes_dynamic", + "nodeType": "YulIdentifier", + "src": "19981:18:66" }, - "id": 7081, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8111:85:34", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } + "nodeType": "YulFunctionCall", + "src": "19981:48:66" + } + ], + "functionName": { + "name": "sstore", + "nodeType": "YulIdentifier", + "src": "19966:6:66" }, - "id": 7082, - "nodeType": "ExpressionStatement", - "src": "8111:85:34" + "nodeType": "YulFunctionCall", + "src": "19966:64:66" + }, + "nodeType": "YulExpressionStatement", + "src": "19966:64:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "loopEnd", + "nodeType": "YulIdentifier", + "src": "19871:7:66" }, { - "condition": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 7083, - "name": "_burnList", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8051, - "src": "8211:9:34", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 7085, - "indexExpression": { - "argumentTypes": null, - "id": 7084, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7070, - "src": "8221:12:34", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "19880:6:66" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "19868:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "19868:19:66" + }, + "nodeType": "YulIf", + "src": "19865:179:66" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "20064:4:66" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "20078:6:66" }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8211:23:34", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20086:1:66", + "type": "", + "value": "2" } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "20074:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "20074:14:66" }, - "falseBody": { - "id": 7111, - "nodeType": "Block", - "src": "8353:114:34", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 7100, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7070, - "src": "8380:12:34", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 7103, - "name": "recipientAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7067, - "src": "8402:16:34", - "typeDescriptions": { - "typeIdentifier": "t_bytes20", - "typeString": "bytes20" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes20", - "typeString": "bytes20" - } - ], - "id": 7102, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "8394:7:34", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 7101, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8394:7:34", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 7104, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8394:25:34", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 7106, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7070, - "src": "8434:12:34", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 7107, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7060, - "src": "8448:6:34", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 7105, - "name": "toSrcBalance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7268, - "src": "8421:12:34", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (address,uint256) returns (uint256)" - } - }, - "id": 7108, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8421:34:34", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 7099, - "name": "releaseERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5801, - "src": "8367:12:34", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256)" - } - }, - "id": 7109, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8367:89:34", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 7110, - "nodeType": "ExpressionStatement", - "src": "8367:89:34" - } - ] - }, - "id": 7112, - "nodeType": "IfStatement", - "src": "8207:260:34", - "trueBody": { - "id": 7098, - "nodeType": "Block", - "src": "8236:111:34", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 7087, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7070, - "src": "8260:12:34", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 7090, - "name": "recipientAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7067, - "src": "8282:16:34", - "typeDescriptions": { - "typeIdentifier": "t_bytes20", - "typeString": "bytes20" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes20", - "typeString": "bytes20" - } - ], - "id": 7089, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "8274:7:34", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 7088, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8274:7:34", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 7091, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8274:25:34", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 7093, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7070, - "src": "8314:12:34", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 7094, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7060, - "src": "8328:6:34", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 7092, - "name": "toSrcBalance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7268, - "src": "8301:12:34", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (address,uint256) returns (uint256)" - } - }, - "id": 7095, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8301:34:34", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 7086, - "name": "mintERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5825, - "src": "8250:9:34", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256)" - } - }, - "id": 7096, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8250:86:34", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 7097, - "nodeType": "ExpressionStatement", - "src": "8250:86:34" - } - ] + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20090:1:66", + "type": "", + "value": "1" } - }, + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20070:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "20070:22:66" + } + ], + "functionName": { + "name": "sstore", + "nodeType": "YulIdentifier", + "src": "20057:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "20057:36:66" + }, + "nodeType": "YulExpressionStatement", + "src": "20057:36:66" + } + ] + }, + "nodeType": "YulCase", + "src": "19486:617:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19491:1:66", + "type": "", + "value": "1" + } + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20120:222:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "20134:14:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20147:1:66", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "20138:5:66", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20171:67:66", + "statements": [ { - "eventCall": { - "argumentTypes": null, + "nodeType": "YulAssignment", + "src": "20189:35:66", + "value": { + "arguments": [ + { "arguments": [ - { - "argumentTypes": null, - "id": 7114, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7070, - "src": "8492:12:34", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 7117, - "name": "recipientAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7067, - "src": "8514:16:34", - "typeDescriptions": { - "typeIdentifier": "t_bytes20", - "typeString": "bytes20" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes20", - "typeString": "bytes20" - } - ], - "id": 7116, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "8506:7:34", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 7115, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8506:7:34", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 7118, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8506:25:34", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 7120, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7070, - "src": "8546:12:34", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 7121, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7060, - "src": "8560:6:34", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 7119, - "name": "toSrcBalance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7268, - "src": "8533:12:34", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (address,uint256) returns (uint256)" - } - }, - "id": 7122, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8533:34:34", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "20208:3:66" + }, + { + "name": "srcOffset", + "nodeType": "YulIdentifier", + "src": "20213:9:66" + } ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 7113, - "name": "Deposited", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6854, - "src": "8482:9:34", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256)" - } + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20204:3:66" }, - "id": 7123, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8482:86:34", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } + "nodeType": "YulFunctionCall", + "src": "20204:19:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "20198:5:66" }, - "id": 7124, - "nodeType": "EmitStatement", - "src": "8477:91:34" - } - ] - }, - "documentation": { - "id": 7049, - "nodeType": "StructuredDocumentation", - "src": "6364:634:34", - "text": "@notice Proposal execution should be initiated when a proposal is finalized in the Bridge contract.\nby a relayer on the deposit's destination chain.\n@param data Consists of {resourceID}, {amount}, {lenDestinationRecipientAddress},\nand {destinationRecipientAddress} all padded to 32 bytes.\n@notice Data passed into the function should be constructed as follows:\namount uint256 bytes 0 - 32\ndestinationRecipientAddress length uint256 bytes 32 - 64\ndestinationRecipientAddress bytes bytes 64 - END" - }, - "functionSelector": "e248cff2", - "id": 7126, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": null, - "id": 7057, - "modifierName": { - "argumentTypes": null, - "id": 7056, - "name": "onlyBridge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8062, - "src": "7087:10:34", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" + "nodeType": "YulFunctionCall", + "src": "20198:26:66" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "20189:5:66" } - }, - "nodeType": "ModifierInvocation", - "src": "7087:10:34" - } - ], - "name": "executeProposal", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 7055, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "7078:8:34" - }, - "parameters": { - "id": 7054, - "nodeType": "ParameterList", - "parameters": [ + ] + } + ] + }, + "condition": { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "20164:6:66" + }, + "nodeType": "YulIf", + "src": "20161:77:66" + }, + { + "expression": { + "arguments": [ { - "constant": false, - "id": 7051, - "mutability": "mutable", - "name": "resourceID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7126, - "src": "7028:18:34", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 7050, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "7028:7:34", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" + "name": "slot", + "nodeType": "YulIdentifier", + "src": "20258:4:66" }, { - "constant": false, - "id": 7053, - "mutability": "mutable", - "name": "data", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7126, - "src": "7048:19:34", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 7052, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "7048:5:34", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "20317:5:66" }, - "value": null, - "visibility": "internal" + { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "20324:6:66" + } + ], + "functionName": { + "name": "extract_used_part_and_set_length_of_short_byte_array", + "nodeType": "YulIdentifier", + "src": "20264:52:66" + }, + "nodeType": "YulFunctionCall", + "src": "20264:67:66" } - ], - "src": "7027:41:34" + ], + "functionName": { + "name": "sstore", + "nodeType": "YulIdentifier", + "src": "20251:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "20251:81:66" + }, + "nodeType": "YulExpressionStatement", + "src": "20251:81:66" + } + ] + }, + "nodeType": "YulCase", + "src": "20112:230:66", + "value": "default" + } + ], + "expression": { + "arguments": [ + { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "19466:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19474:2:66", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "19463:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "19463:14:66" + }, + "nodeType": "YulSwitch", + "src": "19456:886:66" + } + ] + }, + "name": "copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "slot", + "nodeType": "YulTypedName", + "src": "19037:4:66", + "type": "" + }, + { + "name": "src", + "nodeType": "YulTypedName", + "src": "19043:3:66", + "type": "" + } + ], + "src": "18958:1390:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20460:74:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "20482:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20490:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20478:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "20478:14:66" + }, + { + "hexValue": "73656e646572206d7573742062652062726964676520636f6e7472616374", + "kind": "string", + "nodeType": "YulLiteral", + "src": "20494:32:66", + "type": "", + "value": "sender must be bridge contract" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20471:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "20471:56:66" + }, + "nodeType": "YulExpressionStatement", + "src": "20471:56:66" + } + ] + }, + "name": "store_literal_in_memory_0febc0fc8991eb26dfaaceeb4d73d25b76da338550ed76c60410fec84388058e", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "20452:6:66", + "type": "" + } + ], + "src": "20354:180:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20686:220:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "20696:74:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "20762:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20767:2:66", + "type": "", + "value": "30" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "20703:58:66" + }, + "nodeType": "YulFunctionCall", + "src": "20703:67:66" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "20696:3:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "20868:3:66" + } + ], + "functionName": { + "name": "store_literal_in_memory_0febc0fc8991eb26dfaaceeb4d73d25b76da338550ed76c60410fec84388058e", + "nodeType": "YulIdentifier", + "src": "20779:88:66" + }, + "nodeType": "YulFunctionCall", + "src": "20779:93:66" + }, + "nodeType": "YulExpressionStatement", + "src": "20779:93:66" + }, + { + "nodeType": "YulAssignment", + "src": "20881:19:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "20892:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20897:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20888:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "20888:12:66" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "20881:3:66" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_0febc0fc8991eb26dfaaceeb4d73d25b76da338550ed76c60410fec84388058e_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "20674:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "20682:3:66", + "type": "" + } + ], + "src": "20540:366:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "21083:248:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "21093:26:66", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21105:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21116:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21101:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "21101:18:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "21093:4:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21140:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21151:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21136:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "21136:17:66" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "21159:4:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21165:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "21155:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "21155:20:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21129:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "21129:47:66" + }, + "nodeType": "YulExpressionStatement", + "src": "21129:47:66" + }, + { + "nodeType": "YulAssignment", + "src": "21185:139:66", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "21319:4:66" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_0febc0fc8991eb26dfaaceeb4d73d25b76da338550ed76c60410fec84388058e_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "21193:124:66" + }, + "nodeType": "YulFunctionCall", + "src": "21193:131:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "21185:4:66" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_0febc0fc8991eb26dfaaceeb4d73d25b76da338550ed76c60410fec84388058e__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "21063:9:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "21078:4:66", + "type": "" + } + ], + "src": "20912:419:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "21443:117:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "21465:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21473:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21461:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "21461:14:66" + }, + { + "hexValue": "70726f766964656420636f6e7472616374206973206e6f742077686974656c69", + "kind": "string", + "nodeType": "YulLiteral", + "src": "21477:34:66", + "type": "", + "value": "provided contract is not whiteli" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21454:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "21454:58:66" + }, + "nodeType": "YulExpressionStatement", + "src": "21454:58:66" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "21533:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21541:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21529:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "21529:15:66" + }, + { + "hexValue": "73746564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "21546:6:66", + "type": "", + "value": "sted" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21522:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "21522:31:66" + }, + "nodeType": "YulExpressionStatement", + "src": "21522:31:66" + } + ] + }, + "name": "store_literal_in_memory_2daab49254b4a5228983fbc316d7992ab0064c3e34fa43dd7fbf9d5c4fe8b0da", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "21435:6:66", + "type": "" + } + ], + "src": "21337:223:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "21712:220:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "21722:74:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "21788:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21793:2:66", + "type": "", + "value": "36" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "21729:58:66" + }, + "nodeType": "YulFunctionCall", + "src": "21729:67:66" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "21722:3:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "21894:3:66" + } + ], + "functionName": { + "name": "store_literal_in_memory_2daab49254b4a5228983fbc316d7992ab0064c3e34fa43dd7fbf9d5c4fe8b0da", + "nodeType": "YulIdentifier", + "src": "21805:88:66" + }, + "nodeType": "YulFunctionCall", + "src": "21805:93:66" + }, + "nodeType": "YulExpressionStatement", + "src": "21805:93:66" + }, + { + "nodeType": "YulAssignment", + "src": "21907:19:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "21918:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21923:2:66", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21914:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "21914:12:66" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "21907:3:66" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_2daab49254b4a5228983fbc316d7992ab0064c3e34fa43dd7fbf9d5c4fe8b0da_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "21700:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "21708:3:66", + "type": "" + } + ], + "src": "21566:366:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "22109:248:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "22119:26:66", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22131:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22142:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22127:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "22127:18:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "22119:4:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22166:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22177:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22162:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "22162:17:66" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "22185:4:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22191:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "22181:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "22181:20:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "22155:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "22155:47:66" + }, + "nodeType": "YulExpressionStatement", + "src": "22155:47:66" + }, + { + "nodeType": "YulAssignment", + "src": "22211:139:66", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "22345:4:66" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_2daab49254b4a5228983fbc316d7992ab0064c3e34fa43dd7fbf9d5c4fe8b0da_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "22219:124:66" + }, + "nodeType": "YulFunctionCall", + "src": "22219:131:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "22211:4:66" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_2daab49254b4a5228983fbc316d7992ab0064c3e34fa43dd7fbf9d5c4fe8b0da__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "22089:9:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "22104:4:66", + "type": "" + } + ], + "src": "21938:419:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "22489:206:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "22499:26:66", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22511:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22522:2:66", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22507:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "22507:18:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "22499:4:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "22579:6:66" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22592:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22603:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22588:3:66" }, - "returnParameters": { - "id": 7058, - "nodeType": "ParameterList", - "parameters": [], - "src": "7098:0:34" + "nodeType": "YulFunctionCall", + "src": "22588:17:66" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "22535:43:66" + }, + "nodeType": "YulFunctionCall", + "src": "22535:71:66" + }, + "nodeType": "YulExpressionStatement", + "src": "22535:71:66" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "22660:6:66" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22673:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22684:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22669:3:66" }, - "scope": 7269, - "src": "7003:1572:34", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" + "nodeType": "YulFunctionCall", + "src": "22669:18:66" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "22616:43:66" + }, + "nodeType": "YulFunctionCall", + "src": "22616:72:66" + }, + "nodeType": "YulExpressionStatement", + "src": "22616:72:66" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "22453:9:66", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "22465:6:66", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "22473:6:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "22484:4:66", + "type": "" + } + ], + "src": "22363:332:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "22855:288:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "22865:26:66", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22877:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22888:2:66", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22873:3:66" }, + "nodeType": "YulFunctionCall", + "src": "22873:18:66" + }, + "variableNames": [ { - "baseFunctions": [8137], - "body": { - "id": 7145, - "nodeType": "Block", - "src": "8950:62:34", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 7140, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7129, - "src": "8973:12:34", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 7141, - "name": "recipient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7131, - "src": "8987:9:34", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 7142, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7133, - "src": "8998:6:34", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 7139, - "name": "releaseERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5801, - "src": "8960:12:34", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256)" - } - }, - "id": 7143, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8960:45:34", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 7144, - "nodeType": "ExpressionStatement", - "src": "8960:45:34" - } - ] + "name": "tail", + "nodeType": "YulIdentifier", + "src": "22865:4:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "22945:6:66" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22958:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22969:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22954:3:66" }, - "documentation": { - "id": 7127, - "nodeType": "StructuredDocumentation", - "src": "8581:263:34", - "text": "@notice Used to manually release ERC20 tokens from ERC20Safe.\n@param tokenAddress Address of token contract to release.\n@param recipient Address to release tokens to.\n@param amount The amount of ERC20 tokens to release." - }, - "functionSelector": "d9caed12", - "id": 7146, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": null, - "id": 7137, - "modifierName": { - "argumentTypes": null, - "id": 7136, - "name": "onlyBridge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8062, - "src": "8939:10:34", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "8939:10:34" - } + "nodeType": "YulFunctionCall", + "src": "22954:17:66" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "22901:43:66" + }, + "nodeType": "YulFunctionCall", + "src": "22901:71:66" + }, + "nodeType": "YulExpressionStatement", + "src": "22901:71:66" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "23026:6:66" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23039:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23050:2:66", + "type": "", + "value": "32" + } ], - "name": "withdraw", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 7135, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "8930:8:34" - }, - "parameters": { - "id": 7134, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 7129, - "mutability": "mutable", - "name": "tokenAddress", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7146, - "src": "8867:20:34", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 7128, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8867:7:34", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 7131, - "mutability": "mutable", - "name": "recipient", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7146, - "src": "8889:17:34", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 7130, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8889:7:34", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 7133, - "mutability": "mutable", - "name": "amount", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7146, - "src": "8908:11:34", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 7132, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "8908:4:34", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "8866:54:34" + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23035:3:66" }, - "returnParameters": { - "id": 7138, - "nodeType": "ParameterList", - "parameters": [], - "src": "8950:0:34" + "nodeType": "YulFunctionCall", + "src": "23035:18:66" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "22982:43:66" + }, + "nodeType": "YulFunctionCall", + "src": "22982:72:66" + }, + "nodeType": "YulExpressionStatement", + "src": "22982:72:66" + }, + { + "expression": { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "23108:6:66" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23121:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23132:2:66", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23117:3:66" }, - "scope": 7269, - "src": "8849:163:34", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" + "nodeType": "YulFunctionCall", + "src": "23117:18:66" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "23064:43:66" }, + "nodeType": "YulFunctionCall", + "src": "23064:72:66" + }, + "nodeType": "YulExpressionStatement", + "src": "23064:72:66" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "22811:9:66", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "22823:6:66", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "22831:6:66", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "22839:6:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "22850:4:66", + "type": "" + } + ], + "src": "22701:442:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "23262:34:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "23272:18:66", + "value": { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "23287:3:66" + }, + "variableNames": [ { - "body": { - "id": 7206, - "nodeType": "Block", - "src": "9105:485:34", - "statements": [ - { - "assignments": [7156], - "declarations": [ - { - "constant": false, - "id": 7156, - "mutability": "mutable", - "name": "decimals", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7206, - "src": "9115:24:34", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Decimals_$8033_memory_ptr", - "typeString": "struct HandlerHelpers.Decimals" - }, - "typeName": { - "contractScope": null, - "id": 7155, - "name": "Decimals", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 8033, - "src": "9115:8:34", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Decimals_$8033_storage_ptr", - "typeString": "struct HandlerHelpers.Decimals" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 7160, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 7157, - "name": "_decimals", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8055, - "src": "9142:9:34", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Decimals_$8033_storage_$", - "typeString": "mapping(address => struct HandlerHelpers.Decimals storage ref)" - } - }, - "id": 7159, - "indexExpression": { - "argumentTypes": null, - "id": 7158, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7148, - "src": "9152:12:34", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9142:23:34", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Decimals_$8033_storage", - "typeString": "struct HandlerHelpers.Decimals storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "9115:50:34" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 7170, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 7165, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 7162, - "name": "decimals", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7156, - "src": "9251:8:34", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Decimals_$8033_memory_ptr", - "typeString": "struct HandlerHelpers.Decimals memory" - } - }, - "id": 7163, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "srcDecimals", - "nodeType": "MemberAccess", - "referencedDeclaration": 8030, - "src": "9251:20:34", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 7164, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9275:1:34", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "9251:25:34", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 7169, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 7166, - "name": "decimals", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7156, - "src": "9280:8:34", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Decimals_$8033_memory_ptr", - "typeString": "struct HandlerHelpers.Decimals memory" - } - }, - "id": 7167, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "destDecimals", - "nodeType": "MemberAccess", - "referencedDeclaration": 8032, - "src": "9280:21:34", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 7168, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9305:1:34", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "9280:26:34", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "9251:55:34", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "57726f6e6720646563696d616c73", - "id": 7171, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9308:16:34", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_210a4f0f6d287f58fa7508b82e8ee4b9fa77631b2cd7ecb1c82d4cb54573bb89", - "typeString": "literal_string \"Wrong decimals\"" - }, - "value": "Wrong decimals" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_210a4f0f6d287f58fa7508b82e8ee4b9fa77631b2cd7ecb1c82d4cb54573bb89", - "typeString": "literal_string \"Wrong decimals\"" - } - ], - "id": 7161, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "9243:7:34", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 7172, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9243:82:34", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 7173, - "nodeType": "ExpressionStatement", - "src": "9243:82:34" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 7178, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 7174, - "name": "decimals", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7156, - "src": "9339:8:34", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Decimals_$8033_memory_ptr", - "typeString": "struct HandlerHelpers.Decimals memory" - } - }, - "id": 7175, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "destDecimals", - "nodeType": "MemberAccess", - "referencedDeclaration": 8032, - "src": "9339:21:34", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 7176, - "name": "decimals", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7156, - "src": "9364:8:34", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Decimals_$8033_memory_ptr", - "typeString": "struct HandlerHelpers.Decimals memory" - } - }, - "id": 7177, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "srcDecimals", - "nodeType": "MemberAccess", - "referencedDeclaration": 8030, - "src": "9364:20:34", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "9339:45:34", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 7204, - "nodeType": "Block", - "src": "9488:96:34", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7201, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "hexValue": "3130", - "id": 7194, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9520:2:34", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_10_by_1", - "typeString": "int_const 10" - }, - "value": "10" - }, - "nodeType": "BinaryOperation", - "operator": "**", - "rightExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 7199, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 7195, - "name": "decimals", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7156, - "src": "9527:8:34", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Decimals_$8033_memory_ptr", - "typeString": "struct HandlerHelpers.Decimals memory" - } - }, - "id": 7196, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "srcDecimals", - "nodeType": "MemberAccess", - "referencedDeclaration": 8030, - "src": "9527:20:34", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 7197, - "name": "decimals", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7156, - "src": "9550:8:34", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Decimals_$8033_memory_ptr", - "typeString": "struct HandlerHelpers.Decimals memory" - } - }, - "id": 7198, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "destDecimals", - "nodeType": "MemberAccess", - "referencedDeclaration": 8032, - "src": "9550:21:34", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "9527:44:34", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "id": 7200, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "9526:46:34", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "9520:52:34", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 7192, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7150, - "src": "9509:6:34", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7193, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "div", - "nodeType": "MemberAccess", - "referencedDeclaration": 842, - "src": "9509:10:34", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 7202, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9509:64:34", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 7154, - "id": 7203, - "nodeType": "Return", - "src": "9502:71:34" - } - ] - }, - "id": 7205, - "nodeType": "IfStatement", - "src": "9335:249:34", - "trueBody": { - "id": 7191, - "nodeType": "Block", - "src": "9386:96:34", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7188, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "hexValue": "3130", - "id": 7181, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9418:2:34", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_10_by_1", - "typeString": "int_const 10" - }, - "value": "10" - }, - "nodeType": "BinaryOperation", - "operator": "**", - "rightExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 7186, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 7182, - "name": "decimals", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7156, - "src": "9425:8:34", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Decimals_$8033_memory_ptr", - "typeString": "struct HandlerHelpers.Decimals memory" - } - }, - "id": 7183, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "destDecimals", - "nodeType": "MemberAccess", - "referencedDeclaration": 8032, - "src": "9425:21:34", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 7184, - "name": "decimals", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7156, - "src": "9449:8:34", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Decimals_$8033_memory_ptr", - "typeString": "struct HandlerHelpers.Decimals memory" - } - }, - "id": 7185, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "srcDecimals", - "nodeType": "MemberAccess", - "referencedDeclaration": 8030, - "src": "9449:20:34", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "9425:44:34", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "id": 7187, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "9424:46:34", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "9418:52:34", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 7179, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7150, - "src": "9407:6:34", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7180, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "mul", - "nodeType": "MemberAccess", - "referencedDeclaration": 820, - "src": "9407:10:34", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 7189, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9407:64:34", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 7154, - "id": 7190, - "nodeType": "Return", - "src": "9400:71:34" - } - ] - } - } - ] - }, - "documentation": null, - "id": 7207, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "toDestBalance", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 7151, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 7148, - "mutability": "mutable", - "name": "tokenAddress", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7207, - "src": "9041:20:34", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 7147, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9041:7:34", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 7150, - "mutability": "mutable", - "name": "amount", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7207, - "src": "9063:14:34", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 7149, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9063:7:34", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "9040:38:34" + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "23272:11:66" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "23234:3:66", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "23239:6:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "23250:11:66", + "type": "" + } + ], + "src": "23149:147:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "23410:278:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "23420:52:66", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "23466:5:66" + } + ], + "functionName": { + "name": "array_length_t_bytes_memory_ptr", + "nodeType": "YulIdentifier", + "src": "23434:31:66" + }, + "nodeType": "YulFunctionCall", + "src": "23434:38:66" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "23424:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "23481:95:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "23564:3:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "23569:6:66" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "23488:75:66" + }, + "nodeType": "YulFunctionCall", + "src": "23488:88:66" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "23481:3:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "23624:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23631:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23620:3:66" }, - "returnParameters": { - "id": 7154, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 7153, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7207, - "src": "9096:7:34", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 7152, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9096:7:34", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "9095:9:34" + "nodeType": "YulFunctionCall", + "src": "23620:16:66" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "23638:3:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "23643:6:66" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nodeType": "YulIdentifier", + "src": "23585:34:66" + }, + "nodeType": "YulFunctionCall", + "src": "23585:65:66" + }, + "nodeType": "YulExpressionStatement", + "src": "23585:65:66" + }, + { + "nodeType": "YulAssignment", + "src": "23659:23:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "23670:3:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "23675:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23666:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "23666:16:66" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "23659:3:66" + } + ] + } + ] + }, + "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "23391:5:66", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "23398:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "23406:3:66", + "type": "" + } + ], + "src": "23302:386:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "23828:137:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "23839:100:66", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "23926:6:66" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "23935:3:66" + } + ], + "functionName": { + "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "23846:79:66" + }, + "nodeType": "YulFunctionCall", + "src": "23846:93:66" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "23839:3:66" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "23949:10:66", + "value": { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "23956:3:66" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "23949:3:66" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "23807:3:66", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "23813:6:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "23824:3:66", + "type": "" + } + ], + "src": "23694:271:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "24077:62:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "24099:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24107:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24095:3:66" }, - "scope": 7269, - "src": "9018:572:34", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" + "nodeType": "YulFunctionCall", + "src": "24095:14:66" + }, + { + "hexValue": "45524332303a2063616c6c206661696c6564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "24111:20:66", + "type": "", + "value": "ERC20: call failed" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24088:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "24088:44:66" + }, + "nodeType": "YulExpressionStatement", + "src": "24088:44:66" + } + ] + }, + "name": "store_literal_in_memory_3576d6dfb5a800b5f7598d3cc3220135845acd27db3901a5c3c655559195efba", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "24069:6:66", + "type": "" + } + ], + "src": "23971:168:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "24291:220:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "24301:74:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "24367:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24372:2:66", + "type": "", + "value": "18" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "24308:58:66" }, + "nodeType": "YulFunctionCall", + "src": "24308:67:66" + }, + "variableNames": [ { - "body": { - "id": 7267, - "nodeType": "Block", - "src": "9682:485:34", - "statements": [ - { - "assignments": [7217], - "declarations": [ - { - "constant": false, - "id": 7217, - "mutability": "mutable", - "name": "decimals", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7267, - "src": "9692:24:34", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Decimals_$8033_memory_ptr", - "typeString": "struct HandlerHelpers.Decimals" - }, - "typeName": { - "contractScope": null, - "id": 7216, - "name": "Decimals", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 8033, - "src": "9692:8:34", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Decimals_$8033_storage_ptr", - "typeString": "struct HandlerHelpers.Decimals" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 7221, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 7218, - "name": "_decimals", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8055, - "src": "9719:9:34", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Decimals_$8033_storage_$", - "typeString": "mapping(address => struct HandlerHelpers.Decimals storage ref)" - } - }, - "id": 7220, - "indexExpression": { - "argumentTypes": null, - "id": 7219, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7209, - "src": "9729:12:34", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9719:23:34", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Decimals_$8033_storage", - "typeString": "struct HandlerHelpers.Decimals storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "9692:50:34" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 7231, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 7226, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 7223, - "name": "decimals", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7217, - "src": "9828:8:34", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Decimals_$8033_memory_ptr", - "typeString": "struct HandlerHelpers.Decimals memory" - } - }, - "id": 7224, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "srcDecimals", - "nodeType": "MemberAccess", - "referencedDeclaration": 8030, - "src": "9828:20:34", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 7225, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9852:1:34", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "9828:25:34", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 7230, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 7227, - "name": "decimals", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7217, - "src": "9857:8:34", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Decimals_$8033_memory_ptr", - "typeString": "struct HandlerHelpers.Decimals memory" - } - }, - "id": 7228, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "destDecimals", - "nodeType": "MemberAccess", - "referencedDeclaration": 8032, - "src": "9857:21:34", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 7229, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9882:1:34", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "9857:26:34", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "9828:55:34", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "57726f6e6720646563696d616c73", - "id": 7232, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9885:16:34", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_210a4f0f6d287f58fa7508b82e8ee4b9fa77631b2cd7ecb1c82d4cb54573bb89", - "typeString": "literal_string \"Wrong decimals\"" - }, - "value": "Wrong decimals" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_210a4f0f6d287f58fa7508b82e8ee4b9fa77631b2cd7ecb1c82d4cb54573bb89", - "typeString": "literal_string \"Wrong decimals\"" - } - ], - "id": 7222, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "9820:7:34", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 7233, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9820:82:34", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 7234, - "nodeType": "ExpressionStatement", - "src": "9820:82:34" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 7239, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 7235, - "name": "decimals", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7217, - "src": "9916:8:34", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Decimals_$8033_memory_ptr", - "typeString": "struct HandlerHelpers.Decimals memory" - } - }, - "id": 7236, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "destDecimals", - "nodeType": "MemberAccess", - "referencedDeclaration": 8032, - "src": "9916:21:34", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 7237, - "name": "decimals", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7217, - "src": "9941:8:34", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Decimals_$8033_memory_ptr", - "typeString": "struct HandlerHelpers.Decimals memory" - } - }, - "id": 7238, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "srcDecimals", - "nodeType": "MemberAccess", - "referencedDeclaration": 8030, - "src": "9941:20:34", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "9916:45:34", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 7265, - "nodeType": "Block", - "src": "10065:96:34", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7262, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "hexValue": "3130", - "id": 7255, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10097:2:34", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_10_by_1", - "typeString": "int_const 10" - }, - "value": "10" - }, - "nodeType": "BinaryOperation", - "operator": "**", - "rightExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 7260, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 7256, - "name": "decimals", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7217, - "src": "10104:8:34", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Decimals_$8033_memory_ptr", - "typeString": "struct HandlerHelpers.Decimals memory" - } - }, - "id": 7257, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "srcDecimals", - "nodeType": "MemberAccess", - "referencedDeclaration": 8030, - "src": "10104:20:34", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 7258, - "name": "decimals", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7217, - "src": "10127:8:34", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Decimals_$8033_memory_ptr", - "typeString": "struct HandlerHelpers.Decimals memory" - } - }, - "id": 7259, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "destDecimals", - "nodeType": "MemberAccess", - "referencedDeclaration": 8032, - "src": "10127:21:34", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "10104:44:34", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "id": 7261, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "10103:46:34", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "10097:52:34", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 7253, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7211, - "src": "10086:6:34", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7254, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "mul", - "nodeType": "MemberAccess", - "referencedDeclaration": 820, - "src": "10086:10:34", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 7263, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10086:64:34", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 7215, - "id": 7264, - "nodeType": "Return", - "src": "10079:71:34" - } - ] - }, - "id": 7266, - "nodeType": "IfStatement", - "src": "9912:249:34", - "trueBody": { - "id": 7252, - "nodeType": "Block", - "src": "9963:96:34", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7249, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "hexValue": "3130", - "id": 7242, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9995:2:34", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_10_by_1", - "typeString": "int_const 10" - }, - "value": "10" - }, - "nodeType": "BinaryOperation", - "operator": "**", - "rightExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 7247, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 7243, - "name": "decimals", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7217, - "src": "10002:8:34", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Decimals_$8033_memory_ptr", - "typeString": "struct HandlerHelpers.Decimals memory" - } - }, - "id": 7244, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "destDecimals", - "nodeType": "MemberAccess", - "referencedDeclaration": 8032, - "src": "10002:21:34", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 7245, - "name": "decimals", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7217, - "src": "10026:8:34", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Decimals_$8033_memory_ptr", - "typeString": "struct HandlerHelpers.Decimals memory" - } - }, - "id": 7246, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "srcDecimals", - "nodeType": "MemberAccess", - "referencedDeclaration": 8030, - "src": "10026:20:34", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "10002:44:34", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "id": 7248, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "10001:46:34", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "9995:52:34", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 7240, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7211, - "src": "9984:6:34", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7241, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "div", - "nodeType": "MemberAccess", - "referencedDeclaration": 842, - "src": "9984:10:34", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 7250, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9984:64:34", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 7215, - "id": 7251, - "nodeType": "Return", - "src": "9977:71:34" - } - ] - } - } - ] + "name": "pos", + "nodeType": "YulIdentifier", + "src": "24301:3:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "24473:3:66" + } + ], + "functionName": { + "name": "store_literal_in_memory_3576d6dfb5a800b5f7598d3cc3220135845acd27db3901a5c3c655559195efba", + "nodeType": "YulIdentifier", + "src": "24384:88:66" + }, + "nodeType": "YulFunctionCall", + "src": "24384:93:66" + }, + "nodeType": "YulExpressionStatement", + "src": "24384:93:66" + }, + { + "nodeType": "YulAssignment", + "src": "24486:19:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "24497:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24502:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24493:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "24493:12:66" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "24486:3:66" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_3576d6dfb5a800b5f7598d3cc3220135845acd27db3901a5c3c655559195efba_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "24279:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "24287:3:66", + "type": "" + } + ], + "src": "24145:366:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "24688:248:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "24698:26:66", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24710:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24721:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24706:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "24706:18:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "24698:4:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24745:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24756:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24741:3:66" }, - "documentation": null, - "id": 7268, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "toSrcBalance", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 7212, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 7209, - "mutability": "mutable", - "name": "tokenAddress", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7268, - "src": "9618:20:34", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 7208, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9618:7:34", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 7211, - "mutability": "mutable", - "name": "amount", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7268, - "src": "9640:14:34", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 7210, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9640:7:34", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "9617:38:34" + "nodeType": "YulFunctionCall", + "src": "24741:17:66" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "24764:4:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24770:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "24760:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "24760:20:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24734:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "24734:47:66" + }, + "nodeType": "YulExpressionStatement", + "src": "24734:47:66" + }, + { + "nodeType": "YulAssignment", + "src": "24790:139:66", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "24924:4:66" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_3576d6dfb5a800b5f7598d3cc3220135845acd27db3901a5c3c655559195efba_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "24798:124:66" + }, + "nodeType": "YulFunctionCall", + "src": "24798:131:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "24790:4:66" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_3576d6dfb5a800b5f7598d3cc3220135845acd27db3901a5c3c655559195efba__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "24668:9:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "24683:4:66", + "type": "" + } + ], + "src": "24517:419:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "24982:76:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "25036:16:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25045:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25048:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "25038:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "25038:12:66" }, - "returnParameters": { - "id": 7215, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 7214, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7268, - "src": "9673:7:34", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 7213, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9673:7:34", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } + "nodeType": "YulExpressionStatement", + "src": "25038:12:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "25005:5:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "25027:5:66" + } ], - "src": "9672:9:34" + "functionName": { + "name": "cleanup_t_bool", + "nodeType": "YulIdentifier", + "src": "25012:14:66" + }, + "nodeType": "YulFunctionCall", + "src": "25012:21:66" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "25002:2:66" }, - "scope": 7269, - "src": "9596:571:34", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - } - ], - "scope": 7270, - "src": "455:9714:34" - } - ], - "src": "0:10170:34" - }, - "legacyAST": { - "attributes": { - "absolutePath": "project:/contracts/handlers/ERC20Handler.sol", - "exportedSymbols": { - "ERC20Handler": [7269] + "nodeType": "YulFunctionCall", + "src": "25002:32:66" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "24995:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "24995:40:66" + }, + "nodeType": "YulIf", + "src": "24992:60:66" + } + ] }, - "license": null - }, - "children": [ - { - "attributes": { - "literals": ["solidity", "0.7", ".0"] + "name": "validator_revert_t_bool", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "24975:5:66", + "type": "" + } + ], + "src": "24942:116:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "25124:77:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "25134:22:66", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "25149:6:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "25143:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "25143:13:66" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "25134:5:66" + } + ] }, - "id": 6809, - "name": "PragmaDirective", - "src": "0:22:34" + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "25189:5:66" + } + ], + "functionName": { + "name": "validator_revert_t_bool", + "nodeType": "YulIdentifier", + "src": "25165:23:66" + }, + "nodeType": "YulFunctionCall", + "src": "25165:30:66" + }, + "nodeType": "YulExpressionStatement", + "src": "25165:30:66" + } + ] }, - { - "attributes": { - "literals": ["experimental", "ABIEncoderV2"] + "name": "abi_decode_t_bool_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "25102:6:66", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "25110:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "25118:5:66", + "type": "" + } + ], + "src": "25064:137:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "25281:271:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "25327:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "25329:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "25329:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "25329:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "25302:7:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25311:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "25298:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "25298:23:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25323:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "25294:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "25294:32:66" + }, + "nodeType": "YulIf", + "src": "25291:119:66" }, - "id": 6810, - "name": "PragmaDirective", - "src": "23:33:34" - }, - { - "attributes": { - "SourceUnit": 8246, - "absolutePath": "project:/contracts/interfaces/IDepositExecute.sol", - "file": "../interfaces/IDepositExecute.sol", - "scope": 7270, - "symbolAliases": [null], - "unitAlias": "" - }, - "id": 6811, - "name": "ImportDirective", - "src": "58:43:34" - }, - { - "attributes": { - "SourceUnit": 8210, - "absolutePath": "project:/contracts/handlers/HandlerHelpers.sol", - "file": "./HandlerHelpers.sol", - "scope": 7270, - "symbolAliases": [null], - "unitAlias": "" - }, - "id": 6812, - "name": "ImportDirective", - "src": "102:30:34" - }, - { - "attributes": { - "SourceUnit": 5943, - "absolutePath": "project:/contracts/ERC20Safe.sol", - "file": "../ERC20Safe.sol", - "scope": 7270, - "symbolAliases": [null], - "unitAlias": "" - }, - "id": 6813, - "name": "ImportDirective", - "src": "133:26:34" - }, - { - "attributes": { - "SourceUnit": 1074, - "absolutePath": "@openzeppelin/contracts/presets/ERC20PresetMinterPauser.sol", - "file": "@openzeppelin/contracts/presets/ERC20PresetMinterPauser.sol", - "scope": 7270, - "symbolAliases": [null], - "unitAlias": "" - }, - "id": 6814, - "name": "ImportDirective", - "src": "160:69:34" + { + "nodeType": "YulBlock", + "src": "25420:125:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "25435:15:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25449:1:66", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "25439:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "25464:71:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25507:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "25518:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25503:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "25503:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "25527:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_bool_fromMemory", + "nodeType": "YulIdentifier", + "src": "25474:28:66" + }, + "nodeType": "YulFunctionCall", + "src": "25474:61:66" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "25464:6:66" + } + ] + } + ] + } + ] }, - { - "attributes": { - "SourceUnit": 938, - "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol", - "file": "@openzeppelin/contracts/math/SafeMath.sol", - "scope": 7270, - "symbolAliases": [null], - "unitAlias": "" - }, - "id": 6815, - "name": "ImportDirective", - "src": "230:51:34" + "name": "abi_decode_tuple_t_bool_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "25251:9:66", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "25262:7:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "25274:6:66", + "type": "" + } + ], + "src": "25207:345:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "25664:76:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "25686:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25694:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25682:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "25682:14:66" + }, + { + "hexValue": "45524332303a206f7065726174696f6e20646964206e6f742073756363656564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "25698:34:66", + "type": "", + "value": "ERC20: operation did not succeed" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25675:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "25675:58:66" + }, + "nodeType": "YulExpressionStatement", + "src": "25675:58:66" + } + ] }, - { - "attributes": { - "abstract": false, - "contractDependencies": [5942, 8209, 8245, 8283], - "contractKind": "contract", - "fullyImplemented": true, - "linearizedBaseContracts": [7269, 5942, 8209, 8283, 8245], - "name": "ERC20Handler", - "scope": 7270 + "name": "store_literal_in_memory_0e070c5d84d2ce64f06a55372ede71bea348c7746469ec289c4aba299bc05fdc", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "25656:6:66", + "type": "" + } + ], + "src": "25558:182:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "25892:220:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "25902:74:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "25968:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25973:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "25909:58:66" + }, + "nodeType": "YulFunctionCall", + "src": "25909:67:66" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "25902:3:66" + } + ] }, - "children": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "26074:3:66" + } + ], + "functionName": { + "name": "store_literal_in_memory_0e070c5d84d2ce64f06a55372ede71bea348c7746469ec289c4aba299bc05fdc", + "nodeType": "YulIdentifier", + "src": "25985:88:66" + }, + "nodeType": "YulFunctionCall", + "src": "25985:93:66" + }, + "nodeType": "YulExpressionStatement", + "src": "25985:93:66" + }, + { + "nodeType": "YulAssignment", + "src": "26087:19:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "26098:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26103:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26094:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "26094:12:66" + }, + "variableNames": [ { - "attributes": { - "text": "@title Handles ERC20 deposits and deposit executions.\n@author ChainSafe Systems.\n@notice This contract is intended to be used with the Bridge contract." - }, - "id": 6816, - "name": "StructuredDocumentation", - "src": "283:171:34" + "name": "end", + "nodeType": "YulIdentifier", + "src": "26087:3:66" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_0e070c5d84d2ce64f06a55372ede71bea348c7746469ec289c4aba299bc05fdc_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "25880:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "25888:3:66", + "type": "" + } + ], + "src": "25746:366:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "26289:248:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "26299:26:66", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26311:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26322:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26307:3:66" }, + "nodeType": "YulFunctionCall", + "src": "26307:18:66" + }, + "variableNames": [ { - "attributes": { - "arguments": null + "name": "tail", + "nodeType": "YulIdentifier", + "src": "26299:4:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26346:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26357:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26342:3:66" }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "IDepositExecute", - "referencedDeclaration": 8245, - "type": "contract IDepositExecute" - }, - "id": 6817, - "name": "UserDefinedTypeName", - "src": "480:15:34" - } + "nodeType": "YulFunctionCall", + "src": "26342:17:66" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "26365:4:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26371:9:66" + } ], - "id": 6818, - "name": "InheritanceSpecifier", - "src": "480:15:34" + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "26361:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "26361:20:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26335:6:66" }, + "nodeType": "YulFunctionCall", + "src": "26335:47:66" + }, + "nodeType": "YulExpressionStatement", + "src": "26335:47:66" + }, + { + "nodeType": "YulAssignment", + "src": "26391:139:66", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "26525:4:66" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_0e070c5d84d2ce64f06a55372ede71bea348c7746469ec289c4aba299bc05fdc_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "26399:124:66" + }, + "nodeType": "YulFunctionCall", + "src": "26399:131:66" + }, + "variableNames": [ { - "attributes": { - "arguments": null + "name": "tail", + "nodeType": "YulIdentifier", + "src": "26391:4:66" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_0e070c5d84d2ce64f06a55372ede71bea348c7746469ec289c4aba299bc05fdc__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "26269:9:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "26284:4:66", + "type": "" + } + ], + "src": "26118:419:66" + } + ] + }, + "contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_bytes32(value) {\n if iszero(eq(value, cleanup_t_bytes32(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes32(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes32(value)\n }\n\n function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function cleanup_t_uint8(value) -> cleaned {\n cleaned := and(value, 0xff)\n }\n\n function validator_revert_t_uint8(value) {\n if iszero(eq(value, cleanup_t_uint8(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint8(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint8(value)\n }\n\n function cleanup_t_uint64(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffff)\n }\n\n function validator_revert_t_uint64(value) {\n if iszero(eq(value, cleanup_t_uint64(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint64(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint64(value)\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() {\n revert(0, 0)\n }\n\n function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n revert(0, 0)\n }\n\n // bytes\n function abi_decode_t_bytes_calldata_ptr(offset, end) -> arrayPos, length {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n arrayPos := add(offset, 0x20)\n if gt(add(arrayPos, mul(length, 0x01)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n }\n\n function abi_decode_tuple_t_bytes32t_uint8t_uint64t_addresst_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5 {\n if slt(sub(dataEnd, headStart), 160) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint8(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint64(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 128))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value4, value5 := abi_decode_t_bytes_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint8t_uint64(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint8(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint64(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_uint8_to_t_uint8_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint8(value))\n }\n\n function abi_encode_t_bytes32_to_t_bytes32_fromStack(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function array_length_t_bytes_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function copy_memory_to_memory_with_cleanup(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_address_t_uint8_t_uint8_t_bytes32_t_bytes_memory_ptr_t_address_t_uint256__to_t_address_t_uint8_t_uint8_t_bytes32_t_bytes_memory_ptr_t_address_t_uint256__fromStack_reversed(headStart , value6, value5, value4, value3, value2, value1, value0) -> tail {\n tail := add(headStart, 224)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint8_to_t_uint8_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint8_to_t_uint8_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value3, add(headStart, 96))\n\n mstore(add(headStart, 128), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value4, tail)\n\n abi_encode_t_address_to_t_address_fromStack(value5, add(headStart, 160))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value6, add(headStart, 192))\n\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint64t_uint8(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint64(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint8(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_address_to_t_address(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_t_uint8_to_t_uint8(value, pos) {\n mstore(pos, cleanup_t_uint8(value))\n }\n\n function abi_encode_t_bytes32_to_t_bytes32(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_t_uint256_to_t_uint256(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n // struct ERC20Handler.DepositRecord -> struct ERC20Handler.DepositRecord\n function abi_encode_t_struct$_DepositRecord_$2056_memory_ptr_to_t_struct$_DepositRecord_$2056_memory_ptr_fromStack(value, pos) -> end {\n let tail := add(pos, 0xe0)\n\n {\n // _tokenAddress\n\n let memberValue0 := mload(add(value, 0x00))\n abi_encode_t_address_to_t_address(memberValue0, add(pos, 0x00))\n }\n\n {\n // _lenDestinationRecipientAddress\n\n let memberValue0 := mload(add(value, 0x20))\n abi_encode_t_uint8_to_t_uint8(memberValue0, add(pos, 0x20))\n }\n\n {\n // _destinationChainID\n\n let memberValue0 := mload(add(value, 0x40))\n abi_encode_t_uint8_to_t_uint8(memberValue0, add(pos, 0x40))\n }\n\n {\n // _resourceID\n\n let memberValue0 := mload(add(value, 0x60))\n abi_encode_t_bytes32_to_t_bytes32(memberValue0, add(pos, 0x60))\n }\n\n {\n // _destinationRecipientAddress\n\n let memberValue0 := mload(add(value, 0x80))\n\n mstore(add(pos, 0x80), sub(tail, pos))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr(memberValue0, tail)\n\n }\n\n {\n // _depositer\n\n let memberValue0 := mload(add(value, 0xa0))\n abi_encode_t_address_to_t_address(memberValue0, add(pos, 0xa0))\n }\n\n {\n // _amount\n\n let memberValue0 := mload(add(value, 0xc0))\n abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0xc0))\n }\n\n end := tail\n }\n\n function abi_encode_tuple_t_struct$_DepositRecord_$2056_memory_ptr__to_t_struct$_DepositRecord_$2056_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_struct$_DepositRecord_$2056_memory_ptr_to_t_struct$_DepositRecord_$2056_memory_ptr_fromStack(value0, tail)\n\n }\n\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_bytes32t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value1, value2 := abi_decode_t_bytes_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function store_literal_in_memory_d6f36190bb0602e32e72016fc9d55735c428c14ee06e9999974578d6c009c7ad(memPtr) {\n\n mstore(add(memPtr, 0), \"provided tokenAddress is not whi\")\n\n mstore(add(memPtr, 32), \"telisted\")\n\n }\n\n function abi_encode_t_stringliteral_d6f36190bb0602e32e72016fc9d55735c428c14ee06e9999974578d6c009c7ad_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 40)\n store_literal_in_memory_d6f36190bb0602e32e72016fc9d55735c428c14ee06e9999974578d6c009c7ad(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_d6f36190bb0602e32e72016fc9d55735c428c14ee06e9999974578d6c009c7ad__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_d6f36190bb0602e32e72016fc9d55735c428c14ee06e9999974578d6c009c7ad_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function array_dataslot_t_bytes_storage(ptr) -> data {\n data := ptr\n\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n\n }\n\n function divide_by_32_ceil(value) -> result {\n result := div(add(value, 31), 32)\n }\n\n function shift_left_dynamic(bits, value) -> newValue {\n newValue :=\n\n shl(bits, value)\n\n }\n\n function update_byte_slice_dynamic32(value, shiftBytes, toInsert) -> result {\n let shiftBits := mul(shiftBytes, 8)\n let mask := shift_left_dynamic(shiftBits, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n toInsert := shift_left_dynamic(shiftBits, toInsert)\n value := and(value, not(mask))\n result := or(value, and(toInsert, mask))\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint256_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_uint256(value)))\n }\n\n function prepare_store_t_uint256(value) -> ret {\n ret := value\n }\n\n function update_storage_value_t_uint256_to_t_uint256(slot, offset, value_0) {\n let convertedValue_0 := convert_t_uint256_to_t_uint256(value_0)\n sstore(slot, update_byte_slice_dynamic32(sload(slot), offset, prepare_store_t_uint256(convertedValue_0)))\n }\n\n function zero_value_for_split_t_uint256() -> ret {\n ret := 0\n }\n\n function storage_set_to_zero_t_uint256(slot, offset) {\n let zero_0 := zero_value_for_split_t_uint256()\n update_storage_value_t_uint256_to_t_uint256(slot, offset, zero_0)\n }\n\n function clear_storage_range_t_bytes1(start, end) {\n for {} lt(start, end) { start := add(start, 1) }\n {\n storage_set_to_zero_t_uint256(start, 0)\n }\n }\n\n function clean_up_bytearray_end_slots_t_bytes_storage(array, len, startIndex) {\n\n if gt(len, 31) {\n let dataArea := array_dataslot_t_bytes_storage(array)\n let deleteStart := add(dataArea, divide_by_32_ceil(startIndex))\n // If we are clearing array to be short byte array, we want to clear only data starting from array data area.\n if lt(startIndex, 32) { deleteStart := dataArea }\n clear_storage_range_t_bytes1(deleteStart, add(dataArea, divide_by_32_ceil(len)))\n }\n\n }\n\n function shift_right_unsigned_dynamic(bits, value) -> newValue {\n newValue :=\n\n shr(bits, value)\n\n }\n\n function mask_bytes_dynamic(data, bytes) -> result {\n let mask := not(shift_right_unsigned_dynamic(mul(8, bytes), not(0)))\n result := and(data, mask)\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used {\n // we want to save only elements that are part of the array after resizing\n // others should be set to zero\n data := mask_bytes_dynamic(data, len)\n used := or(data, mul(2, len))\n }\n function copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage(slot, src) {\n\n let newLen := array_length_t_bytes_memory_ptr(src)\n // Make sure array length is sane\n if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n\n let oldLen := extract_byte_array_length(sload(slot))\n\n // potentially truncate data\n clean_up_bytearray_end_slots_t_bytes_storage(slot, oldLen, newLen)\n\n let srcOffset := 0\n\n srcOffset := 0x20\n\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(0x1f))\n\n let dstPtr := array_dataslot_t_bytes_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, 0x20) } {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, 32)\n }\n if lt(loopEnd, newLen) {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, mask_bytes_dynamic(lastValue, and(newLen, 0x1f)))\n }\n sstore(slot, add(mul(newLen, 2), 1))\n }\n default {\n let value := 0\n if newLen {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n\n function store_literal_in_memory_0febc0fc8991eb26dfaaceeb4d73d25b76da338550ed76c60410fec84388058e(memPtr) {\n\n mstore(add(memPtr, 0), \"sender must be bridge contract\")\n\n }\n\n function abi_encode_t_stringliteral_0febc0fc8991eb26dfaaceeb4d73d25b76da338550ed76c60410fec84388058e_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 30)\n store_literal_in_memory_0febc0fc8991eb26dfaaceeb4d73d25b76da338550ed76c60410fec84388058e(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_0febc0fc8991eb26dfaaceeb4d73d25b76da338550ed76c60410fec84388058e__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_0febc0fc8991eb26dfaaceeb4d73d25b76da338550ed76c60410fec84388058e_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_2daab49254b4a5228983fbc316d7992ab0064c3e34fa43dd7fbf9d5c4fe8b0da(memPtr) {\n\n mstore(add(memPtr, 0), \"provided contract is not whiteli\")\n\n mstore(add(memPtr, 32), \"sted\")\n\n }\n\n function abi_encode_t_stringliteral_2daab49254b4a5228983fbc316d7992ab0064c3e34fa43dd7fbf9d5c4fe8b0da_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 36)\n store_literal_in_memory_2daab49254b4a5228983fbc316d7992ab0064c3e34fa43dd7fbf9d5c4fe8b0da(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_2daab49254b4a5228983fbc316d7992ab0064c3e34fa43dd7fbf9d5c4fe8b0da__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_2daab49254b4a5228983fbc316d7992ab0064c3e34fa43dd7fbf9d5c4fe8b0da_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, length)\n }\n\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value0) -> end {\n\n pos := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value0, pos)\n\n end := pos\n }\n\n function store_literal_in_memory_3576d6dfb5a800b5f7598d3cc3220135845acd27db3901a5c3c655559195efba(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC20: call failed\")\n\n }\n\n function abi_encode_t_stringliteral_3576d6dfb5a800b5f7598d3cc3220135845acd27db3901a5c3c655559195efba_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 18)\n store_literal_in_memory_3576d6dfb5a800b5f7598d3cc3220135845acd27db3901a5c3c655559195efba(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_3576d6dfb5a800b5f7598d3cc3220135845acd27db3901a5c3c655559195efba__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_3576d6dfb5a800b5f7598d3cc3220135845acd27db3901a5c3c655559195efba_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function validator_revert_t_bool(value) {\n if iszero(eq(value, cleanup_t_bool(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bool_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_bool(value)\n }\n\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bool_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function store_literal_in_memory_0e070c5d84d2ce64f06a55372ede71bea348c7746469ec289c4aba299bc05fdc(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC20: operation did not succeed\")\n\n }\n\n function abi_encode_t_stringliteral_0e070c5d84d2ce64f06a55372ede71bea348c7746469ec289c4aba299bc05fdc_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 32)\n store_literal_in_memory_0e070c5d84d2ce64f06a55372ede71bea348c7746469ec289c4aba299bc05fdc(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_0e070c5d84d2ce64f06a55372ede71bea348c7746469ec289c4aba299bc05fdc__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_0e070c5d84d2ce64f06a55372ede71bea348c7746469ec289c4aba299bc05fdc_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n}\n", + "id": 66, + "language": "Yul", + "name": "#utility.yul" + } + ], + "sourceMap": "344:8279:20:-:0;;;1785:816;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2044:24;:31;2015:18;:25;:60;2007:146;;;;;;;;;;;;:::i;:::-;;;;;;;;;2183:13;2166:14;;:30;;;;;;;;;;;;;;;;;;2209:20;2232:18;:25;2209:48;;2273:9;2268:134;2292:12;2288:1;:16;2268:134;;;2326:64;2339:18;2358:1;2339:21;;;;;;;;:::i;:::-;;;;;;;;2362:24;2387:1;2362:27;;;;;;;;:::i;:::-;;;;;;;;2326:12;;;:64;;:::i;:::-;2306:3;;;;;:::i;:::-;;;;2268:134;;;;2414:21;2438:25;:32;2414:56;;2486:9;2481:113;2505:13;2501:1;:17;2481:113;;;2540:42;2553:25;2579:1;2553:28;;;;;;;;:::i;:::-;;;;;;;;2540:12;;;:42;;:::i;:::-;2520:3;;;;;:::i;:::-;;;;2481:113;;;;1996:605;;1785:816;;;;344:8279;;2544:287:23;2679:15;2631:33;:45;2665:10;2631:45;;;;;;;;;;;;:63;;;;;;;;;;;;;;;;;;2758:10;2705:33;:50;2739:15;2705:50;;;;;;;;;;;;;;;:63;;;;2819:4;2781:18;:35;2800:15;2781:35;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;2544:287;;:::o;2839:203::-;2914:18;:35;2933:15;2914:35;;;;;;;;;;;;;;;;;;;;;;;;;2906:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;3030:4;3001:9;:26;3011:15;3001:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;2839:203;:::o;7:75:66:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:143::-;753:5;784:6;778:13;769:22;;800:33;827:5;800:33;:::i;:::-;696:143;;;;:::o;845:117::-;954:1;951;944:12;968:102;1009:6;1060:2;1056:7;1051:2;1044:5;1040:14;1036:28;1026:38;;968:102;;;:::o;1076:180::-;1124:77;1121:1;1114:88;1221:4;1218:1;1211:15;1245:4;1242:1;1235:15;1262:281;1345:27;1367:4;1345:27;:::i;:::-;1337:6;1333:40;1475:6;1463:10;1460:22;1439:18;1427:10;1424:34;1421:62;1418:88;;;1486:18;;:::i;:::-;1418:88;1526:10;1522:2;1515:22;1305:238;1262:281;;:::o;1549:129::-;1583:6;1610:20;;:::i;:::-;1600:30;;1639:33;1667:4;1659:6;1639:33;:::i;:::-;1549:129;;;:::o;1684:311::-;1761:4;1851:18;1843:6;1840:30;1837:56;;;1873:18;;:::i;:::-;1837:56;1923:4;1915:6;1911:17;1903:25;;1983:4;1977;1973:15;1965:23;;1684:311;;;:::o;2001:117::-;2110:1;2107;2100:12;2124:77;2161:7;2190:5;2179:16;;2124:77;;;:::o;2207:122::-;2280:24;2298:5;2280:24;:::i;:::-;2273:5;2270:35;2260:63;;2319:1;2316;2309:12;2260:63;2207:122;:::o;2335:143::-;2392:5;2423:6;2417:13;2408:22;;2439:33;2466:5;2439:33;:::i;:::-;2335:143;;;;:::o;2501:732::-;2608:5;2633:81;2649:64;2706:6;2649:64;:::i;:::-;2633:81;:::i;:::-;2624:90;;2734:5;2763:6;2756:5;2749:21;2797:4;2790:5;2786:16;2779:23;;2850:4;2842:6;2838:17;2830:6;2826:30;2879:3;2871:6;2868:15;2865:122;;;2898:79;;:::i;:::-;2865:122;3013:6;2996:231;3030:6;3025:3;3022:15;2996:231;;;3105:3;3134:48;3178:3;3166:10;3134:48;:::i;:::-;3129:3;3122:61;3212:4;3207:3;3203:14;3196:21;;3072:155;3056:4;3051:3;3047:14;3040:21;;2996:231;;;3000:21;2614:619;;2501:732;;;;;:::o;3256:385::-;3338:5;3387:3;3380:4;3372:6;3368:17;3364:27;3354:122;;3395:79;;:::i;:::-;3354:122;3505:6;3499:13;3530:105;3631:3;3623:6;3616:4;3608:6;3604:17;3530:105;:::i;:::-;3521:114;;3344:297;3256:385;;;;:::o;3647:311::-;3724:4;3814:18;3806:6;3803:30;3800:56;;;3836:18;;:::i;:::-;3800:56;3886:4;3878:6;3874:17;3866:25;;3946:4;3940;3936:15;3928:23;;3647:311;;;:::o;3981:732::-;4088:5;4113:81;4129:64;4186:6;4129:64;:::i;:::-;4113:81;:::i;:::-;4104:90;;4214:5;4243:6;4236:5;4229:21;4277:4;4270:5;4266:16;4259:23;;4330:4;4322:6;4318:17;4310:6;4306:30;4359:3;4351:6;4348:15;4345:122;;;4378:79;;:::i;:::-;4345:122;4493:6;4476:231;4510:6;4505:3;4502:15;4476:231;;;4585:3;4614:48;4658:3;4646:10;4614:48;:::i;:::-;4609:3;4602:61;4692:4;4687:3;4683:14;4676:21;;4552:155;4536:4;4531:3;4527:14;4520:21;;4476:231;;;4480:21;4094:619;;3981:732;;;;;:::o;4736:385::-;4818:5;4867:3;4860:4;4852:6;4848:17;4844:27;4834:122;;4875:79;;:::i;:::-;4834:122;4985:6;4979:13;5010:105;5111:3;5103:6;5096:4;5088:6;5084:17;5010:105;:::i;:::-;5001:114;;4824:297;4736:385;;;;:::o;5127:1429::-;5299:6;5307;5315;5323;5372:3;5360:9;5351:7;5347:23;5343:33;5340:120;;;5379:79;;:::i;:::-;5340:120;5499:1;5524:64;5580:7;5571:6;5560:9;5556:22;5524:64;:::i;:::-;5514:74;;5470:128;5658:2;5647:9;5643:18;5637:25;5689:18;5681:6;5678:30;5675:117;;;5711:79;;:::i;:::-;5675:117;5816:89;5897:7;5888:6;5877:9;5873:22;5816:89;:::i;:::-;5806:99;;5608:307;5975:2;5964:9;5960:18;5954:25;6006:18;5998:6;5995:30;5992:117;;;6028:79;;:::i;:::-;5992:117;6133:89;6214:7;6205:6;6194:9;6190:22;6133:89;:::i;:::-;6123:99;;5925:307;6292:2;6281:9;6277:18;6271:25;6323:18;6315:6;6312:30;6309:117;;;6345:79;;:::i;:::-;6309:117;6450:89;6531:7;6522:6;6511:9;6507:22;6450:89;:::i;:::-;6440:99;;6242:307;5127:1429;;;;;;;:::o;6562:169::-;6646:11;6680:6;6675:3;6668:19;6720:4;6715:3;6711:14;6696:29;;6562:169;;;;:::o;6737:247::-;6877:34;6873:1;6865:6;6861:14;6854:58;6946:30;6941:2;6933:6;6929:15;6922:55;6737:247;:::o;6990:366::-;7132:3;7153:67;7217:2;7212:3;7153:67;:::i;:::-;7146:74;;7229:93;7318:3;7229:93;:::i;:::-;7347:2;7342:3;7338:12;7331:19;;6990:366;;;:::o;7362:419::-;7528:4;7566:2;7555:9;7551:18;7543:26;;7615:9;7609:4;7605:20;7601:1;7590:9;7586:17;7579:47;7643:131;7769:4;7643:131;:::i;:::-;7635:139;;7362:419;;;:::o;7787:180::-;7835:77;7832:1;7825:88;7932:4;7929:1;7922:15;7956:4;7953:1;7946:15;7973:180;8021:77;8018:1;8011:88;8118:4;8115:1;8108:15;8142:4;8139:1;8132:15;8159:77;8196:7;8225:5;8214:16;;8159:77;;;:::o;8242:233::-;8281:3;8304:24;8322:5;8304:24;:::i;:::-;8295:33;;8350:66;8343:5;8340:77;8337:103;;8420:18;;:::i;:::-;8337:103;8467:1;8460:5;8456:13;8449:20;;8242:233;;;:::o;8481:223::-;8621:34;8617:1;8609:6;8605:14;8598:58;8690:6;8685:2;8677:6;8673:15;8666:31;8481:223;:::o;8710:366::-;8852:3;8873:67;8937:2;8932:3;8873:67;:::i;:::-;8866:74;;8949:93;9038:3;8949:93;:::i;:::-;9067:2;9062:3;9058:12;9051:19;;8710:366;;;:::o;9082:419::-;9248:4;9286:2;9275:9;9271:18;9263:26;;9335:9;9329:4;9325:20;9321:1;9310:9;9306:17;9299:47;9363:131;9489:4;9363:131;:::i;:::-;9355:139;;9082:419;;;:::o;344:8279:20:-;;;;;;;", + "deployedSourceMap": "344:8279:20:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1988:122:23;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;402:69;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;319:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4554:1515:20;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;750:74;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;758:42:23;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;652:51;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;641:198:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1582:157:23;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3408:169:20;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;525:69:23;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8455:165:20;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6726:1447;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1988:122:23;842:13;:11;:13::i;:::-;2073:29:::1;2086:15;2073:12;:29::i;:::-;1988:122:::0;:::o;402:69::-;;;;;;;;;;;;;;;;;;;;;;:::o;319:29::-;;;;;;;;;;;;:::o;4554:1515:20:-;842:13:23;:11;:13::i;:::-;4775:31:20::1;4817:21;4849:34:::0;4945:4:::1;4932:18;4922:28;;4992:4;4986:11;4966:31;;5047:4;5034:18;5011:41;;5111:19;5093:16;5089:42;5083:4;5079:53;5073:4;5066:67;5327:4;5311:14;5307:25;5254:4;5180:16;5149:234;5406:20;5429:33;:45;5463:10;5429:45;;;;;;;;;;;;;;;;;;;;;5406:68;;5493:18;:32;5512:12;5493:32;;;;;;;;;;;;;;;;;;;;;;;;;5485:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;5587:9;:23;5597:12;5587:23;;;;;;;;;;;;;;;;;;;;;;;;;5583:188;;;5627:42;5637:12;5651:9;5662:6;5627:9;:42::i;:::-;5583:188;;;5702:57;5712:12;5726:9;5745:4;5752:6;5702:9;:57::i;:::-;5583:188;5835:226;;;;;;;;5863:12;5835:226;;;;;;5896:19;5835:226;;;;;;5931:18;5835:226;;;;;;5964:10;5835:226;;;;5989:16;5835:226;;;;6020:9;5835:226;;;;;;6044:6;5835:226;;::::0;5783:15:::1;:35;5799:18;5783:35;;;;;;;;;;;;;;;:49;5819:12;5783:49;;;;;;;;;;;;;;;:278;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4764:1305;;;;4554:1515:::0;;;;;;:::o;750:74::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;758:42:23:-;;;;;;;;;;;;;;;;;;;;;;:::o;652:51::-;;;;;;;;;;;;;;;;;;;;;;:::o;641:198:2:-;731:12;753;731:35;;777:54;795:5;802;817:4;824:6;777:17;:54::i;:::-;720:119;641:198;;;:::o;1582:157:23:-;842:13;:11;:13::i;:::-;1690:41:::1;1703:10;1715:15;1690:12;:41::i;:::-;1582:157:::0;;:::o;3408:169:20:-;3492:20;;:::i;:::-;3532:15;:23;3548:6;3532:23;;;;;;;;;;;;;;;:37;3556:12;3532:37;;;;;;;;;;;;;;;3525:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3408:169;;;;:::o;525:69:23:-;;;;;;;;;;;;;;;;;:::o;8455:165:20:-;842:13:23;:11;:13::i;:::-;8567:45:20::1;8580:12;8594:9;8605:6;8567:12;:45::i;:::-;8455:165:::0;;;:::o;6726:1447::-;842:13:23;:11;:13::i;:::-;6832:20:20::1;6863:41;6964:4;6951:18;6941:28;;7022:4;7016:11;6985:42;;7092:4;7079:18;7167:30;7138:27;7134:64;7128:4;7124:75;7118:4;7111:89;7553:4;7537:14;7533:25;7481:4;7396:27;7365:244;6926:694;7632:24;7667:20:::0;7690:33:::1;:45;7724:10;7690:45;;;;;;;;;;;;;;;;;;;;;7667:68;;7831:4;7802:27;7798:38;7792:45;7772:65;;7868:18;:32;7887:12;7868:32;;;;;;;;;;;;;;;;;;;;;;;;;7860:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;7962:9;:23;7972:12;7962:23;;;;;;;;;;;;;;;;;;;;;;;;;7958:208;;;8002:58;8012:12;8034:16;8026:25;;8053:6;8002:9;:58::i;:::-;7958:208;;;8093:61;8106:12;8128:16;8120:25;;8147:6;8093:12;:61::i;:::-;7958:208;6821:1352;;;;6726:1447:::0;;;:::o;883:126:23:-;952:14;;;;;;;;;;938:28;;:10;:28;;;930:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;883:126::o;2839:203::-;2914:18;:35;2933:15;2914:35;;;;;;;;;;;;;;;;;;;;;;;;;2906:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;3030:4;3001:9;:26;3011:15;3001:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;2839:203;:::o;2465:189:2:-;2557:19;2593:12;2557:49;;2617:5;:14;;;2632:5;2639:6;2617:29;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2546:108;2465:189;;;:::o;1146:215::-;1257:12;1279;1257:35;;1303:50;1321:5;1328;1335:9;1346:6;1303:17;:50::i;:::-;1246:115;1146:215;;;;:::o;3317:195::-;3418:86;3428:5;3458:27;;;3487:4;3493:2;3497:5;3435:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3418:9;:86::i;:::-;3317:195;;;;:::o;2544:287:23:-;2679:15;2631:33;:45;2665:10;2631:45;;;;;;;;;;;;:63;;;;;;;;;;;;;;;;;;2758:10;2705:33;:50;2739:15;2705:50;;;;;;;;;;;;;;;:63;;;;2819:4;2781:18;:35;2800:15;2781:35;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;2544:287;;:::o;1614:192:2:-;1713:12;1735;1713:35;;1759:39;1773:5;1780:9;1791:6;1759:13;:39::i;:::-;1702:104;1614:192;;;:::o;2035:215::-;2131:29;2187:12;2131:69;;2211:5;:10;;;2222:9;2233:6;2211:29;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2120:130;2035:215;;;:::o;3680:346::-;3760:12;3774:23;3809:5;3801:19;;3821:4;3801:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3759:67;;;;3845:7;3837:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3912:1;3892:10;:17;:21;3888:131;;;3951:10;3940:30;;;;;;;;;;;;:::i;:::-;3932:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;3888:131;3740:286;;3680:346;;:::o;2875:167::-;2958:76;2968:5;2998:23;;;3023:2;3027:5;2975:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2958:9;:76::i;:::-;2875:167;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;88:117:66:-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:329::-;900:6;949:2;937:9;928:7;924:23;920:32;917:119;;;955:79;;:::i;:::-;917:119;1075:1;1100:53;1145:7;1136:6;1125:9;1121:22;1100:53;:::i;:::-;1090:63;;1046:117;841:329;;;;:::o;1176:77::-;1213:7;1242:5;1231:16;;1176:77;;;:::o;1259:122::-;1332:24;1350:5;1332:24;:::i;:::-;1325:5;1322:35;1312:63;;1371:1;1368;1361:12;1312:63;1259:122;:::o;1387:139::-;1433:5;1471:6;1458:20;1449:29;;1487:33;1514:5;1487:33;:::i;:::-;1387:139;;;;:::o;1532:329::-;1591:6;1640:2;1628:9;1619:7;1615:23;1611:32;1608:119;;;1646:79;;:::i;:::-;1608:119;1766:1;1791:53;1836:7;1827:6;1816:9;1812:22;1791:53;:::i;:::-;1781:63;;1737:117;1532:329;;;;:::o;1867:118::-;1954:24;1972:5;1954:24;:::i;:::-;1949:3;1942:37;1867:118;;:::o;1991:222::-;2084:4;2122:2;2111:9;2107:18;2099:26;;2135:71;2203:1;2192:9;2188:17;2179:6;2135:71;:::i;:::-;1991:222;;;;:::o;2219:86::-;2254:7;2294:4;2287:5;2283:16;2272:27;;2219:86;;;:::o;2311:118::-;2382:22;2398:5;2382:22;:::i;:::-;2375:5;2372:33;2362:61;;2419:1;2416;2409:12;2362:61;2311:118;:::o;2435:135::-;2479:5;2517:6;2504:20;2495:29;;2533:31;2558:5;2533:31;:::i;:::-;2435:135;;;;:::o;2576:101::-;2612:7;2652:18;2645:5;2641:30;2630:41;;2576:101;;;:::o;2683:120::-;2755:23;2772:5;2755:23;:::i;:::-;2748:5;2745:34;2735:62;;2793:1;2790;2783:12;2735:62;2683:120;:::o;2809:137::-;2854:5;2892:6;2879:20;2870:29;;2908:32;2934:5;2908:32;:::i;:::-;2809:137;;;;:::o;2952:117::-;3061:1;3058;3051:12;3075:117;3184:1;3181;3174:12;3198:117;3307:1;3304;3297:12;3334:552;3391:8;3401:6;3451:3;3444:4;3436:6;3432:17;3428:27;3418:122;;3459:79;;:::i;:::-;3418:122;3572:6;3559:20;3549:30;;3602:18;3594:6;3591:30;3588:117;;;3624:79;;:::i;:::-;3588:117;3738:4;3730:6;3726:17;3714:29;;3792:3;3784:4;3776:6;3772:17;3762:8;3758:32;3755:41;3752:128;;;3799:79;;:::i;:::-;3752:128;3334:552;;;;;:::o;3892:1103::-;3995:6;4003;4011;4019;4027;4035;4084:3;4072:9;4063:7;4059:23;4055:33;4052:120;;;4091:79;;:::i;:::-;4052:120;4211:1;4236:53;4281:7;4272:6;4261:9;4257:22;4236:53;:::i;:::-;4226:63;;4182:117;4338:2;4364:51;4407:7;4398:6;4387:9;4383:22;4364:51;:::i;:::-;4354:61;;4309:116;4464:2;4490:52;4534:7;4525:6;4514:9;4510:22;4490:52;:::i;:::-;4480:62;;4435:117;4591:2;4617:53;4662:7;4653:6;4642:9;4638:22;4617:53;:::i;:::-;4607:63;;4562:118;4747:3;4736:9;4732:19;4719:33;4779:18;4771:6;4768:30;4765:117;;;4801:79;;:::i;:::-;4765:117;4914:64;4970:7;4961:6;4950:9;4946:22;4914:64;:::i;:::-;4896:82;;;;4690:298;3892:1103;;;;;;;;:::o;5001:468::-;5066:6;5074;5123:2;5111:9;5102:7;5098:23;5094:32;5091:119;;;5129:79;;:::i;:::-;5091:119;5249:1;5274:51;5317:7;5308:6;5297:9;5293:22;5274:51;:::i;:::-;5264:61;;5220:115;5374:2;5400:52;5444:7;5435:6;5424:9;5420:22;5400:52;:::i;:::-;5390:62;;5345:117;5001:468;;;;;:::o;5475:112::-;5558:22;5574:5;5558:22;:::i;:::-;5553:3;5546:35;5475:112;;:::o;5593:118::-;5680:24;5698:5;5680:24;:::i;:::-;5675:3;5668:37;5593:118;;:::o;5717:98::-;5768:6;5802:5;5796:12;5786:22;;5717:98;;;:::o;5821:168::-;5904:11;5938:6;5933:3;5926:19;5978:4;5973:3;5969:14;5954:29;;5821:168;;;;:::o;5995:246::-;6076:1;6086:113;6100:6;6097:1;6094:13;6086:113;;;6185:1;6180:3;6176:11;6170:18;6166:1;6161:3;6157:11;6150:39;6122:2;6119:1;6115:10;6110:15;;6086:113;;;6233:1;6224:6;6219:3;6215:16;6208:27;6057:184;5995:246;;;:::o;6247:102::-;6288:6;6339:2;6335:7;6330:2;6323:5;6319:14;6315:28;6305:38;;6247:102;;;:::o;6355:373::-;6441:3;6469:38;6501:5;6469:38;:::i;:::-;6523:70;6586:6;6581:3;6523:70;:::i;:::-;6516:77;;6602:65;6660:6;6655:3;6648:4;6641:5;6637:16;6602:65;:::i;:::-;6692:29;6714:6;6692:29;:::i;:::-;6687:3;6683:39;6676:46;;6445:283;6355:373;;;;:::o;6734:77::-;6771:7;6800:5;6789:16;;6734:77;;;:::o;6817:118::-;6904:24;6922:5;6904:24;:::i;:::-;6899:3;6892:37;6817:118;;:::o;6941:957::-;7212:4;7250:3;7239:9;7235:19;7227:27;;7264:71;7332:1;7321:9;7317:17;7308:6;7264:71;:::i;:::-;7345:68;7409:2;7398:9;7394:18;7385:6;7345:68;:::i;:::-;7423;7487:2;7476:9;7472:18;7463:6;7423:68;:::i;:::-;7501:72;7569:2;7558:9;7554:18;7545:6;7501:72;:::i;:::-;7621:9;7615:4;7611:20;7605:3;7594:9;7590:19;7583:49;7649:76;7720:4;7711:6;7649:76;:::i;:::-;7641:84;;7735:73;7803:3;7792:9;7788:19;7779:6;7735:73;:::i;:::-;7818;7886:3;7875:9;7871:19;7862:6;7818:73;:::i;:::-;6941:957;;;;;;;;;;:::o;7904:90::-;7938:7;7981:5;7974:13;7967:21;7956:32;;7904:90;;;:::o;8000:109::-;8081:21;8096:5;8081:21;:::i;:::-;8076:3;8069:34;8000:109;;:::o;8115:210::-;8202:4;8240:2;8229:9;8225:18;8217:26;;8253:65;8315:1;8304:9;8300:17;8291:6;8253:65;:::i;:::-;8115:210;;;;:::o;8331:122::-;8404:24;8422:5;8404:24;:::i;:::-;8397:5;8394:35;8384:63;;8443:1;8440;8433:12;8384:63;8331:122;:::o;8459:139::-;8505:5;8543:6;8530:20;8521:29;;8559:33;8586:5;8559:33;:::i;:::-;8459:139;;;;:::o;8604:619::-;8681:6;8689;8697;8746:2;8734:9;8725:7;8721:23;8717:32;8714:119;;;8752:79;;:::i;:::-;8714:119;8872:1;8897:53;8942:7;8933:6;8922:9;8918:22;8897:53;:::i;:::-;8887:63;;8843:117;8999:2;9025:53;9070:7;9061:6;9050:9;9046:22;9025:53;:::i;:::-;9015:63;;8970:118;9127:2;9153:53;9198:7;9189:6;9178:9;9174:22;9153:53;:::i;:::-;9143:63;;9098:118;8604:619;;;;;:::o;9229:474::-;9297:6;9305;9354:2;9342:9;9333:7;9329:23;9325:32;9322:119;;;9360:79;;:::i;:::-;9322:119;9480:1;9505:53;9550:7;9541:6;9530:9;9526:22;9505:53;:::i;:::-;9495:63;;9451:117;9607:2;9633:53;9678:7;9669:6;9658:9;9654:22;9633:53;:::i;:::-;9623:63;;9578:118;9229:474;;;;;:::o;9709:468::-;9774:6;9782;9831:2;9819:9;9810:7;9806:23;9802:32;9799:119;;;9837:79;;:::i;:::-;9799:119;9957:1;9982:52;10026:7;10017:6;10006:9;10002:22;9982:52;:::i;:::-;9972:62;;9928:116;10083:2;10109:51;10152:7;10143:6;10132:9;10128:22;10109:51;:::i;:::-;10099:61;;10054:116;9709:468;;;;;:::o;10183:108::-;10260:24;10278:5;10260:24;:::i;:::-;10255:3;10248:37;10183:108;;:::o;10297:102::-;10370:22;10386:5;10370:22;:::i;:::-;10365:3;10358:35;10297:102;;:::o;10405:108::-;10482:24;10500:5;10482:24;:::i;:::-;10477:3;10470:37;10405:108;;:::o;10519:158::-;10592:11;10626:6;10621:3;10614:19;10666:4;10661:3;10657:14;10642:29;;10519:158;;;;:::o;10683:353::-;10759:3;10787:38;10819:5;10787:38;:::i;:::-;10841:60;10894:6;10889:3;10841:60;:::i;:::-;10834:67;;10910:65;10968:6;10963:3;10956:4;10949:5;10945:16;10910:65;:::i;:::-;11000:29;11022:6;11000:29;:::i;:::-;10995:3;10991:39;10984:46;;10763:273;10683:353;;;;:::o;11042:108::-;11119:24;11137:5;11119:24;:::i;:::-;11114:3;11107:37;11042:108;;:::o;11234:1569::-;11365:3;11401:4;11396:3;11392:14;11497:4;11490:5;11486:16;11480:23;11516:63;11573:4;11568:3;11564:14;11550:12;11516:63;:::i;:::-;11416:173;11698:4;11691:5;11687:16;11681:23;11717:59;11770:4;11765:3;11761:14;11747:12;11717:59;:::i;:::-;11599:187;11883:4;11876:5;11872:16;11866:23;11902:59;11955:4;11950:3;11946:14;11932:12;11902:59;:::i;:::-;11796:175;12060:4;12053:5;12049:16;12043:23;12079:63;12136:4;12131:3;12127:14;12113:12;12079:63;:::i;:::-;11981:171;12258:4;12251:5;12247:16;12241:23;12311:3;12305:4;12301:14;12294:4;12289:3;12285:14;12278:38;12337:71;12403:4;12389:12;12337:71;:::i;:::-;12329:79;;12162:257;12507:4;12500:5;12496:16;12490:23;12526:63;12583:4;12578:3;12574:14;12560:12;12526:63;:::i;:::-;12429:170;12684:4;12677:5;12673:16;12667:23;12703:63;12760:4;12755:3;12751:14;12737:12;12703:63;:::i;:::-;12609:167;12793:4;12786:11;;11370:1433;11234:1569;;;;:::o;12809:397::-;12964:4;13002:2;12991:9;12987:18;12979:26;;13051:9;13045:4;13041:20;13037:1;13026:9;13022:17;13015:47;13079:120;13194:4;13185:6;13079:120;:::i;:::-;13071:128;;12809:397;;;;:::o;13212:222::-;13305:4;13343:2;13332:9;13328:18;13320:26;;13356:71;13424:1;13413:9;13409:17;13400:6;13356:71;:::i;:::-;13212:222;;;;:::o;13440:672::-;13519:6;13527;13535;13584:2;13572:9;13563:7;13559:23;13555:32;13552:119;;;13590:79;;:::i;:::-;13552:119;13710:1;13735:53;13780:7;13771:6;13760:9;13756:22;13735:53;:::i;:::-;13725:63;;13681:117;13865:2;13854:9;13850:18;13837:32;13896:18;13888:6;13885:30;13882:117;;;13918:79;;:::i;:::-;13882:117;14031:64;14087:7;14078:6;14067:9;14063:22;14031:64;:::i;:::-;14013:82;;;;13808:297;13440:672;;;;;:::o;14118:169::-;14202:11;14236:6;14231:3;14224:19;14276:4;14271:3;14267:14;14252:29;;14118:169;;;;:::o;14293:227::-;14433:34;14429:1;14421:6;14417:14;14410:58;14502:10;14497:2;14489:6;14485:15;14478:35;14293:227;:::o;14526:366::-;14668:3;14689:67;14753:2;14748:3;14689:67;:::i;:::-;14682:74;;14765:93;14854:3;14765:93;:::i;:::-;14883:2;14878:3;14874:12;14867:19;;14526:366;;;:::o;14898:419::-;15064:4;15102:2;15091:9;15087:18;15079:26;;15151:9;15145:4;15141:20;15137:1;15126:9;15122:17;15115:47;15179:131;15305:4;15179:131;:::i;:::-;15171:139;;14898:419;;;:::o;15323:180::-;15371:77;15368:1;15361:88;15468:4;15465:1;15458:15;15492:4;15489:1;15482:15;15509:180;15557:77;15554:1;15547:88;15654:4;15651:1;15644:15;15678:4;15675:1;15668:15;15695:320;15739:6;15776:1;15770:4;15766:12;15756:22;;15823:1;15817:4;15813:12;15844:18;15834:81;;15900:4;15892:6;15888:17;15878:27;;15834:81;15962:2;15954:6;15951:14;15931:18;15928:38;15925:84;;15981:18;;:::i;:::-;15925:84;15746:269;15695:320;;;:::o;16021:140::-;16069:4;16092:3;16084:11;;16115:3;16112:1;16105:14;16149:4;16146:1;16136:18;16128:26;;16021:140;;;:::o;16167:93::-;16204:6;16251:2;16246;16239:5;16235:14;16231:23;16221:33;;16167:93;;;:::o;16266:107::-;16310:8;16360:5;16354:4;16350:16;16329:37;;16266:107;;;;:::o;16379:393::-;16448:6;16498:1;16486:10;16482:18;16521:97;16551:66;16540:9;16521:97;:::i;:::-;16639:39;16669:8;16658:9;16639:39;:::i;:::-;16627:51;;16711:4;16707:9;16700:5;16696:21;16687:30;;16760:4;16750:8;16746:19;16739:5;16736:30;16726:40;;16455:317;;16379:393;;;;;:::o;16778:60::-;16806:3;16827:5;16820:12;;16778:60;;;:::o;16844:142::-;16894:9;16927:53;16945:34;16954:24;16972:5;16954:24;:::i;:::-;16945:34;:::i;:::-;16927:53;:::i;:::-;16914:66;;16844:142;;;:::o;16992:75::-;17035:3;17056:5;17049:12;;16992:75;;;:::o;17073:269::-;17183:39;17214:7;17183:39;:::i;:::-;17244:91;17293:41;17317:16;17293:41;:::i;:::-;17285:6;17278:4;17272:11;17244:91;:::i;:::-;17238:4;17231:105;17149:193;17073:269;;;:::o;17348:73::-;17393:3;17348:73;:::o;17427:189::-;17504:32;;:::i;:::-;17545:65;17603:6;17595;17589:4;17545:65;:::i;:::-;17480:136;17427:189;;:::o;17622:186::-;17682:120;17699:3;17692:5;17689:14;17682:120;;;17753:39;17790:1;17783:5;17753:39;:::i;:::-;17726:1;17719:5;17715:13;17706:22;;17682:120;;;17622:186;;:::o;17814:541::-;17914:2;17909:3;17906:11;17903:445;;;17948:37;17979:5;17948:37;:::i;:::-;18031:29;18049:10;18031:29;:::i;:::-;18021:8;18017:44;18214:2;18202:10;18199:18;18196:49;;;18235:8;18220:23;;18196:49;18258:80;18314:22;18332:3;18314:22;:::i;:::-;18304:8;18300:37;18287:11;18258:80;:::i;:::-;17918:430;;17903:445;17814:541;;;:::o;18361:117::-;18415:8;18465:5;18459:4;18455:16;18434:37;;18361:117;;;;:::o;18484:169::-;18528:6;18561:51;18609:1;18605:6;18597:5;18594:1;18590:13;18561:51;:::i;:::-;18557:56;18642:4;18636;18632:15;18622:25;;18535:118;18484:169;;;;:::o;18658:295::-;18734:4;18880:29;18905:3;18899:4;18880:29;:::i;:::-;18872:37;;18942:3;18939:1;18935:11;18929:4;18926:21;18918:29;;18658:295;;;;:::o;18958:1390::-;19073:36;19105:3;19073:36;:::i;:::-;19174:18;19166:6;19163:30;19160:56;;;19196:18;;:::i;:::-;19160:56;19240:38;19272:4;19266:11;19240:38;:::i;:::-;19325:66;19384:6;19376;19370:4;19325:66;:::i;:::-;19418:1;19442:4;19429:17;;19474:2;19466:6;19463:14;19491:1;19486:617;;;;20147:1;20164:6;20161:77;;;20213:9;20208:3;20204:19;20198:26;20189:35;;20161:77;20264:67;20324:6;20317:5;20264:67;:::i;:::-;20258:4;20251:81;20120:222;19456:886;;19486:617;19538:4;19534:9;19526:6;19522:22;19572:36;19603:4;19572:36;:::i;:::-;19630:1;19644:208;19658:7;19655:1;19652:14;19644:208;;;19737:9;19732:3;19728:19;19722:26;19714:6;19707:42;19788:1;19780:6;19776:14;19766:24;;19835:2;19824:9;19820:18;19807:31;;19681:4;19678:1;19674:12;19669:17;;19644:208;;;19880:6;19871:7;19868:19;19865:179;;;19938:9;19933:3;19929:19;19923:26;19981:48;20023:4;20015:6;20011:17;20000:9;19981:48;:::i;:::-;19973:6;19966:64;19888:156;19865:179;20090:1;20086;20078:6;20074:14;20070:22;20064:4;20057:36;19493:610;;;19456:886;;19048:1300;;;18958:1390;;:::o;20354:180::-;20494:32;20490:1;20482:6;20478:14;20471:56;20354:180;:::o;20540:366::-;20682:3;20703:67;20767:2;20762:3;20703:67;:::i;:::-;20696:74;;20779:93;20868:3;20779:93;:::i;:::-;20897:2;20892:3;20888:12;20881:19;;20540:366;;;:::o;20912:419::-;21078:4;21116:2;21105:9;21101:18;21093:26;;21165:9;21159:4;21155:20;21151:1;21140:9;21136:17;21129:47;21193:131;21319:4;21193:131;:::i;:::-;21185:139;;20912:419;;;:::o;21337:223::-;21477:34;21473:1;21465:6;21461:14;21454:58;21546:6;21541:2;21533:6;21529:15;21522:31;21337:223;:::o;21566:366::-;21708:3;21729:67;21793:2;21788:3;21729:67;:::i;:::-;21722:74;;21805:93;21894:3;21805:93;:::i;:::-;21923:2;21918:3;21914:12;21907:19;;21566:366;;;:::o;21938:419::-;22104:4;22142:2;22131:9;22127:18;22119:26;;22191:9;22185:4;22181:20;22177:1;22166:9;22162:17;22155:47;22219:131;22345:4;22219:131;:::i;:::-;22211:139;;21938:419;;;:::o;22363:332::-;22484:4;22522:2;22511:9;22507:18;22499:26;;22535:71;22603:1;22592:9;22588:17;22579:6;22535:71;:::i;:::-;22616:72;22684:2;22673:9;22669:18;22660:6;22616:72;:::i;:::-;22363:332;;;;;:::o;22701:442::-;22850:4;22888:2;22877:9;22873:18;22865:26;;22901:71;22969:1;22958:9;22954:17;22945:6;22901:71;:::i;:::-;22982:72;23050:2;23039:9;23035:18;23026:6;22982:72;:::i;:::-;23064;23132:2;23121:9;23117:18;23108:6;23064:72;:::i;:::-;22701:442;;;;;;:::o;23149:147::-;23250:11;23287:3;23272:18;;23149:147;;;;:::o;23302:386::-;23406:3;23434:38;23466:5;23434:38;:::i;:::-;23488:88;23569:6;23564:3;23488:88;:::i;:::-;23481:95;;23585:65;23643:6;23638:3;23631:4;23624:5;23620:16;23585:65;:::i;:::-;23675:6;23670:3;23666:16;23659:23;;23410:278;23302:386;;;;:::o;23694:271::-;23824:3;23846:93;23935:3;23926:6;23846:93;:::i;:::-;23839:100;;23956:3;23949:10;;23694:271;;;;:::o;23971:168::-;24111:20;24107:1;24099:6;24095:14;24088:44;23971:168;:::o;24145:366::-;24287:3;24308:67;24372:2;24367:3;24308:67;:::i;:::-;24301:74;;24384:93;24473:3;24384:93;:::i;:::-;24502:2;24497:3;24493:12;24486:19;;24145:366;;;:::o;24517:419::-;24683:4;24721:2;24710:9;24706:18;24698:26;;24770:9;24764:4;24760:20;24756:1;24745:9;24741:17;24734:47;24798:131;24924:4;24798:131;:::i;:::-;24790:139;;24517:419;;;:::o;24942:116::-;25012:21;25027:5;25012:21;:::i;:::-;25005:5;25002:32;24992:60;;25048:1;25045;25038:12;24992:60;24942:116;:::o;25064:137::-;25118:5;25149:6;25143:13;25134:22;;25165:30;25189:5;25165:30;:::i;:::-;25064:137;;;;:::o;25207:345::-;25274:6;25323:2;25311:9;25302:7;25298:23;25294:32;25291:119;;;25329:79;;:::i;:::-;25291:119;25449:1;25474:61;25527:7;25518:6;25507:9;25503:22;25474:61;:::i;:::-;25464:71;;25420:125;25207:345;;;;:::o;25558:182::-;25698:34;25694:1;25686:6;25682:14;25675:58;25558:182;:::o;25746:366::-;25888:3;25909:67;25973:2;25968:3;25909:67;:::i;:::-;25902:74;;25985:93;26074:3;25985:93;:::i;:::-;26103:2;26098:3;26094:12;26087:19;;25746:366;;;:::o;26118:419::-;26284:4;26322:2;26311:9;26307:18;26299:26;;26371:9;26365:4;26361:20;26357:1;26346:9;26342:17;26335:47;26399:131;26525:4;26399:131;:::i;:::-;26391:139;;26118:419;;;:::o", + "source": "// SPDX-License-Identifier: MIT\r\npragma solidity 0.8.19;\r\n\r\nimport \"../interfaces/IDepositExecute.sol\";\r\nimport \"./HandlerHelpers.sol\";\r\nimport \"../ERC20Safe.sol\";\r\n\r\n/**\r\n @title Handles ERC20 deposits and deposit executions.\r\n @author ChainSafe Systems.\r\n @notice This contract is intended to be used with the Bridge contract.\r\n */\r\ncontract ERC20Handler is IDepositExecute, HandlerHelpers, ERC20Safe {\r\n\r\n struct DepositRecord {\r\n address _tokenAddress;\r\n uint8 _lenDestinationRecipientAddress;\r\n uint8 _destinationChainID;\r\n bytes32 _resourceID;\r\n bytes _destinationRecipientAddress;\r\n address _depositer;\r\n uint _amount;\r\n }\r\n\r\n // depositNonce => Deposit Record\r\n mapping (uint8 => mapping(uint64 => DepositRecord)) public _depositRecords;\r\n\r\n /**\r\n @param bridgeAddress Contract address of previously deployed Bridge.\r\n @param initialResourceIDs Resource IDs are used to identify a specific contract address.\r\n These are the Resource IDs this contract will initially support.\r\n @param initialContractAddresses These are the addresses the {initialResourceIDs} will point to, and are the contracts that will be\r\n called to perform various deposit calls.\r\n @param burnableContractAddresses These addresses will be set as burnable and when {deposit} is called, the deposited token will be burned.\r\n When {executeProposal} is called, new tokens will be minted.\r\n\r\n @dev {initialResourceIDs} and {initialContractAddresses} must have the same length (one resourceID for every address).\r\n Also, these arrays must be ordered in the way that {initialResourceIDs}[0] is the intended resourceID for {initialContractAddresses}[0].\r\n */\r\n constructor(\r\n address bridgeAddress,\r\n bytes32[] memory initialResourceIDs,\r\n address[] memory initialContractAddresses,\r\n address[] memory burnableContractAddresses\r\n ) {\r\n require(initialResourceIDs.length == initialContractAddresses.length,\r\n \"initialResourceIDs and initialContractAddresses len mismatch\");\r\n\r\n _bridgeAddress = bridgeAddress;\r\n\r\n uint256 initialCount = initialResourceIDs.length;\r\n for (uint256 i = 0; i < initialCount; i++) {\r\n _setResource(initialResourceIDs[i], initialContractAddresses[i]);\r\n }\r\n\r\n uint256 burnableCount = burnableContractAddresses.length;\r\n for (uint256 i = 0; i < burnableCount; i++) {\r\n _setBurnable(burnableContractAddresses[i]);\r\n }\r\n }\r\n\r\n /**\r\n @param depositNonce This ID will have been generated by the Bridge contract.\r\n @param destId ID of chain deposit will be bridged to.\r\n @return DepositRecord which consists of:\r\n - _tokenAddress Address used when {deposit} was executed.\r\n - _destinationChainID ChainID deposited tokens are intended to end up on.\r\n - _resourceID ResourceID used when {deposit} was executed.\r\n - _lenDestinationRecipientAddress Used to parse recipient's address from {_destinationRecipientAddress}\r\n - _destinationRecipientAddress Address tokens are intended to be deposited to on desitnation chain.\r\n - _depositer Address that initially called {deposit} in the Bridge contract.\r\n - _amount Amount of tokens that were deposited.\r\n */\r\n function getDepositRecord(uint64 depositNonce, uint8 destId) external view returns (DepositRecord memory) {\r\n return _depositRecords[destId][depositNonce];\r\n }\r\n\r\n /**\r\n @notice A deposit is initiatied by making a deposit in the Bridge contract.\r\n @param destinationChainID Chain ID of chain tokens are expected to be bridged to.\r\n @param depositNonce This value is generated as an ID by the Bridge contract.\r\n @param depositer Address of account making the deposit in the Bridge contract.\r\n @param data Consists of: {resourceID}, {amount}, {lenRecipientAddress}, and {recipientAddress}\r\n all padded to 32 bytes.\r\n @notice Data passed into the function should be constructed as follows:\r\n amount uint256 bytes 0 - 32\r\n recipientAddress length uint256 bytes 32 - 64\r\n recipientAddress bytes bytes 64 - END\r\n @dev Depending if the corresponding {tokenAddress} for the parsed {resourceID} is\r\n marked true in {_burnList}, deposited tokens will be burned, if not, they will be locked.\r\n */\r\n function deposit(\r\n bytes32 resourceID,\r\n uint8 destinationChainID,\r\n uint64 depositNonce,\r\n address depositer,\r\n bytes calldata data\r\n ) external override onlyBridge {\r\n bytes memory recipientAddress;\r\n uint256 amount;\r\n uint256 lenRecipientAddress;\r\n\r\n assembly {\r\n\r\n amount := calldataload(0xC4)\r\n\r\n recipientAddress := mload(0x40)\r\n lenRecipientAddress := calldataload(0xE4)\r\n mstore(0x40, add(0x20, add(recipientAddress, lenRecipientAddress)))\r\n\r\n calldatacopy(\r\n recipientAddress, // copy to destinationRecipientAddress\r\n 0xE4, // copy from calldata @ 0x104\r\n sub(calldatasize(), 0xE4) // copy size (calldatasize - 0x104)\r\n )\r\n }\r\n\r\n address tokenAddress = _resourceIDToTokenContractAddress[resourceID];\r\n require(_contractWhitelist[tokenAddress], \"provided tokenAddress is not whitelisted\");\r\n\r\n if (_burnList[tokenAddress]) {\r\n burnERC20(tokenAddress, depositer, amount);\r\n } else {\r\n lockERC20(tokenAddress, depositer, address(this), amount);\r\n }\r\n\r\n _depositRecords[destinationChainID][depositNonce] = DepositRecord(\r\n tokenAddress,\r\n uint8(lenRecipientAddress),\r\n destinationChainID,\r\n resourceID,\r\n recipientAddress,\r\n depositer,\r\n amount\r\n );\r\n }\r\n\r\n /**\r\n @notice Proposal execution should be initiated when a proposal is finalized in the Bridge contract.\r\n by a relayer on the deposit's destination chain.\r\n @param data Consists of {resourceID}, {amount}, {lenDestinationRecipientAddress},\r\n and {destinationRecipientAddress} all padded to 32 bytes.\r\n @notice Data passed into the function should be constructed as follows:\r\n amount uint256 bytes 0 - 32\r\n destinationRecipientAddress length uint256 bytes 32 - 64\r\n destinationRecipientAddress bytes bytes 64 - END\r\n */\r\n function executeProposal(bytes32 resourceID, bytes calldata data) external override onlyBridge {\r\n uint256 amount;\r\n bytes memory destinationRecipientAddress;\r\n\r\n assembly {\r\n amount := calldataload(0x64)\r\n\r\n destinationRecipientAddress := mload(0x40)\r\n let lenDestinationRecipientAddress := calldataload(0x84)\r\n mstore(0x40, add(0x20, add(destinationRecipientAddress, lenDestinationRecipientAddress)))\r\n\r\n // in the calldata the destinationRecipientAddress is stored at 0xC4 after accounting for the function signature and length declaration\r\n calldatacopy(\r\n destinationRecipientAddress, // copy to destinationRecipientAddress\r\n 0x84, // copy from calldata @ 0x84\r\n sub(calldatasize(), 0x84) // copy size to the end of calldata\r\n )\r\n }\r\n\r\n bytes20 recipientAddress;\r\n address tokenAddress = _resourceIDToTokenContractAddress[resourceID];\r\n\r\n assembly {\r\n recipientAddress := mload(add(destinationRecipientAddress, 0x20))\r\n }\r\n\r\n require(_contractWhitelist[tokenAddress], \"provided tokenAddress is not whitelisted\");\r\n\r\n if (_burnList[tokenAddress]) {\r\n mintERC20(tokenAddress, address(recipientAddress), amount);\r\n } else {\r\n releaseERC20(tokenAddress, address(recipientAddress), amount);\r\n }\r\n }\r\n\r\n /**\r\n @notice Used to manually release ERC20 tokens from ERC20Safe.\r\n @param tokenAddress Address of token contract to release.\r\n @param recipient Address to release tokens to.\r\n @param amount The amount of ERC20 tokens to release.\r\n */\r\n function withdraw(address tokenAddress, address recipient, uint amount) external override onlyBridge {\r\n releaseERC20(tokenAddress, recipient, amount);\r\n }\r\n}\r\n", + "sourcePath": "/mnt/d/SourceTree/CAN_bridge_sol/contracts/handlers/ERC20Handler.sol", + "ast": { + "absolutePath": "project:/contracts/handlers/ERC20Handler.sol", + "exportedSymbols": { + "AccessControl": [ + 3623 + ], + "AccessControlEnumerable": [ + 3748 + ], + "Context": [ + 4108 + ], + "ERC165": [ + 4206 + ], + "ERC20": [ + 4987 + ], + "ERC20Burnable": [ + 5031 + ], + "ERC20Handler": [ + 2322 + ], + "ERC20Pausable": [ + 5068 + ], + "ERC20PresetMinterPauser": [ + 5204 + ], + "ERC20Safe": [ + 1496 + ], + "EnumerableSet": [ + 6970 + ], + "HandlerHelpers": [ + 3209 + ], + "IAccessControl": [ + 7043 + ], + "IAccessControlEnumerable": [ + 7068 + ], + "IDepositExecute": [ + 3263 + ], + "IERC165": [ + 7080 + ], + "IERC20": [ + 7158 + ], + "IERC20Metadata": [ + 7183 + ], + "IERCHandler": [ + 3291 + ], + "Math": [ + 8232 + ], + "Pausable": [ + 8340 + ], + "SignedMath": [ + 8445 + ], + "Strings": [ + 8674 + ] + }, + "id": 2323, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2031, + "literals": [ + "solidity", + "0.8", + ".19" + ], + "nodeType": "PragmaDirective", + "src": "33:23:20" + }, + { + "absolutePath": "project:/contracts/interfaces/IDepositExecute.sol", + "file": "../interfaces/IDepositExecute.sol", + "id": 2032, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2323, + "sourceUnit": 3264, + "src": "60:43:20", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "project:/contracts/handlers/HandlerHelpers.sol", + "file": "./HandlerHelpers.sol", + "id": 2033, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2323, + "sourceUnit": 3210, + "src": "105:30:20", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "project:/contracts/ERC20Safe.sol", + "file": "../ERC20Safe.sol", + "id": 2034, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2323, + "sourceUnit": 1497, + "src": "137:26:20", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 2036, + "name": "IDepositExecute", + "nameLocations": [ + "369:15:20" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3263, + "src": "369:15:20" + }, + "id": 2037, + "nodeType": "InheritanceSpecifier", + "src": "369:15:20" + }, + { + "baseName": { + "id": 2038, + "name": "HandlerHelpers", + "nameLocations": [ + "386:14:20" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3209, + "src": "386:14:20" + }, + "id": 2039, + "nodeType": "InheritanceSpecifier", + "src": "386:14:20" + }, + { + "baseName": { + "id": 2040, + "name": "ERC20Safe", + "nameLocations": [ + "402:9:20" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1496, + "src": "402:9:20" + }, + "id": 2041, + "nodeType": "InheritanceSpecifier", + "src": "402:9:20" + } + ], + "canonicalName": "ERC20Handler", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 2035, + "nodeType": "StructuredDocumentation", + "src": "167:175:20", + "text": "@title Handles ERC20 deposits and deposit executions.\n@author ChainSafe Systems.\n@notice This contract is intended to be used with the Bridge contract." + }, + "fullyImplemented": true, + "id": 2322, + "linearizedBaseContracts": [ + 2322, + 1496, + 3209, + 3291, + 3263 + ], + "name": "ERC20Handler", + "nameLocation": "353:12:20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "ERC20Handler.DepositRecord", + "id": 2056, + "members": [ + { + "constant": false, + "id": 2043, + "mutability": "mutable", + "name": "_tokenAddress", + "nameLocation": "461:13:20", + "nodeType": "VariableDeclaration", + "scope": 2056, + "src": "453:21:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2042, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "453:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2045, + "mutability": "mutable", + "name": "_lenDestinationRecipientAddress", + "nameLocation": "494:31:20", + "nodeType": "VariableDeclaration", + "scope": 2056, + "src": "485:40:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 2044, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "485:5:20", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2047, + "mutability": "mutable", + "name": "_destinationChainID", + "nameLocation": "544:19:20", + "nodeType": "VariableDeclaration", + "scope": 2056, + "src": "536:27:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 2046, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "536:5:20", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2049, + "mutability": "mutable", + "name": "_resourceID", + "nameLocation": "582:11:20", + "nodeType": "VariableDeclaration", + "scope": 2056, + "src": "574:19:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2048, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "574:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2051, + "mutability": "mutable", + "name": "_destinationRecipientAddress", + "nameLocation": "612:28:20", + "nodeType": "VariableDeclaration", + "scope": 2056, + "src": "604:36:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2050, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "604:5:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2053, + "mutability": "mutable", + "name": "_depositer", + "nameLocation": "659:10:20", + "nodeType": "VariableDeclaration", + "scope": 2056, + "src": "651:18:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2052, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "651:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2055, + "mutability": "mutable", + "name": "_amount", + "nameLocation": "688:7:20", + "nodeType": "VariableDeclaration", + "scope": 2056, + "src": "680:15:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2054, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "680:4:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "DepositRecord", + "nameLocation": "428:13:20", + "nodeType": "StructDefinition", + "scope": 2322, + "src": "421:282:20", + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "4402027f", + "id": 2063, + "mutability": "mutable", + "name": "_depositRecords", + "nameLocation": "809:15:20", + "nodeType": "VariableDeclaration", + "scope": 2322, + "src": "750:74:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint8_$_t_mapping$_t_uint64_$_t_struct$_DepositRecord_$2056_storage_$_$", + "typeString": "mapping(uint8 => mapping(uint64 => struct ERC20Handler.DepositRecord))" + }, + "typeName": { + "id": 2062, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 2057, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "759:5:20", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Mapping", + "src": "750:51:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint8_$_t_mapping$_t_uint64_$_t_struct$_DepositRecord_$2056_storage_$_$", + "typeString": "mapping(uint8 => mapping(uint64 => struct ERC20Handler.DepositRecord))" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 2061, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 2058, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "776:6:20", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "Mapping", + "src": "768:32:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_DepositRecord_$2056_storage_$", + "typeString": "mapping(uint64 => struct ERC20Handler.DepositRecord)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 2060, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2059, + "name": "DepositRecord", + "nameLocations": [ + "786:13:20" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2056, + "src": "786:13:20" + }, + "referencedDeclaration": 2056, + "src": "786:13:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DepositRecord_$2056_storage_ptr", + "typeString": "struct ERC20Handler.DepositRecord" + } + } + } + }, + "visibility": "public" + }, + { + "body": { + "id": 2140, + "nodeType": "Block", + "src": "1996:605:20", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "HandlerHelpers", - "referencedDeclaration": 8209, - "type": "contract HandlerHelpers" - }, - "id": 6819, - "name": "UserDefinedTypeName", - "src": "497:14:34" + "id": 2083, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 2079, + "name": "initialResourceIDs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2069, + "src": "2015:18:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" } - ], - "id": 6820, - "name": "InheritanceSpecifier", - "src": "497:14:34" - }, - { - "attributes": { - "arguments": null + }, + "id": 2080, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2034:6:20", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2015:25:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "ERC20Safe", - "referencedDeclaration": 5942, - "type": "contract ERC20Safe" - }, - "id": 6821, - "name": "UserDefinedTypeName", - "src": "513:9:34" + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 2081, + "name": "initialContractAddresses", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2072, + "src": "2044:24:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" } - ], - "id": 6822, - "name": "InheritanceSpecifier", - "src": "513:9:34" + }, + "id": 2082, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2069:6:20", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2044:31:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2015:60:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "696e697469616c5265736f7572636549447320616e6420696e697469616c436f6e7472616374416464726573736573206c656e206d69736d61746368", + "id": 2084, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2090:62:20", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4ad26bc3c99f2850e5fe1de98475000419054e7d49a87288c0e5940e995dd510", + "typeString": "literal_string \"initialResourceIDs and initialContractAddresses len mismatch\"" + }, + "value": "initialResourceIDs and initialContractAddresses len mismatch" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_4ad26bc3c99f2850e5fe1de98475000419054e7d49a87288c0e5940e995dd510", + "typeString": "literal_string \"initialResourceIDs and initialContractAddresses len mismatch\"" + } + ], + "id": 2078, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "2007:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2085, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2007:146:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2086, + "nodeType": "ExpressionStatement", + "src": "2007:146:20" + }, + { + "expression": { + "id": 2089, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2087, + "name": "_bridgeAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3085, + "src": "2166:14:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2088, + "name": "bridgeAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2066, + "src": "2183:13:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, + "src": "2166:30:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2090, + "nodeType": "ExpressionStatement", + "src": "2166:30:20" + }, + { + "assignments": [ + 2092 + ], + "declarations": [ { - "children": [ + "constant": false, + "id": 2092, + "mutability": "mutable", + "name": "initialCount", + "nameLocation": "2217:12:20", + "nodeType": "VariableDeclaration", + "scope": 2140, + "src": "2209:20:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2091, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2209:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2095, + "initialValue": { + "expression": { + "id": 2093, + "name": "initialResourceIDs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2069, + "src": "2232:18:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 2094, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2251:6:20", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2232:25:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2209:48:20" + }, + { + "body": { + "id": 2115, + "nodeType": "Block", + "src": "2311:91:20", + "statements": [ + { + "expression": { + "arguments": [ { - "attributes": { - "contractScope": null, - "name": "SafeMath", - "referencedDeclaration": 937, - "type": "library SafeMath" - }, - "id": 6823, - "name": "UserDefinedTypeName", - "src": "535:8:34" + "baseExpression": { + "id": 2107, + "name": "initialResourceIDs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2069, + "src": "2339:18:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 2109, + "indexExpression": { + "id": 2108, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2097, + "src": "2358:1:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2339:21:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } }, { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 6824, - "name": "ElementaryTypeName", - "src": "548:7:34" + "baseExpression": { + "id": 2110, + "name": "initialContractAddresses", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2072, + "src": "2362:24:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 2112, + "indexExpression": { + "id": 2111, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2097, + "src": "2387:1:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2362:27:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } } - ], - "id": 6825, - "name": "UsingForDirective", - "src": "529:27:34" + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2106, + "name": "_setResource", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3189, + "src": "2326:12:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 2113, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2326:64:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2114, + "nodeType": "ExpressionStatement", + "src": "2326:64:20" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - { - "attributes": { - "canonicalName": "ERC20Handler.DepositRecord", - "name": "DepositRecord", - "scope": 7269, - "visibility": "public" + "id": 2102, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2100, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2097, + "src": "2288:1:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 2101, + "name": "initialCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "2292:12:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2288:16:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2116, + "initializationExpression": { + "assignments": [ + 2097 + ], + "declarations": [ + { + "constant": false, + "id": 2097, + "mutability": "mutable", + "name": "i", + "nameLocation": "2281:1:20", + "nodeType": "VariableDeclaration", + "scope": 2116, + "src": "2273:9:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "_tokenAddress", - "overrides": null, - "scope": 6840, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 6826, - "name": "ElementaryTypeName", - "src": "593:7:34" - } - ], - "id": 6827, - "name": "VariableDeclaration", - "src": "593:21:34" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "_lenDestinationRecipientAddress", - "overrides": null, - "scope": 6840, - "stateVariable": false, - "storageLocation": "default", - "type": "uint8", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint8", - "type": "uint8" - }, - "id": 6828, - "name": "ElementaryTypeName", - "src": "624:5:34" - } - ], - "id": 6829, - "name": "VariableDeclaration", - "src": "624:40:34" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "_destinationChainID", - "overrides": null, - "scope": 6840, - "stateVariable": false, - "storageLocation": "default", - "type": "uint8", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint8", - "type": "uint8" - }, - "id": 6830, - "name": "ElementaryTypeName", - "src": "674:5:34" - } - ], - "id": 6831, - "name": "VariableDeclaration", - "src": "674:27:34" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "_resourceID", - "overrides": null, - "scope": 6840, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 6832, - "name": "ElementaryTypeName", - "src": "711:7:34" - } - ], - "id": 6833, - "name": "VariableDeclaration", - "src": "711:19:34" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "_destinationRecipientAddress", - "overrides": null, - "scope": 6840, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes", - "type": "bytes" - }, - "id": 6834, - "name": "ElementaryTypeName", - "src": "740:5:34" - } - ], - "id": 6835, - "name": "VariableDeclaration", - "src": "740:36:34" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "_depositer", - "overrides": null, - "scope": 6840, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 6836, - "name": "ElementaryTypeName", - "src": "786:7:34" - } - ], - "id": 6837, - "name": "VariableDeclaration", - "src": "786:18:34" - }, + "typeName": { + "id": 2096, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2273:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2099, + "initialValue": { + "hexValue": "30", + "id": 2098, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2285:1:20", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "2273:13:20" + }, + "loopExpression": { + "expression": { + "id": 2104, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "2306:3:20", + "subExpression": { + "id": 2103, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2097, + "src": "2306:1:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2105, + "nodeType": "ExpressionStatement", + "src": "2306:3:20" + }, + "nodeType": "ForStatement", + "src": "2268:134:20" + }, + { + "assignments": [ + 2118 + ], + "declarations": [ + { + "constant": false, + "id": 2118, + "mutability": "mutable", + "name": "burnableCount", + "nameLocation": "2422:13:20", + "nodeType": "VariableDeclaration", + "scope": 2140, + "src": "2414:21:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2117, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2414:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2121, + "initialValue": { + "expression": { + "id": 2119, + "name": "burnableContractAddresses", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2075, + "src": "2438:25:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 2120, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2464:6:20", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2438:32:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2414:56:20" + }, + { + "body": { + "id": 2138, + "nodeType": "Block", + "src": "2525:69:20", + "statements": [ + { + "expression": { + "arguments": [ { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "_amount", - "overrides": null, - "scope": 6840, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint", - "type": "uint256" - }, - "id": 6838, - "name": "ElementaryTypeName", - "src": "814:4:34" - } - ], - "id": 6839, - "name": "VariableDeclaration", - "src": "814:15:34" + "baseExpression": { + "id": 2133, + "name": "burnableContractAddresses", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2075, + "src": "2553:25:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 2135, + "indexExpression": { + "id": 2134, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2123, + "src": "2579:1:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2553:28:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } } - ], - "id": 6840, - "name": "StructDefinition", - "src": "562:274:34" - }, - { - "attributes": { - "constant": false, - "functionSelector": "4402027f", - "mutability": "mutable", - "name": "_depositRecords", - "overrides": null, - "scope": 7269, - "stateVariable": true, - "storageLocation": "default", - "type": "mapping(uint8 => mapping(uint64 => struct ERC20Handler.DepositRecord))", - "value": null, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "type": "mapping(uint8 => mapping(uint64 => struct ERC20Handler.DepositRecord))" - }, - "children": [ - { - "attributes": { - "name": "uint8", - "type": "uint8" - }, - "id": 6841, - "name": "ElementaryTypeName", - "src": "889:5:34" - }, - { - "attributes": { - "type": "mapping(uint64 => struct ERC20Handler.DepositRecord)" - }, - "children": [ - { - "attributes": { - "name": "uint64", - "type": "uint64" - }, - "id": 6842, - "name": "ElementaryTypeName", - "src": "906:6:34" - }, - { - "attributes": { - "contractScope": null, - "name": "DepositRecord", - "referencedDeclaration": 6840, - "type": "struct ERC20Handler.DepositRecord" - }, - "id": 6843, - "name": "UserDefinedTypeName", - "src": "916:13:34" - } - ], - "id": 6844, - "name": "Mapping", - "src": "898:32:34" - } - ], - "id": 6845, - "name": "Mapping", - "src": "880:51:34" + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2132, + "name": "_setBurnable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3208, + "src": "2540:12:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" } - ], - "id": 6846, - "name": "VariableDeclaration", - "src": "880:74:34" + }, + "id": 2136, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2540:42:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2137, + "nodeType": "ExpressionStatement", + "src": "2540:42:20" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - { - "attributes": { - "anonymous": false, - "documentation": null, - "name": "Deposited" + "id": 2128, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2126, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2123, + "src": "2501:1:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 2127, + "name": "burnableCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2118, + "src": "2505:13:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2501:17:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2139, + "initializationExpression": { + "assignments": [ + 2123 + ], + "declarations": [ + { + "constant": false, + "id": 2123, + "mutability": "mutable", + "name": "i", + "nameLocation": "2494:1:20", + "nodeType": "VariableDeclaration", + "scope": 2139, + "src": "2486:9:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "token", - "overrides": null, - "scope": 6854, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 6847, - "name": "ElementaryTypeName", - "src": "977:7:34" - } - ], - "id": 6848, - "name": "VariableDeclaration", - "src": "977:21:34" - }, - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "recipient", - "overrides": null, - "scope": 6854, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 6849, - "name": "ElementaryTypeName", - "src": "1000:7:34" - } - ], - "id": 6850, - "name": "VariableDeclaration", - "src": "1000:25:34" - }, - { - "attributes": { - "constant": false, - "indexed": false, - "mutability": "mutable", - "name": "amount", - "overrides": null, - "scope": 6854, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 6851, - "name": "ElementaryTypeName", - "src": "1027:7:34" - } - ], - "id": 6852, - "name": "VariableDeclaration", - "src": "1027:14:34" - } - ], - "id": 6853, - "name": "ParameterList", - "src": "976:66:34" - } - ], - "id": 6854, - "name": "EventDefinition", - "src": "961:82:34" + "typeName": { + "id": 2122, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2486:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2125, + "initialValue": { + "hexValue": "30", + "id": 2124, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2498:1:20", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "2486:13:20" + }, + "loopExpression": { + "expression": { + "id": 2130, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "2520:3:20", + "subExpression": { + "id": 2129, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2123, + "src": "2520:1:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2131, + "nodeType": "ExpressionStatement", + "src": "2520:3:20" + }, + "nodeType": "ForStatement", + "src": "2481:113:20" + } + ] + }, + "documentation": { + "id": 2064, + "nodeType": "StructuredDocumentation", + "src": "833:946:20", + "text": "@param bridgeAddress Contract address of previously deployed Bridge.\n@param initialResourceIDs Resource IDs are used to identify a specific contract address.\nThese are the Resource IDs this contract will initially support.\n@param initialContractAddresses These are the addresses the {initialResourceIDs} will point to, and are the contracts that will be\ncalled to perform various deposit calls.\n@param burnableContractAddresses These addresses will be set as burnable and when {deposit} is called, the deposited token will be burned.\nWhen {executeProposal} is called, new tokens will be minted.\n@dev {initialResourceIDs} and {initialContractAddresses} must have the same length (one resourceID for every address).\nAlso, these arrays must be ordered in the way that {initialResourceIDs}[0] is the intended resourceID for {initialContractAddresses}[0]." + }, + "id": 2141, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2076, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2066, + "mutability": "mutable", + "name": "bridgeAddress", + "nameLocation": "1824:13:20", + "nodeType": "VariableDeclaration", + "scope": 2141, + "src": "1807:30:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2065, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1807:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2069, + "mutability": "mutable", + "name": "initialResourceIDs", + "nameLocation": "1865:18:20", + "nodeType": "VariableDeclaration", + "scope": 2141, + "src": "1848:35:20", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 2067, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1848:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2068, + "nodeType": "ArrayTypeName", + "src": "1848:9:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2072, + "mutability": "mutable", + "name": "initialContractAddresses", + "nameLocation": "1911:24:20", + "nodeType": "VariableDeclaration", + "scope": 2141, + "src": "1894:41:20", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 2070, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1894:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2071, + "nodeType": "ArrayTypeName", + "src": "1894:9:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2075, + "mutability": "mutable", + "name": "burnableContractAddresses", + "nameLocation": "1963:25:20", + "nodeType": "VariableDeclaration", + "scope": 2141, + "src": "1946:42:20", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 2073, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1946:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2074, + "nodeType": "ArrayTypeName", + "src": "1946:9:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + } + ], + "src": "1796:199:20" + }, + "returnParameters": { + "id": 2077, + "nodeType": "ParameterList", + "parameters": [], + "src": "1996:0:20" + }, + "scope": 2322, + "src": "1785:816:20", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 2158, + "nodeType": "Block", + "src": "3514:63:20", + "statements": [ + { + "expression": { + "baseExpression": { + "baseExpression": { + "id": 2152, + "name": "_depositRecords", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2063, + "src": "3532:15:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint8_$_t_mapping$_t_uint64_$_t_struct$_DepositRecord_$2056_storage_$_$", + "typeString": "mapping(uint8 => mapping(uint64 => struct ERC20Handler.DepositRecord storage ref))" + } + }, + "id": 2154, + "indexExpression": { + "id": 2153, + "name": "destId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2146, + "src": "3548:6:20", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3532:23:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_DepositRecord_$2056_storage_$", + "typeString": "mapping(uint64 => struct ERC20Handler.DepositRecord storage ref)" + } + }, + "id": 2156, + "indexExpression": { + "id": 2155, + "name": "depositNonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2144, + "src": "3556:12:20", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3532:37:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DepositRecord_$2056_storage", + "typeString": "struct ERC20Handler.DepositRecord storage ref" + } + }, + "functionReturnParameters": 2151, + "id": 2157, + "nodeType": "Return", + "src": "3525:44:20" + } + ] + }, + "documentation": { + "id": 2142, + "nodeType": "StructuredDocumentation", + "src": "2609:793:20", + "text": "@param depositNonce This ID will have been generated by the Bridge contract.\n@param destId ID of chain deposit will be bridged to.\n@return DepositRecord which consists of:\n- _tokenAddress Address used when {deposit} was executed.\n- _destinationChainID ChainID deposited tokens are intended to end up on.\n- _resourceID ResourceID used when {deposit} was executed.\n- _lenDestinationRecipientAddress Used to parse recipient's address from {_destinationRecipientAddress}\n- _destinationRecipientAddress Address tokens are intended to be deposited to on desitnation chain.\n- _depositer Address that initially called {deposit} in the Bridge contract.\n- _amount Amount of tokens that were deposited." + }, + "functionSelector": "ba484c09", + "id": 2159, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getDepositRecord", + "nameLocation": "3417:16:20", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2147, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2144, + "mutability": "mutable", + "name": "depositNonce", + "nameLocation": "3441:12:20", + "nodeType": "VariableDeclaration", + "scope": 2159, + "src": "3434:19:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 2143, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "3434:6:20", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2146, + "mutability": "mutable", + "name": "destId", + "nameLocation": "3461:6:20", + "nodeType": "VariableDeclaration", + "scope": 2159, + "src": "3455:12:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 2145, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "3455:5:20", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "3433:35:20" + }, + "returnParameters": { + "id": 2151, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2150, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2159, + "src": "3492:20:20", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DepositRecord_$2056_memory_ptr", + "typeString": "struct ERC20Handler.DepositRecord" + }, + "typeName": { + "id": 2149, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2148, + "name": "DepositRecord", + "nameLocations": [ + "3492:13:20" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2056, + "src": "3492:13:20" }, + "referencedDeclaration": 2056, + "src": "3492:13:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DepositRecord_$2056_storage_ptr", + "typeString": "struct ERC20Handler.DepositRecord" + } + }, + "visibility": "internal" + } + ], + "src": "3491:22:20" + }, + "scope": 2322, + "src": "3408:169:20", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 3254 + ], + "body": { + "id": 2240, + "nodeType": "Block", + "src": "4764:1305:20", + "statements": [ + { + "assignments": [ + 2177 + ], + "declarations": [ { - "attributes": { - "anonymous": false, - "documentation": null, - "name": "Withdrawn" - }, - "children": [ + "constant": false, + "id": 2177, + "mutability": "mutable", + "name": "recipientAddress", + "nameLocation": "4790:16:20", + "nodeType": "VariableDeclaration", + "scope": 2240, + "src": "4775:31:20", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2176, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4775:5:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 2178, + "nodeType": "VariableDeclarationStatement", + "src": "4775:31:20" + }, + { + "assignments": [ + 2180 + ], + "declarations": [ + { + "constant": false, + "id": 2180, + "mutability": "mutable", + "name": "amount", + "nameLocation": "4832:6:20", + "nodeType": "VariableDeclaration", + "scope": 2240, + "src": "4817:21:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2179, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4817:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2181, + "nodeType": "VariableDeclarationStatement", + "src": "4817:21:20" + }, + { + "assignments": [ + 2183 + ], + "declarations": [ + { + "constant": false, + "id": 2183, + "mutability": "mutable", + "name": "lenRecipientAddress", + "nameLocation": "4864:19:20", + "nodeType": "VariableDeclaration", + "scope": 2240, + "src": "4849:34:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2182, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4849:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2184, + "nodeType": "VariableDeclarationStatement", + "src": "4849:34:20" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "4905:489:20", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4922:28:20", + "value": { + "arguments": [ { - "children": [ - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "token", - "overrides": null, - "scope": 6862, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 6855, - "name": "ElementaryTypeName", - "src": "1064:7:34" - } - ], - "id": 6856, - "name": "VariableDeclaration", - "src": "1064:21:34" - }, - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "depositer", - "overrides": null, - "scope": 6862, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 6857, - "name": "ElementaryTypeName", - "src": "1087:7:34" - } - ], - "id": 6858, - "name": "VariableDeclaration", - "src": "1087:25:34" - }, - { - "attributes": { - "constant": false, - "indexed": false, - "mutability": "mutable", - "name": "amount", - "overrides": null, - "scope": 6862, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 6859, - "name": "ElementaryTypeName", - "src": "1114:7:34" - } - ], - "id": 6860, - "name": "VariableDeclaration", - "src": "1114:14:34" - } - ], - "id": 6861, - "name": "ParameterList", - "src": "1063:66:34" + "kind": "number", + "nodeType": "YulLiteral", + "src": "4945:4:20", + "type": "", + "value": "0xC4" } - ], - "id": 6862, - "name": "EventDefinition", - "src": "1048:82:34" - }, - { - "attributes": { - "implemented": true, - "isConstructor": true, - "kind": "constructor", - "modifiers": [null], - "name": "", - "overrides": null, - "scope": 7269, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4932:12:20" + }, + "nodeType": "YulFunctionCall", + "src": "4932:18:20" }, - "children": [ - { - "attributes": { - "text": "@param bridgeAddress Contract address of previously deployed Bridge.\n@param initialResourceIDs Resource IDs are used to identify a specific contract address.\nThese are the Resource IDs this contract will initially support.\n@param initialContractAddresses These are the addresses the {initialResourceIDs} will point to, and are the contracts that will be\ncalled to perform various deposit calls.\n@param burnableContractAddresses These addresses will be set as burnable and when {deposit} is called, the deposited token will be burned.\nWhen {executeProposal} is called, new tokens will be minted.\n@dev {initialResourceIDs} and {initialContractAddresses} must have the same length (one resourceID for every address).\nAlso, these arrays must be ordered in the way that {initialResourceIDs}[0] is the intended resourceID for {initialContractAddresses}[0]." - }, - "id": 6863, - "name": "StructuredDocumentation", - "src": "1136:935:34" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "bridgeAddress", - "overrides": null, - "scope": 6940, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 6864, - "name": "ElementaryTypeName", - "src": "2097:7:34" - } - ], - "id": 6865, - "name": "VariableDeclaration", - "src": "2097:30:34" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "initialResourceIDs", - "overrides": null, - "scope": 6940, - "stateVariable": false, - "storageLocation": "memory", - "type": "bytes32[]", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "length": null, - "type": "bytes32[]" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 6866, - "name": "ElementaryTypeName", - "src": "2137:7:34" - } - ], - "id": 6867, - "name": "ArrayTypeName", - "src": "2137:9:34" - } - ], - "id": 6868, - "name": "VariableDeclaration", - "src": "2137:35:34" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "initialContractAddresses", - "overrides": null, - "scope": 6940, - "stateVariable": false, - "storageLocation": "memory", - "type": "address[]", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "length": null, - "type": "address[]" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 6869, - "name": "ElementaryTypeName", - "src": "2182:7:34" - } - ], - "id": 6870, - "name": "ArrayTypeName", - "src": "2182:9:34" - } - ], - "id": 6871, - "name": "VariableDeclaration", - "src": "2182:41:34" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "burnableContractAddresses", - "overrides": null, - "scope": 6940, - "stateVariable": false, - "storageLocation": "memory", - "type": "address[]", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "length": null, - "type": "address[]" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 6872, - "name": "ElementaryTypeName", - "src": "2233:7:34" - } - ], - "id": 6873, - "name": "ArrayTypeName", - "src": "2233:9:34" - } - ], - "id": 6874, - "name": "VariableDeclaration", - "src": "2233:42:34" - } - ], - "id": 6875, - "name": "ParameterList", - "src": "2087:194:34" - }, - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 6876, - "name": "ParameterList", - "src": "2289:0:34" - }, + "variableNames": [ + { + "name": "amount", + "nodeType": "YulIdentifier", + "src": "4922:6:20" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4966:31:20", + "value": { + "arguments": [ { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_4ad26bc3c99f2850e5fe1de98475000419054e7d49a87288c0e5940e995dd510", - "typeString": "literal_string \"initialResourceIDs and initialContractAddresses len mismatch\"" - } - ], - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 6877, - "name": "Identifier", - "src": "2299:7:34" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "length", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6868, - "type": "bytes32[] memory", - "value": "initialResourceIDs" - }, - "id": 6878, - "name": "Identifier", - "src": "2307:18:34" - } - ], - "id": 6879, - "name": "MemberAccess", - "src": "2307:25:34" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "length", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6871, - "type": "address[] memory", - "value": "initialContractAddresses" - }, - "id": 6880, - "name": "Identifier", - "src": "2336:24:34" - } - ], - "id": 6881, - "name": "MemberAccess", - "src": "2336:31:34" - } - ], - "id": 6882, - "name": "BinaryOperation", - "src": "2307:60:34" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "696e697469616c5265736f7572636549447320616e6420696e697469616c436f6e7472616374416464726573736573206c656e206d69736d61746368", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"initialResourceIDs and initialContractAddresses len mismatch\"", - "value": "initialResourceIDs and initialContractAddresses len mismatch" - }, - "id": 6883, - "name": "Literal", - "src": "2381:62:34" - } - ], - "id": 6884, - "name": "FunctionCall", - "src": "2299:145:34" - } - ], - "id": 6885, - "name": "ExpressionStatement", - "src": "2299:145:34" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 8035, - "type": "address", - "value": "_bridgeAddress" - }, - "id": 6886, - "name": "Identifier", - "src": "2455:14:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6865, - "type": "address", - "value": "bridgeAddress" - }, - "id": 6887, - "name": "Identifier", - "src": "2472:13:34" - } - ], - "id": 6888, - "name": "Assignment", - "src": "2455:30:34" - } - ], - "id": 6889, - "name": "ExpressionStatement", - "src": "2455:30:34" - }, - { - "attributes": { - "assignments": [6891] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "initialCount", - "overrides": null, - "scope": 6939, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 6890, - "name": "ElementaryTypeName", - "src": "2496:7:34" - } - ], - "id": 6891, - "name": "VariableDeclaration", - "src": "2496:20:34" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "length", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6868, - "type": "bytes32[] memory", - "value": "initialResourceIDs" - }, - "id": 6892, - "name": "Identifier", - "src": "2519:18:34" - } - ], - "id": 6893, - "name": "MemberAccess", - "src": "2519:25:34" - } - ], - "id": 6894, - "name": "VariableDeclarationStatement", - "src": "2496:48:34" - }, - { - "children": [ - { - "attributes": { - "assignments": [6896] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "i", - "overrides": null, - "scope": 6915, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 6895, - "name": "ElementaryTypeName", - "src": "2559:7:34" - } - ], - "id": 6896, - "name": "VariableDeclaration", - "src": "2559:9:34" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 6897, - "name": "Literal", - "src": "2571:1:34" - } - ], - "id": 6898, - "name": "VariableDeclarationStatement", - "src": "2559:13:34" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "<", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6896, - "type": "uint256", - "value": "i" - }, - "id": 6899, - "name": "Identifier", - "src": "2574:1:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6891, - "type": "uint256", - "value": "initialCount" - }, - "id": 6900, - "name": "Identifier", - "src": "2578:12:34" - } - ], - "id": 6901, - "name": "BinaryOperation", - "src": "2574:16:34" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "++", - "prefix": false, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6896, - "type": "uint256", - "value": "i" - }, - "id": 6902, - "name": "Identifier", - "src": "2592:1:34" - } - ], - "id": 6903, - "name": "UnaryOperation", - "src": "2592:3:34" - } - ], - "id": 6904, - "name": "ExpressionStatement", - "src": "2592:3:34" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 8163, - "type": "function (bytes32,address)", - "value": "_setResource" - }, - "id": 6905, - "name": "Identifier", - "src": "2611:12:34" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6868, - "type": "bytes32[] memory", - "value": "initialResourceIDs" - }, - "id": 6906, - "name": "Identifier", - "src": "2624:18:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6896, - "type": "uint256", - "value": "i" - }, - "id": 6907, - "name": "Identifier", - "src": "2643:1:34" - } - ], - "id": 6908, - "name": "IndexAccess", - "src": "2624:21:34" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6871, - "type": "address[] memory", - "value": "initialContractAddresses" - }, - "id": 6909, - "name": "Identifier", - "src": "2647:24:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6896, - "type": "uint256", - "value": "i" - }, - "id": 6910, - "name": "Identifier", - "src": "2672:1:34" - } - ], - "id": 6911, - "name": "IndexAccess", - "src": "2647:27:34" - } - ], - "id": 6912, - "name": "FunctionCall", - "src": "2611:64:34" - } - ], - "id": 6913, - "name": "ExpressionStatement", - "src": "2611:64:34" - } - ], - "id": 6914, - "name": "Block", - "src": "2597:89:34" - } - ], - "id": 6915, - "name": "ForStatement", - "src": "2554:132:34" - }, - { - "attributes": { - "assignments": [6917] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "burnableCount", - "overrides": null, - "scope": 6939, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 6916, - "name": "ElementaryTypeName", - "src": "2696:7:34" - } - ], - "id": 6917, - "name": "VariableDeclaration", - "src": "2696:21:34" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "length", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6874, - "type": "address[] memory", - "value": "burnableContractAddresses" - }, - "id": 6918, - "name": "Identifier", - "src": "2720:25:34" - } - ], - "id": 6919, - "name": "MemberAccess", - "src": "2720:32:34" - } - ], - "id": 6920, - "name": "VariableDeclarationStatement", - "src": "2696:56:34" - }, - { - "children": [ - { - "attributes": { - "assignments": [6922] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "i", - "overrides": null, - "scope": 6938, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 6921, - "name": "ElementaryTypeName", - "src": "2767:7:34" - } - ], - "id": 6922, - "name": "VariableDeclaration", - "src": "2767:9:34" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 6923, - "name": "Literal", - "src": "2779:1:34" - } - ], - "id": 6924, - "name": "VariableDeclarationStatement", - "src": "2767:13:34" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "<", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6922, - "type": "uint256", - "value": "i" - }, - "id": 6925, - "name": "Identifier", - "src": "2782:1:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6917, - "type": "uint256", - "value": "burnableCount" - }, - "id": 6926, - "name": "Identifier", - "src": "2786:13:34" - } - ], - "id": 6927, - "name": "BinaryOperation", - "src": "2782:17:34" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "++", - "prefix": false, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6922, - "type": "uint256", - "value": "i" - }, - "id": 6928, - "name": "Identifier", - "src": "2801:1:34" - } - ], - "id": 6929, - "name": "UnaryOperation", - "src": "2801:3:34" - } - ], - "id": 6930, - "name": "ExpressionStatement", - "src": "2801:3:34" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 8182, - "type": "function (address)", - "value": "_setBurnable" - }, - "id": 6931, - "name": "Identifier", - "src": "2820:12:34" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6874, - "type": "address[] memory", - "value": "burnableContractAddresses" - }, - "id": 6932, - "name": "Identifier", - "src": "2833:25:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6922, - "type": "uint256", - "value": "i" - }, - "id": 6933, - "name": "Identifier", - "src": "2859:1:34" - } - ], - "id": 6934, - "name": "IndexAccess", - "src": "2833:28:34" - } - ], - "id": 6935, - "name": "FunctionCall", - "src": "2820:42:34" - } - ], - "id": 6936, - "name": "ExpressionStatement", - "src": "2820:42:34" - } - ], - "id": 6937, - "name": "Block", - "src": "2806:67:34" - } - ], - "id": 6938, - "name": "ForStatement", - "src": "2762:111:34" - } - ], - "id": 6939, - "name": "Block", - "src": "2289:590:34" + "kind": "number", + "nodeType": "YulLiteral", + "src": "4992:4:20", + "type": "", + "value": "0x40" } - ], - "id": 6940, - "name": "FunctionDefinition", - "src": "2076:803:34" - }, - { - "attributes": { - "functionSelector": "ba484c09", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [null], - "name": "getDepositRecord", - "overrides": null, - "scope": 7269, - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - "children": [ - { - "attributes": { - "text": "@param depositNonce This ID will have been generated by the Bridge contract.\n@param destId ID of chain deposit will be bridged to.\n@return DepositRecord which consists of:\n- _tokenAddress Address used when {deposit} was executed.\n- _destinationChainID ChainID deposited tokens are intended to end up on.\n- _resourceID ResourceID used when {deposit} was executed.\n- _lenDestinationRecipientAddress Used to parse recipient's address from {_destinationRecipientAddress}\n- _destinationRecipientAddress Address tokens are intended to be deposited to on desitnation chain.\n- _depositer Address that initially called {deposit} in the Bridge contract.\n- _amount Amount of tokens that were deposited." - }, - "id": 6941, - "name": "StructuredDocumentation", - "src": "2885:782:34" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "depositNonce", - "overrides": null, - "scope": 6957, - "stateVariable": false, - "storageLocation": "default", - "type": "uint64", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint64", - "type": "uint64" - }, - "id": 6942, - "name": "ElementaryTypeName", - "src": "3698:6:34" - } - ], - "id": 6943, - "name": "VariableDeclaration", - "src": "3698:19:34" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "destId", - "overrides": null, - "scope": 6957, - "stateVariable": false, - "storageLocation": "default", - "type": "uint8", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint8", - "type": "uint8" - }, - "id": 6944, - "name": "ElementaryTypeName", - "src": "3719:5:34" - } - ], - "id": 6945, - "name": "VariableDeclaration", - "src": "3719:12:34" - } - ], - "id": 6946, - "name": "ParameterList", - "src": "3697:35:34" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "", - "overrides": null, - "scope": 6957, - "stateVariable": false, - "storageLocation": "memory", - "type": "struct ERC20Handler.DepositRecord", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "DepositRecord", - "referencedDeclaration": 6840, - "type": "struct ERC20Handler.DepositRecord" - }, - "id": 6947, - "name": "UserDefinedTypeName", - "src": "3756:13:34" - } - ], - "id": 6948, - "name": "VariableDeclaration", - "src": "3756:20:34" - } - ], - "id": 6949, - "name": "ParameterList", - "src": "3755:22:34" - }, + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "4986:5:20" + }, + "nodeType": "YulFunctionCall", + "src": "4986:11:20" + }, + "variableNames": [ + { + "name": "recipientAddress", + "nodeType": "YulIdentifier", + "src": "4966:16:20" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5011:41:20", + "value": { + "arguments": [ { - "children": [ - { - "attributes": { - "functionReturnParameters": 6949 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct ERC20Handler.DepositRecord storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "mapping(uint64 => struct ERC20Handler.DepositRecord storage ref)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6846, - "type": "mapping(uint8 => mapping(uint64 => struct ERC20Handler.DepositRecord storage ref))", - "value": "_depositRecords" - }, - "id": 6950, - "name": "Identifier", - "src": "3795:15:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6945, - "type": "uint8", - "value": "destId" - }, - "id": 6951, - "name": "Identifier", - "src": "3811:6:34" - } - ], - "id": 6952, - "name": "IndexAccess", - "src": "3795:23:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6943, - "type": "uint64", - "value": "depositNonce" - }, - "id": 6953, - "name": "Identifier", - "src": "3819:12:34" - } - ], - "id": 6954, - "name": "IndexAccess", - "src": "3795:37:34" - } - ], - "id": 6955, - "name": "Return", - "src": "3788:44:34" - } - ], - "id": 6956, - "name": "Block", - "src": "3778:61:34" + "kind": "number", + "nodeType": "YulLiteral", + "src": "5047:4:20", + "type": "", + "value": "0xE4" } - ], - "id": 6957, - "name": "FunctionDefinition", - "src": "3672:167:34" - }, - { - "attributes": { - "baseFunctions": [8236], - "functionSelector": "38995da9", - "implemented": true, - "isConstructor": false, - "kind": "function", - "name": "deposit", - "scope": 7269, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5034:12:20" + }, + "nodeType": "YulFunctionCall", + "src": "5034:18:20" }, - "children": [ - { - "attributes": { - "text": "@notice A deposit is initiatied by making a deposit in the Bridge contract.\n@param destinationChainID Chain ID of chain tokens are expected to be bridged to.\n@param depositNonce This value is generated as an ID by the Bridge contract.\n@param depositer Address of account making the deposit in the Bridge contract.\n@param data Consists of: {resourceID}, {amount}, {lenRecipientAddress}, and {recipientAddress}\nall padded to 32 bytes.\n@notice Data passed into the function should be constructed as follows:\namount uint256 bytes 0 - 32\nrecipientAddress length uint256 bytes 32 - 64\nrecipientAddress bytes bytes 64 - END\n@dev Depending if the corresponding {tokenAddress} for the parsed {resourceID} is\nmarked true in {_burnList}, deposited tokens will be burned, if not, they will be locked." - }, - "id": 6958, - "name": "StructuredDocumentation", - "src": "3845:950:34" - }, - { - "attributes": { - "overrides": [null] - }, - "id": 6970, - "name": "OverrideSpecifier", - "src": "4984:8:34" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "resourceID", - "overrides": null, - "scope": 7048, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 6959, - "name": "ElementaryTypeName", - "src": "4826:7:34" - } - ], - "id": 6960, - "name": "VariableDeclaration", - "src": "4826:18:34" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "destinationChainID", - "overrides": null, - "scope": 7048, - "stateVariable": false, - "storageLocation": "default", - "type": "uint8", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint8", - "type": "uint8" - }, - "id": 6961, - "name": "ElementaryTypeName", - "src": "4854:5:34" - } - ], - "id": 6962, - "name": "VariableDeclaration", - "src": "4854:26:34" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "depositNonce", - "overrides": null, - "scope": 7048, - "stateVariable": false, - "storageLocation": "default", - "type": "uint64", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint64", - "type": "uint64" - }, - "id": 6963, - "name": "ElementaryTypeName", - "src": "4890:6:34" - } - ], - "id": 6964, - "name": "VariableDeclaration", - "src": "4890:20:34" - }, + "variableNames": [ + { + "name": "lenRecipientAddress", + "nodeType": "YulIdentifier", + "src": "5011:19:20" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5073:4:20", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5083:4:20", + "type": "", + "value": "0x20" + }, + { + "arguments": [ { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "depositer", - "overrides": null, - "scope": 7048, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 6965, - "name": "ElementaryTypeName", - "src": "4920:7:34" - } - ], - "id": 6966, - "name": "VariableDeclaration", - "src": "4920:17:34" + "name": "recipientAddress", + "nodeType": "YulIdentifier", + "src": "5093:16:20" }, { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "data", - "overrides": null, - "scope": 7048, - "stateVariable": false, - "storageLocation": "calldata", - "type": "bytes", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes", - "type": "bytes" - }, - "id": 6967, - "name": "ElementaryTypeName", - "src": "4947:5:34" - } - ], - "id": 6968, - "name": "VariableDeclaration", - "src": "4947:21:34" + "name": "lenRecipientAddress", + "nodeType": "YulIdentifier", + "src": "5111:19:20" } - ], - "id": 6969, - "name": "ParameterList", - "src": "4816:158:34" - }, + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5089:3:20" + }, + "nodeType": "YulFunctionCall", + "src": "5089:42:20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5079:3:20" + }, + "nodeType": "YulFunctionCall", + "src": "5079:53:20" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5066:6:20" + }, + "nodeType": "YulFunctionCall", + "src": "5066:67:20" + }, + "nodeType": "YulExpressionStatement", + "src": "5066:67:20" + }, + { + "expression": { + "arguments": [ { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 6973, - "name": "ParameterList", - "src": "5004:0:34" + "name": "recipientAddress", + "nodeType": "YulIdentifier", + "src": "5180:16:20" }, { - "attributes": { - "arguments": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 8062, - "type": "modifier ()", - "value": "onlyBridge" - }, - "id": 6971, - "name": "Identifier", - "src": "4993:10:34" - } - ], - "id": 6972, - "name": "ModifierInvocation", - "src": "4993:10:34" + "kind": "number", + "nodeType": "YulLiteral", + "src": "5254:4:20", + "type": "", + "value": "0xE4" }, { - "children": [ - { - "attributes": { - "assignments": [6975], - "initialValue": null - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "recipientAddress", - "overrides": null, - "scope": 7047, - "stateVariable": false, - "storageLocation": "memory", - "type": "bytes", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes", - "type": "bytes" - }, - "id": 6974, - "name": "ElementaryTypeName", - "src": "5014:5:34" - } - ], - "id": 6975, - "name": "VariableDeclaration", - "src": "5014:31:34" - } - ], - "id": 6976, - "name": "VariableDeclarationStatement", - "src": "5014:31:34" - }, - { - "attributes": { - "assignments": [6978], - "initialValue": null - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "amount", - "overrides": null, - "scope": 7047, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 6977, - "name": "ElementaryTypeName", - "src": "5055:7:34" - } - ], - "id": 6978, - "name": "VariableDeclaration", - "src": "5055:21:34" - } - ], - "id": 6979, - "name": "VariableDeclarationStatement", - "src": "5055:21:34" - }, - { - "attributes": { - "assignments": [6981], - "initialValue": null - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "lenRecipientAddress", - "overrides": null, - "scope": 7047, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 6980, - "name": "ElementaryTypeName", - "src": "5086:7:34" - } - ], - "id": 6981, - "name": "VariableDeclaration", - "src": "5086:34:34" - } - ], - "id": 6982, - "name": "VariableDeclarationStatement", - "src": "5086:34:34" - }, - { - "attributes": { - "evmVersion": "istanbul", - "externalReferences": [ - { - "declaration": 6978, - "isOffset": false, - "isSlot": false, - "src": "5155:6:34", - "valueSize": 1 - }, - { - "declaration": 6981, - "isOffset": false, - "isSlot": false, - "src": "5241:19:34", - "valueSize": 1 - }, - { - "declaration": 6981, - "isOffset": false, - "isSlot": false, - "src": "5340:19:34", - "valueSize": 1 - }, - { - "declaration": 6975, - "isOffset": false, - "isSlot": false, - "src": "5197:16:34", - "valueSize": 1 - }, - { - "declaration": 6975, - "isOffset": false, - "isSlot": false, - "src": "5322:16:34", - "valueSize": 1 - }, - { - "declaration": 6975, - "isOffset": false, - "isSlot": false, - "src": "5406:16:34", - "valueSize": 1 - } - ], - "operations": "{\n amount := calldataload(0xC4)\n recipientAddress := mload(0x40)\n lenRecipientAddress := calldataload(0xE4)\n mstore(0x40, add(0x20, add(recipientAddress, lenRecipientAddress)))\n calldatacopy(recipientAddress, 0xE4, sub(calldatasize(), 0xE4))\n}" - }, - "children": [], - "id": 6983, - "name": "InlineAssembly", - "src": "5131:485:34" - }, - { - "attributes": { - "assignments": [6985] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "tokenAddress", - "overrides": null, - "scope": 7047, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 6984, - "name": "ElementaryTypeName", - "src": "5626:7:34" - } - ], - "id": 6985, - "name": "VariableDeclaration", - "src": "5626:20:34" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 8039, - "type": "mapping(bytes32 => address)", - "value": "_resourceIDToTokenContractAddress" - }, - "id": 6986, - "name": "Identifier", - "src": "5649:33:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6960, - "type": "bytes32", - "value": "resourceID" - }, - "id": 6987, - "name": "Identifier", - "src": "5683:10:34" - } - ], - "id": 6988, - "name": "IndexAccess", - "src": "5649:45:34" - } - ], - "id": 6989, - "name": "VariableDeclarationStatement", - "src": "5626:68:34" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_d6f36190bb0602e32e72016fc9d55735c428c14ee06e9999974578d6c009c7ad", - "typeString": "literal_string \"provided tokenAddress is not whitelisted\"" - } - ], - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 6990, - "name": "Identifier", - "src": "5704:7:34" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 8047, - "type": "mapping(address => bool)", - "value": "_contractWhitelist" - }, - "id": 6991, - "name": "Identifier", - "src": "5712:18:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6985, - "type": "address", - "value": "tokenAddress" - }, - "id": 6992, - "name": "Identifier", - "src": "5731:12:34" - } - ], - "id": 6993, - "name": "IndexAccess", - "src": "5712:32:34" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "70726f766964656420746f6b656e41646472657373206973206e6f742077686974656c6973746564", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"provided tokenAddress is not whitelisted\"", - "value": "provided tokenAddress is not whitelisted" - }, - "id": 6994, - "name": "Literal", - "src": "5746:42:34" - } - ], - "id": 6995, - "name": "FunctionCall", - "src": "5704:85:34" - } - ], - "id": 6996, - "name": "ExpressionStatement", - "src": "5704:85:34" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 8051, - "type": "mapping(address => bool)", - "value": "_burnList" - }, - "id": 6997, - "name": "Identifier", - "src": "5804:9:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6985, - "type": "address", - "value": "tokenAddress" - }, - "id": 6998, - "name": "Identifier", - "src": "5814:12:34" - } - ], - "id": 6999, - "name": "IndexAccess", - "src": "5804:23:34" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 5849, - "type": "function (address,address,uint256)", - "value": "burnERC20" - }, - "id": 7000, - "name": "Identifier", - "src": "5843:9:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6985, - "type": "address", - "value": "tokenAddress" - }, - "id": 7001, - "name": "Identifier", - "src": "5853:12:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6966, - "type": "address", - "value": "depositer" - }, - "id": 7002, - "name": "Identifier", - "src": "5867:9:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6978, - "type": "uint256", - "value": "amount" - }, - "id": 7003, - "name": "Identifier", - "src": "5878:6:34" - } - ], - "id": 7004, - "name": "FunctionCall", - "src": "5843:42:34" - } - ], - "id": 7005, - "name": "ExpressionStatement", - "src": "5843:42:34" - } - ], - "id": 7006, - "name": "Block", - "src": "5829:67:34" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 5778, - "type": "function (address,address,address,uint256)", - "value": "lockERC20" - }, - "id": 7007, - "name": "Identifier", - "src": "5916:9:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6985, - "type": "address", - "value": "tokenAddress" - }, - "id": 7008, - "name": "Identifier", - "src": "5926:12:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6966, - "type": "address", - "value": "depositer" - }, - "id": 7009, - "name": "Identifier", - "src": "5940:9:34" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "address", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_ERC20Handler_$7269", - "typeString": "contract ERC20Handler" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": null - }, - "id": 7010, - "name": "ElementaryTypeName", - "src": "5951:7:34" - } - ], - "id": 7011, - "name": "ElementaryTypeNameExpression", - "src": "5951:7:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": -28, - "type": "contract ERC20Handler", - "value": "this" - }, - "id": 7012, - "name": "Identifier", - "src": "5959:4:34" - } - ], - "id": 7013, - "name": "FunctionCall", - "src": "5951:13:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6978, - "type": "uint256", - "value": "amount" - }, - "id": 7014, - "name": "Identifier", - "src": "5966:6:34" - } - ], - "id": 7015, - "name": "FunctionCall", - "src": "5916:57:34" - } - ], - "id": 7016, - "name": "ExpressionStatement", - "src": "5916:57:34" - } - ], - "id": 7017, - "name": "Block", - "src": "5902:82:34" - } - ], - "id": 7018, - "name": "IfStatement", - "src": "5800:184:34" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "struct ERC20Handler.DepositRecord storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "struct ERC20Handler.DepositRecord storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "mapping(uint64 => struct ERC20Handler.DepositRecord storage ref)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6846, - "type": "mapping(uint8 => mapping(uint64 => struct ERC20Handler.DepositRecord storage ref))", - "value": "_depositRecords" - }, - "id": 7019, - "name": "Identifier", - "src": "5994:15:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6962, - "type": "uint8", - "value": "destinationChainID" - }, - "id": 7020, - "name": "Identifier", - "src": "6010:18:34" - } - ], - "id": 7022, - "name": "IndexAccess", - "src": "5994:35:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6964, - "type": "uint64", - "value": "depositNonce" - }, - "id": 7021, - "name": "Identifier", - "src": "6030:12:34" - } - ], - "id": 7023, - "name": "IndexAccess", - "src": "5994:49:34" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": true, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "struct ERC20Handler.DepositRecord memory", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 6840, - "type": "type(struct ERC20Handler.DepositRecord storage pointer)", - "value": "DepositRecord" - }, - "id": 7024, - "name": "Identifier", - "src": "6046:13:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6985, - "type": "address", - "value": "tokenAddress" - }, - "id": 7025, - "name": "Identifier", - "src": "6073:12:34" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "uint8", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(uint8)" - }, - "children": [ - { - "attributes": { - "name": "uint8", - "type": null - }, - "id": 7026, - "name": "ElementaryTypeName", - "src": "6099:5:34" - } - ], - "id": 7027, - "name": "ElementaryTypeNameExpression", - "src": "6099:5:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6981, - "type": "uint256", - "value": "lenRecipientAddress" - }, - "id": 7028, - "name": "Identifier", - "src": "6105:19:34" - } - ], - "id": 7029, - "name": "FunctionCall", - "src": "6099:26:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6962, - "type": "uint8", - "value": "destinationChainID" - }, - "id": 7030, - "name": "Identifier", - "src": "6139:18:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6960, - "type": "bytes32", - "value": "resourceID" - }, - "id": 7031, - "name": "Identifier", - "src": "6171:10:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6975, - "type": "bytes memory", - "value": "recipientAddress" - }, - "id": 7032, - "name": "Identifier", - "src": "6195:16:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6966, - "type": "address", - "value": "depositer" - }, - "id": 7033, - "name": "Identifier", - "src": "6225:9:34" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 7207, - "type": "function (address,uint256) returns (uint256)", - "value": "toDestBalance" - }, - "id": 7034, - "name": "Identifier", - "src": "6248:13:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6985, - "type": "address", - "value": "tokenAddress" - }, - "id": 7035, - "name": "Identifier", - "src": "6262:12:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6978, - "type": "uint256", - "value": "amount" - }, - "id": 7036, - "name": "Identifier", - "src": "6276:6:34" - } - ], - "id": 7037, - "name": "FunctionCall", - "src": "6248:35:34" - } - ], - "id": 7038, - "name": "FunctionCall", - "src": "6046:247:34" - } - ], - "id": 7039, - "name": "Assignment", - "src": "5994:299:34" - } - ], - "id": 7040, - "name": "ExpressionStatement", - "src": "5994:299:34" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 6862, - "type": "function (address,address,uint256)", - "value": "Withdrawn" - }, - "id": 7041, - "name": "Identifier", - "src": "6309:9:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6985, - "type": "address", - "value": "tokenAddress" - }, - "id": 7042, - "name": "Identifier", - "src": "6319:12:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6966, - "type": "address", - "value": "depositer" - }, - "id": 7043, - "name": "Identifier", - "src": "6333:9:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6978, - "type": "uint256", - "value": "amount" - }, - "id": 7044, - "name": "Identifier", - "src": "6344:6:34" - } - ], - "id": 7045, - "name": "FunctionCall", - "src": "6309:42:34" - } - ], - "id": 7046, - "name": "EmitStatement", - "src": "6304:47:34" - } - ], - "id": 7047, - "name": "Block", - "src": "5004:1354:34" + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "calldatasize", + "nodeType": "YulIdentifier", + "src": "5311:12:20" + }, + "nodeType": "YulFunctionCall", + "src": "5311:14:20" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5327:4:20", + "type": "", + "value": "0xE4" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "5307:3:20" + }, + "nodeType": "YulFunctionCall", + "src": "5307:25:20" } - ], - "id": 7048, - "name": "FunctionDefinition", - "src": "4800:1558:34" + ], + "functionName": { + "name": "calldatacopy", + "nodeType": "YulIdentifier", + "src": "5149:12:20" + }, + "nodeType": "YulFunctionCall", + "src": "5149:234:20" + }, + "nodeType": "YulExpressionStatement", + "src": "5149:234:20" + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2180, + "isOffset": false, + "isSlot": false, + "src": "4922:6:20", + "valueSize": 1 }, { - "attributes": { - "baseFunctions": [8244], - "functionSelector": "e248cff2", - "implemented": true, - "isConstructor": false, - "kind": "function", - "name": "executeProposal", - "scope": 7269, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" + "declaration": 2183, + "isOffset": false, + "isSlot": false, + "src": "5011:19:20", + "valueSize": 1 + }, + { + "declaration": 2183, + "isOffset": false, + "isSlot": false, + "src": "5111:19:20", + "valueSize": 1 + }, + { + "declaration": 2177, + "isOffset": false, + "isSlot": false, + "src": "4966:16:20", + "valueSize": 1 + }, + { + "declaration": 2177, + "isOffset": false, + "isSlot": false, + "src": "5093:16:20", + "valueSize": 1 + }, + { + "declaration": 2177, + "isOffset": false, + "isSlot": false, + "src": "5180:16:20", + "valueSize": 1 + } + ], + "id": 2185, + "nodeType": "InlineAssembly", + "src": "4896:498:20" + }, + { + "assignments": [ + 2187 + ], + "declarations": [ + { + "constant": false, + "id": 2187, + "mutability": "mutable", + "name": "tokenAddress", + "nameLocation": "5414:12:20", + "nodeType": "VariableDeclaration", + "scope": 2240, + "src": "5406:20:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2186, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5406:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 2191, + "initialValue": { + "baseExpression": { + "id": 2188, + "name": "_resourceIDToTokenContractAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3089, + "src": "5429:33:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + } + }, + "id": 2190, + "indexExpression": { + "id": 2189, + "name": "resourceID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2162, + "src": "5463:10:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5429:45:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5406:68:20" + }, + { + "expression": { + "arguments": [ + { + "baseExpression": { + "id": 2193, + "name": "_contractWhitelist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3097, + "src": "5493:18:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2195, + "indexExpression": { + "id": 2194, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2187, + "src": "5512:12:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5493:32:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "70726f766964656420746f6b656e41646472657373206973206e6f742077686974656c6973746564", + "id": 2196, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5527:42:20", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d6f36190bb0602e32e72016fc9d55735c428c14ee06e9999974578d6c009c7ad", + "typeString": "literal_string \"provided tokenAddress is not whitelisted\"" + }, + "value": "provided tokenAddress is not whitelisted" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" }, - "children": [ + { + "typeIdentifier": "t_stringliteral_d6f36190bb0602e32e72016fc9d55735c428c14ee06e9999974578d6c009c7ad", + "typeString": "literal_string \"provided tokenAddress is not whitelisted\"" + } + ], + "id": 2192, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "5485:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2197, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5485:85:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2198, + "nodeType": "ExpressionStatement", + "src": "5485:85:20" + }, + { + "condition": { + "baseExpression": { + "id": 2199, + "name": "_burnList", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3101, + "src": "5587:9:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2201, + "indexExpression": { + "id": 2200, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2187, + "src": "5597:12:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5587:23:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 2219, + "nodeType": "Block", + "src": "5687:84:20", + "statements": [ + { + "expression": { + "arguments": [ { - "attributes": { - "text": "@notice Proposal execution should be initiated when a proposal is finalized in the Bridge contract.\nby a relayer on the deposit's destination chain.\n@param data Consists of {resourceID}, {amount}, {lenDestinationRecipientAddress},\nand {destinationRecipientAddress} all padded to 32 bytes.\n@notice Data passed into the function should be constructed as follows:\namount uint256 bytes 0 - 32\ndestinationRecipientAddress length uint256 bytes 32 - 64\ndestinationRecipientAddress bytes bytes 64 - END" - }, - "id": 7049, - "name": "StructuredDocumentation", - "src": "6364:634:34" + "id": 2210, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2187, + "src": "5712:12:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, { - "attributes": { - "overrides": [null] - }, - "id": 7055, - "name": "OverrideSpecifier", - "src": "7078:8:34" + "id": 2211, + "name": "depositer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2168, + "src": "5726:9:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "resourceID", - "overrides": null, - "scope": 7126, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 7050, - "name": "ElementaryTypeName", - "src": "7028:7:34" - } - ], - "id": 7051, - "name": "VariableDeclaration", - "src": "7028:18:34" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "data", - "overrides": null, - "scope": 7126, - "stateVariable": false, - "storageLocation": "calldata", - "type": "bytes", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes", - "type": "bytes" - }, - "id": 7052, - "name": "ElementaryTypeName", - "src": "7048:5:34" - } - ], - "id": 7053, - "name": "VariableDeclaration", - "src": "7048:19:34" - } + "arguments": [ + { + "id": 2214, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967268, + "src": "5745:4:20", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Handler_$2322", + "typeString": "contract ERC20Handler" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20Handler_$2322", + "typeString": "contract ERC20Handler" + } ], - "id": 7054, - "name": "ParameterList", - "src": "7027:41:34" + "id": 2213, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5737:7:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2212, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5737:7:20", + "typeDescriptions": {} + } + }, + "id": 2215, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5737:13:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 7058, - "name": "ParameterList", - "src": "7098:0:34" + "id": 2216, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2180, + "src": "5752:6:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2209, + "name": "lockERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1326, + "src": "5702:9:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,address,uint256)" + } + }, + "id": 2217, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5702:57:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2218, + "nodeType": "ExpressionStatement", + "src": "5702:57:20" + } + ] + }, + "id": 2220, + "nodeType": "IfStatement", + "src": "5583:188:20", + "trueBody": { + "id": 2208, + "nodeType": "Block", + "src": "5612:69:20", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2203, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2187, + "src": "5637:12:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, { - "attributes": { - "arguments": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 8062, - "type": "modifier ()", - "value": "onlyBridge" - }, - "id": 7056, - "name": "Identifier", - "src": "7087:10:34" - } - ], - "id": 7057, - "name": "ModifierInvocation", - "src": "7087:10:34" + "id": 2204, + "name": "depositer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2168, + "src": "5651:9:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, { - "children": [ - { - "attributes": { - "assignments": [7060], - "initialValue": null - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "amount", - "overrides": null, - "scope": 7125, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 7059, - "name": "ElementaryTypeName", - "src": "7108:7:34" - } - ], - "id": 7060, - "name": "VariableDeclaration", - "src": "7108:20:34" - } - ], - "id": 7061, - "name": "VariableDeclarationStatement", - "src": "7108:20:34" - }, - { - "attributes": { - "assignments": [7063], - "initialValue": null - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "destinationRecipientAddress", - "overrides": null, - "scope": 7125, - "stateVariable": false, - "storageLocation": "memory", - "type": "bytes", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes", - "type": "bytes" - }, - "id": 7062, - "name": "ElementaryTypeName", - "src": "7138:5:34" - } - ], - "id": 7063, - "name": "VariableDeclaration", - "src": "7138:41:34" - } - ], - "id": 7064, - "name": "VariableDeclarationStatement", - "src": "7138:41:34" - }, - { - "attributes": { - "evmVersion": "istanbul", - "externalReferences": [ - { - "declaration": 7060, - "isOffset": false, - "isSlot": false, - "src": "7213:6:34", - "valueSize": 1 - }, - { - "declaration": 7063, - "isOffset": false, - "isSlot": false, - "src": "7255:27:34", - "valueSize": 1 - }, - { - "declaration": 7063, - "isOffset": false, - "isSlot": false, - "src": "7406:27:34", - "valueSize": 1 - }, - { - "declaration": 7063, - "isOffset": false, - "isSlot": false, - "src": "7660:27:34", - "valueSize": 1 - } - ], - "operations": "{\n amount := calldataload(0x64)\n destinationRecipientAddress := mload(0x40)\n let lenDestinationRecipientAddress := calldataload(0x84)\n mstore(0x40, add(0x20, add(destinationRecipientAddress, lenDestinationRecipientAddress)))\n calldatacopy(destinationRecipientAddress, 0x84, sub(calldatasize(), 0x84))\n}" - }, - "children": [], - "id": 7065, - "name": "InlineAssembly", - "src": "7190:690:34" - }, - { - "attributes": { - "assignments": [7067], - "initialValue": null - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "recipientAddress", - "overrides": null, - "scope": 7125, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes20", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes20", - "type": "bytes20" - }, - "id": 7066, - "name": "ElementaryTypeName", - "src": "7890:7:34" - } - ], - "id": 7067, - "name": "VariableDeclaration", - "src": "7890:24:34" - } - ], - "id": 7068, - "name": "VariableDeclarationStatement", - "src": "7890:24:34" - }, - { - "attributes": { - "assignments": [7070] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "tokenAddress", - "overrides": null, - "scope": 7125, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 7069, - "name": "ElementaryTypeName", - "src": "7924:7:34" - } - ], - "id": 7070, - "name": "VariableDeclaration", - "src": "7924:20:34" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 8039, - "type": "mapping(bytes32 => address)", - "value": "_resourceIDToTokenContractAddress" - }, - "id": 7071, - "name": "Identifier", - "src": "7947:33:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7051, - "type": "bytes32", - "value": "resourceID" - }, - "id": 7072, - "name": "Identifier", - "src": "7981:10:34" - } - ], - "id": 7073, - "name": "IndexAccess", - "src": "7947:45:34" - } - ], - "id": 7074, - "name": "VariableDeclarationStatement", - "src": "7924:68:34" - }, - { - "attributes": { - "evmVersion": "istanbul", - "externalReferences": [ - { - "declaration": 7063, - "isOffset": false, - "isSlot": false, - "src": "8056:27:34", - "valueSize": 1 - }, - { - "declaration": 7067, - "isOffset": false, - "isSlot": false, - "src": "8026:16:34", - "valueSize": 1 - } - ], - "operations": "{\n recipientAddress := mload(add(destinationRecipientAddress, 0x20))\n}" - }, - "children": [], - "id": 7075, - "name": "InlineAssembly", - "src": "8003:98:34" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_d6f36190bb0602e32e72016fc9d55735c428c14ee06e9999974578d6c009c7ad", - "typeString": "literal_string \"provided tokenAddress is not whitelisted\"" - } - ], - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 7076, - "name": "Identifier", - "src": "8111:7:34" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 8047, - "type": "mapping(address => bool)", - "value": "_contractWhitelist" - }, - "id": 7077, - "name": "Identifier", - "src": "8119:18:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7070, - "type": "address", - "value": "tokenAddress" - }, - "id": 7078, - "name": "Identifier", - "src": "8138:12:34" - } - ], - "id": 7079, - "name": "IndexAccess", - "src": "8119:32:34" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "70726f766964656420746f6b656e41646472657373206973206e6f742077686974656c6973746564", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"provided tokenAddress is not whitelisted\"", - "value": "provided tokenAddress is not whitelisted" - }, - "id": 7080, - "name": "Literal", - "src": "8153:42:34" - } - ], - "id": 7081, - "name": "FunctionCall", - "src": "8111:85:34" - } - ], - "id": 7082, - "name": "ExpressionStatement", - "src": "8111:85:34" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 8051, - "type": "mapping(address => bool)", - "value": "_burnList" - }, - "id": 7083, - "name": "Identifier", - "src": "8211:9:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7070, - "type": "address", - "value": "tokenAddress" - }, - "id": 7084, - "name": "Identifier", - "src": "8221:12:34" - } - ], - "id": 7085, - "name": "IndexAccess", - "src": "8211:23:34" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 5825, - "type": "function (address,address,uint256)", - "value": "mintERC20" - }, - "id": 7086, - "name": "Identifier", - "src": "8250:9:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7070, - "type": "address", - "value": "tokenAddress" - }, - "id": 7087, - "name": "Identifier", - "src": "8260:12:34" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "address payable", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes20", - "typeString": "bytes20" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": null - }, - "id": 7088, - "name": "ElementaryTypeName", - "src": "8274:7:34" - } - ], - "id": 7089, - "name": "ElementaryTypeNameExpression", - "src": "8274:7:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7067, - "type": "bytes20", - "value": "recipientAddress" - }, - "id": 7090, - "name": "Identifier", - "src": "8282:16:34" - } - ], - "id": 7091, - "name": "FunctionCall", - "src": "8274:25:34" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 7268, - "type": "function (address,uint256) returns (uint256)", - "value": "toSrcBalance" - }, - "id": 7092, - "name": "Identifier", - "src": "8301:12:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7070, - "type": "address", - "value": "tokenAddress" - }, - "id": 7093, - "name": "Identifier", - "src": "8314:12:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7060, - "type": "uint256", - "value": "amount" - }, - "id": 7094, - "name": "Identifier", - "src": "8328:6:34" - } - ], - "id": 7095, - "name": "FunctionCall", - "src": "8301:34:34" - } - ], - "id": 7096, - "name": "FunctionCall", - "src": "8250:86:34" - } - ], - "id": 7097, - "name": "ExpressionStatement", - "src": "8250:86:34" - } - ], - "id": 7098, - "name": "Block", - "src": "8236:111:34" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 5801, - "type": "function (address,address,uint256)", - "value": "releaseERC20" - }, - "id": 7099, - "name": "Identifier", - "src": "8367:12:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7070, - "type": "address", - "value": "tokenAddress" - }, - "id": 7100, - "name": "Identifier", - "src": "8380:12:34" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "address payable", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes20", - "typeString": "bytes20" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": null - }, - "id": 7101, - "name": "ElementaryTypeName", - "src": "8394:7:34" - } - ], - "id": 7102, - "name": "ElementaryTypeNameExpression", - "src": "8394:7:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7067, - "type": "bytes20", - "value": "recipientAddress" - }, - "id": 7103, - "name": "Identifier", - "src": "8402:16:34" - } - ], - "id": 7104, - "name": "FunctionCall", - "src": "8394:25:34" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 7268, - "type": "function (address,uint256) returns (uint256)", - "value": "toSrcBalance" - }, - "id": 7105, - "name": "Identifier", - "src": "8421:12:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7070, - "type": "address", - "value": "tokenAddress" - }, - "id": 7106, - "name": "Identifier", - "src": "8434:12:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7060, - "type": "uint256", - "value": "amount" - }, - "id": 7107, - "name": "Identifier", - "src": "8448:6:34" - } - ], - "id": 7108, - "name": "FunctionCall", - "src": "8421:34:34" - } - ], - "id": 7109, - "name": "FunctionCall", - "src": "8367:89:34" - } - ], - "id": 7110, - "name": "ExpressionStatement", - "src": "8367:89:34" - } - ], - "id": 7111, - "name": "Block", - "src": "8353:114:34" - } - ], - "id": 7112, - "name": "IfStatement", - "src": "8207:260:34" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 6854, - "type": "function (address,address,uint256)", - "value": "Deposited" - }, - "id": 7113, - "name": "Identifier", - "src": "8482:9:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7070, - "type": "address", - "value": "tokenAddress" - }, - "id": 7114, - "name": "Identifier", - "src": "8492:12:34" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "address payable", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes20", - "typeString": "bytes20" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": null - }, - "id": 7115, - "name": "ElementaryTypeName", - "src": "8506:7:34" - } - ], - "id": 7116, - "name": "ElementaryTypeNameExpression", - "src": "8506:7:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7067, - "type": "bytes20", - "value": "recipientAddress" - }, - "id": 7117, - "name": "Identifier", - "src": "8514:16:34" - } - ], - "id": 7118, - "name": "FunctionCall", - "src": "8506:25:34" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 7268, - "type": "function (address,uint256) returns (uint256)", - "value": "toSrcBalance" - }, - "id": 7119, - "name": "Identifier", - "src": "8533:12:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7070, - "type": "address", - "value": "tokenAddress" - }, - "id": 7120, - "name": "Identifier", - "src": "8546:12:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7060, - "type": "uint256", - "value": "amount" - }, - "id": 7121, - "name": "Identifier", - "src": "8560:6:34" - } - ], - "id": 7122, - "name": "FunctionCall", - "src": "8533:34:34" - } - ], - "id": 7123, - "name": "FunctionCall", - "src": "8482:86:34" - } - ], - "id": 7124, - "name": "EmitStatement", - "src": "8477:91:34" - } - ], - "id": 7125, - "name": "Block", - "src": "7098:1477:34" + "id": 2205, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2180, + "src": "5662:6:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2202, + "name": "burnERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1400, + "src": "5627:9:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 2206, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5627:42:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2207, + "nodeType": "ExpressionStatement", + "src": "5627:42:20" + } + ] + } + }, + { + "expression": { + "id": 2238, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "baseExpression": { + "id": 2221, + "name": "_depositRecords", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2063, + "src": "5783:15:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint8_$_t_mapping$_t_uint64_$_t_struct$_DepositRecord_$2056_storage_$_$", + "typeString": "mapping(uint8 => mapping(uint64 => struct ERC20Handler.DepositRecord storage ref))" + } + }, + "id": 2224, + "indexExpression": { + "id": 2222, + "name": "destinationChainID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2164, + "src": "5799:18:20", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5783:35:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_DepositRecord_$2056_storage_$", + "typeString": "mapping(uint64 => struct ERC20Handler.DepositRecord storage ref)" + } + }, + "id": 2225, + "indexExpression": { + "id": 2223, + "name": "depositNonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2166, + "src": "5819:12:20", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5783:49:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DepositRecord_$2056_storage", + "typeString": "struct ERC20Handler.DepositRecord storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 2227, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2187, + "src": "5863:12:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "id": 2230, + "name": "lenRecipientAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2183, + "src": "5896:19:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2229, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5890:5:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" + }, + "typeName": { + "id": 2228, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "5890:5:20", + "typeDescriptions": {} + } + }, + "id": 2231, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5890:26:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "id": 2232, + "name": "destinationChainID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2164, + "src": "5931:18:20", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "id": 2233, + "name": "resourceID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2162, + "src": "5964:10:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 2234, + "name": "recipientAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2177, + "src": "5989:16:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 2235, + "name": "depositer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2168, + "src": "6020:9:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2236, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2180, + "src": "6044:6:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2226, + "name": "DepositRecord", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2056, + "src": "5835:13:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_DepositRecord_$2056_storage_ptr_$", + "typeString": "type(struct ERC20Handler.DepositRecord storage pointer)" + } + }, + "id": 2237, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5835:226:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_DepositRecord_$2056_memory_ptr", + "typeString": "struct ERC20Handler.DepositRecord memory" + } + }, + "src": "5783:278:20", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DepositRecord_$2056_storage", + "typeString": "struct ERC20Handler.DepositRecord storage ref" + } + }, + "id": 2239, + "nodeType": "ExpressionStatement", + "src": "5783:278:20" + } + ] + }, + "documentation": { + "id": 2160, + "nodeType": "StructuredDocumentation", + "src": "3585:963:20", + "text": "@notice A deposit is initiatied by making a deposit in the Bridge contract.\n@param destinationChainID Chain ID of chain tokens are expected to be bridged to.\n@param depositNonce This value is generated as an ID by the Bridge contract.\n@param depositer Address of account making the deposit in the Bridge contract.\n@param data Consists of: {resourceID}, {amount}, {lenRecipientAddress}, and {recipientAddress}\nall padded to 32 bytes.\n@notice Data passed into the function should be constructed as follows:\namount uint256 bytes 0 - 32\nrecipientAddress length uint256 bytes 32 - 64\nrecipientAddress bytes bytes 64 - END\n@dev Depending if the corresponding {tokenAddress} for the parsed {resourceID} is\nmarked true in {_burnList}, deposited tokens will be burned, if not, they will be locked." + }, + "functionSelector": "38995da9", + "id": 2241, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2174, + "kind": "modifierInvocation", + "modifierName": { + "id": 2173, + "name": "onlyBridge", + "nameLocations": [ + "4753:10:20" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3108, + "src": "4753:10:20" + }, + "nodeType": "ModifierInvocation", + "src": "4753:10:20" + } + ], + "name": "deposit", + "nameLocation": "4563:7:20", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 2172, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4744:8:20" + }, + "parameters": { + "id": 2171, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2162, + "mutability": "mutable", + "name": "resourceID", + "nameLocation": "4589:10:20", + "nodeType": "VariableDeclaration", + "scope": 2241, + "src": "4581:18:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2161, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4581:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2164, + "mutability": "mutable", + "name": "destinationChainID", + "nameLocation": "4618:18:20", + "nodeType": "VariableDeclaration", + "scope": 2241, + "src": "4610:26:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 2163, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "4610:5:20", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2166, + "mutability": "mutable", + "name": "depositNonce", + "nameLocation": "4655:12:20", + "nodeType": "VariableDeclaration", + "scope": 2241, + "src": "4647:20:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 2165, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "4647:6:20", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2168, + "mutability": "mutable", + "name": "depositer", + "nameLocation": "4686:9:20", + "nodeType": "VariableDeclaration", + "scope": 2241, + "src": "4678:17:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2167, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4678:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2170, + "mutability": "mutable", + "name": "data", + "nameLocation": "4723:4:20", + "nodeType": "VariableDeclaration", + "scope": 2241, + "src": "4706:21:20", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2169, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4706:5:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "4570:164:20" + }, + "returnParameters": { + "id": 2175, + "nodeType": "ParameterList", + "parameters": [], + "src": "4764:0:20" + }, + "scope": 2322, + "src": "4554:1515:20", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 3262 + ], + "body": { + "id": 2300, + "nodeType": "Block", + "src": "6821:1352:20", + "statements": [ + { + "assignments": [ + 2253 + ], + "declarations": [ + { + "constant": false, + "id": 2253, + "mutability": "mutable", + "name": "amount", + "nameLocation": "6846:6:20", + "nodeType": "VariableDeclaration", + "scope": 2300, + "src": "6832:20:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2252, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6832:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2254, + "nodeType": "VariableDeclarationStatement", + "src": "6832:20:20" + }, + { + "assignments": [ + 2256 + ], + "declarations": [ + { + "constant": false, + "id": 2256, + "mutability": "mutable", + "name": "destinationRecipientAddress", + "nameLocation": "6877:27:20", + "nodeType": "VariableDeclaration", + "scope": 2300, + "src": "6863:41:20", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2255, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6863:5:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 2257, + "nodeType": "VariableDeclarationStatement", + "src": "6863:41:20" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "6926:694:20", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6941:28:20", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6964:4:20", + "type": "", + "value": "0x64" } - ], - "id": 7126, - "name": "FunctionDefinition", - "src": "7003:1572:34" - }, - { - "attributes": { - "baseFunctions": [8137], - "functionSelector": "d9caed12", - "implemented": true, - "isConstructor": false, - "kind": "function", - "name": "withdraw", - "scope": 7269, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "6951:12:20" + }, + "nodeType": "YulFunctionCall", + "src": "6951:18:20" }, - "children": [ + "variableNames": [ + { + "name": "amount", + "nodeType": "YulIdentifier", + "src": "6941:6:20" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "6985:42:20", + "value": { + "arguments": [ { - "attributes": { - "text": "@notice Used to manually release ERC20 tokens from ERC20Safe.\n@param tokenAddress Address of token contract to release.\n@param recipient Address to release tokens to.\n@param amount The amount of ERC20 tokens to release." - }, - "id": 7127, - "name": "StructuredDocumentation", - "src": "8581:263:34" - }, + "kind": "number", + "nodeType": "YulLiteral", + "src": "7022:4:20", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "7016:5:20" + }, + "nodeType": "YulFunctionCall", + "src": "7016:11:20" + }, + "variableNames": [ + { + "name": "destinationRecipientAddress", + "nodeType": "YulIdentifier", + "src": "6985:27:20" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "7041:56:20", + "value": { + "arguments": [ { - "attributes": { - "overrides": [null] - }, - "id": 7135, - "name": "OverrideSpecifier", - "src": "8930:8:34" + "kind": "number", + "nodeType": "YulLiteral", + "src": "7092:4:20", + "type": "", + "value": "0x84" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "7079:12:20" + }, + "nodeType": "YulFunctionCall", + "src": "7079:18:20" + }, + "variables": [ + { + "name": "lenDestinationRecipientAddress", + "nodeType": "YulTypedName", + "src": "7045:30:20", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7118:4:20", + "type": "", + "value": "0x40" }, { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "tokenAddress", - "overrides": null, - "scope": 7146, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 7128, - "name": "ElementaryTypeName", - "src": "8867:7:34" - } - ], - "id": 7129, - "name": "VariableDeclaration", - "src": "8867:20:34" - }, + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7128:4:20", + "type": "", + "value": "0x20" + }, + { + "arguments": [ { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "recipient", - "overrides": null, - "scope": 7146, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 7130, - "name": "ElementaryTypeName", - "src": "8889:7:34" - } - ], - "id": 7131, - "name": "VariableDeclaration", - "src": "8889:17:34" + "name": "destinationRecipientAddress", + "nodeType": "YulIdentifier", + "src": "7138:27:20" }, { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "amount", - "overrides": null, - "scope": 7146, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint", - "type": "uint256" - }, - "id": 7132, - "name": "ElementaryTypeName", - "src": "8908:4:34" - } - ], - "id": 7133, - "name": "VariableDeclaration", - "src": "8908:11:34" + "name": "lenDestinationRecipientAddress", + "nodeType": "YulIdentifier", + "src": "7167:30:20" } - ], - "id": 7134, - "name": "ParameterList", - "src": "8866:54:34" + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7134:3:20" + }, + "nodeType": "YulFunctionCall", + "src": "7134:64:20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7124:3:20" + }, + "nodeType": "YulFunctionCall", + "src": "7124:75:20" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7111:6:20" + }, + "nodeType": "YulFunctionCall", + "src": "7111:89:20" + }, + "nodeType": "YulExpressionStatement", + "src": "7111:89:20" + }, + { + "expression": { + "arguments": [ + { + "name": "destinationRecipientAddress", + "nodeType": "YulIdentifier", + "src": "7396:27:20" }, { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 7138, - "name": "ParameterList", - "src": "8950:0:34" + "kind": "number", + "nodeType": "YulLiteral", + "src": "7481:4:20", + "type": "", + "value": "0x84" }, { - "attributes": { - "arguments": null + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "calldatasize", + "nodeType": "YulIdentifier", + "src": "7537:12:20" + }, + "nodeType": "YulFunctionCall", + "src": "7537:14:20" }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 8062, - "type": "modifier ()", - "value": "onlyBridge" - }, - "id": 7136, - "name": "Identifier", - "src": "8939:10:34" - } - ], - "id": 7137, - "name": "ModifierInvocation", - "src": "8939:10:34" - }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7553:4:20", + "type": "", + "value": "0x84" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "7533:3:20" + }, + "nodeType": "YulFunctionCall", + "src": "7533:25:20" + } + ], + "functionName": { + "name": "calldatacopy", + "nodeType": "YulIdentifier", + "src": "7365:12:20" + }, + "nodeType": "YulFunctionCall", + "src": "7365:244:20" + }, + "nodeType": "YulExpressionStatement", + "src": "7365:244:20" + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2253, + "isOffset": false, + "isSlot": false, + "src": "6941:6:20", + "valueSize": 1 + }, + { + "declaration": 2256, + "isOffset": false, + "isSlot": false, + "src": "6985:27:20", + "valueSize": 1 + }, + { + "declaration": 2256, + "isOffset": false, + "isSlot": false, + "src": "7138:27:20", + "valueSize": 1 + }, + { + "declaration": 2256, + "isOffset": false, + "isSlot": false, + "src": "7396:27:20", + "valueSize": 1 + } + ], + "id": 2258, + "nodeType": "InlineAssembly", + "src": "6917:703:20" + }, + { + "assignments": [ + 2260 + ], + "declarations": [ + { + "constant": false, + "id": 2260, + "mutability": "mutable", + "name": "recipientAddress", + "nameLocation": "7640:16:20", + "nodeType": "VariableDeclaration", + "scope": 2300, + "src": "7632:24:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes20", + "typeString": "bytes20" + }, + "typeName": { + "id": 2259, + "name": "bytes20", + "nodeType": "ElementaryTypeName", + "src": "7632:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes20", + "typeString": "bytes20" + } + }, + "visibility": "internal" + } + ], + "id": 2261, + "nodeType": "VariableDeclarationStatement", + "src": "7632:24:20" + }, + { + "assignments": [ + 2263 + ], + "declarations": [ + { + "constant": false, + "id": 2263, + "mutability": "mutable", + "name": "tokenAddress", + "nameLocation": "7675:12:20", + "nodeType": "VariableDeclaration", + "scope": 2300, + "src": "7667:20:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2262, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7667:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 2267, + "initialValue": { + "baseExpression": { + "id": 2264, + "name": "_resourceIDToTokenContractAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3089, + "src": "7690:33:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + } + }, + "id": 2266, + "indexExpression": { + "id": 2265, + "name": "resourceID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2244, + "src": "7724:10:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7690:45:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7667:68:20" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "7757:91:20", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7772:65:20", + "value": { + "arguments": [ { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 5801, - "type": "function (address,address,uint256)", - "value": "releaseERC20" - }, - "id": 7139, - "name": "Identifier", - "src": "8960:12:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7129, - "type": "address", - "value": "tokenAddress" - }, - "id": 7140, - "name": "Identifier", - "src": "8973:12:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7131, - "type": "address", - "value": "recipient" - }, - "id": 7141, - "name": "Identifier", - "src": "8987:9:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7133, - "type": "uint256", - "value": "amount" - }, - "id": 7142, - "name": "Identifier", - "src": "8998:6:34" - } - ], - "id": 7143, - "name": "FunctionCall", - "src": "8960:45:34" - } - ], - "id": 7144, - "name": "ExpressionStatement", - "src": "8960:45:34" - } - ], - "id": 7145, - "name": "Block", - "src": "8950:62:34" + "arguments": [ + { + "name": "destinationRecipientAddress", + "nodeType": "YulIdentifier", + "src": "7802:27:20" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7831:4:20", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7798:3:20" + }, + "nodeType": "YulFunctionCall", + "src": "7798:38:20" } - ], - "id": 7146, - "name": "FunctionDefinition", - "src": "8849:163:34" - }, - { - "attributes": { - "documentation": null, - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [null], - "name": "toDestBalance", - "overrides": null, - "scope": 7269, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - "children": [ + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "7792:5:20" + }, + "nodeType": "YulFunctionCall", + "src": "7792:45:20" + }, + "variableNames": [ + { + "name": "recipientAddress", + "nodeType": "YulIdentifier", + "src": "7772:16:20" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2256, + "isOffset": false, + "isSlot": false, + "src": "7802:27:20", + "valueSize": 1 + }, + { + "declaration": 2260, + "isOffset": false, + "isSlot": false, + "src": "7772:16:20", + "valueSize": 1 + } + ], + "id": 2268, + "nodeType": "InlineAssembly", + "src": "7748:100:20" + }, + { + "expression": { + "arguments": [ + { + "baseExpression": { + "id": 2270, + "name": "_contractWhitelist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3097, + "src": "7868:18:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2272, + "indexExpression": { + "id": 2271, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2263, + "src": "7887:12:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7868:32:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "70726f766964656420746f6b656e41646472657373206973206e6f742077686974656c6973746564", + "id": 2273, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7902:42:20", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d6f36190bb0602e32e72016fc9d55735c428c14ee06e9999974578d6c009c7ad", + "typeString": "literal_string \"provided tokenAddress is not whitelisted\"" + }, + "value": "provided tokenAddress is not whitelisted" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d6f36190bb0602e32e72016fc9d55735c428c14ee06e9999974578d6c009c7ad", + "typeString": "literal_string \"provided tokenAddress is not whitelisted\"" + } + ], + "id": 2269, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "7860:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2274, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7860:85:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2275, + "nodeType": "ExpressionStatement", + "src": "7860:85:20" + }, + { + "condition": { + "baseExpression": { + "id": 2276, + "name": "_burnList", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3101, + "src": "7962:9:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2278, + "indexExpression": { + "id": 2277, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2263, + "src": "7972:12:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7962:23:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 2298, + "nodeType": "Block", + "src": "8078:88:20", + "statements": [ + { + "expression": { + "arguments": [ { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "tokenAddress", - "overrides": null, - "scope": 7207, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 7147, - "name": "ElementaryTypeName", - "src": "9041:7:34" - } - ], - "id": 7148, - "name": "VariableDeclaration", - "src": "9041:20:34" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "amount", - "overrides": null, - "scope": 7207, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 7149, - "name": "ElementaryTypeName", - "src": "9063:7:34" - } - ], - "id": 7150, - "name": "VariableDeclaration", - "src": "9063:14:34" - } - ], - "id": 7151, - "name": "ParameterList", - "src": "9040:38:34" + "id": 2290, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2263, + "src": "8106:12:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "", - "overrides": null, - "scope": 7207, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 7152, - "name": "ElementaryTypeName", - "src": "9096:7:34" - } - ], - "id": 7153, - "name": "VariableDeclaration", - "src": "9096:7:34" - } + "arguments": [ + { + "id": 2293, + "name": "recipientAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2260, + "src": "8128:16:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes20", + "typeString": "bytes20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes20", + "typeString": "bytes20" + } ], - "id": 7154, - "name": "ParameterList", - "src": "9095:9:34" + "id": 2292, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8120:7:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2291, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8120:7:20", + "typeDescriptions": {} + } + }, + "id": 2294, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8120:25:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, { - "children": [ - { - "attributes": { - "assignments": [7156] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "decimals", - "overrides": null, - "scope": 7206, - "stateVariable": false, - "storageLocation": "memory", - "type": "struct HandlerHelpers.Decimals", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "Decimals", - "referencedDeclaration": 8033, - "type": "struct HandlerHelpers.Decimals" - }, - "id": 7155, - "name": "UserDefinedTypeName", - "src": "9115:8:34" - } - ], - "id": 7156, - "name": "VariableDeclaration", - "src": "9115:24:34" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct HandlerHelpers.Decimals storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 8055, - "type": "mapping(address => struct HandlerHelpers.Decimals storage ref)", - "value": "_decimals" - }, - "id": 7157, - "name": "Identifier", - "src": "9142:9:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7148, - "type": "address", - "value": "tokenAddress" - }, - "id": 7158, - "name": "Identifier", - "src": "9152:12:34" - } - ], - "id": 7159, - "name": "IndexAccess", - "src": "9142:23:34" - } - ], - "id": 7160, - "name": "VariableDeclarationStatement", - "src": "9115:50:34" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_210a4f0f6d287f58fa7508b82e8ee4b9fa77631b2cd7ecb1c82d4cb54573bb89", - "typeString": "literal_string \"Wrong decimals\"" - } - ], - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 7161, - "name": "Identifier", - "src": "9243:7:34" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "&&", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "srcDecimals", - "referencedDeclaration": 8030, - "type": "uint8" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7156, - "type": "struct HandlerHelpers.Decimals memory", - "value": "decimals" - }, - "id": 7162, - "name": "Identifier", - "src": "9251:8:34" - } - ], - "id": 7163, - "name": "MemberAccess", - "src": "9251:20:34" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 7164, - "name": "Literal", - "src": "9275:1:34" - } - ], - "id": 7165, - "name": "BinaryOperation", - "src": "9251:25:34" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "destDecimals", - "referencedDeclaration": 8032, - "type": "uint8" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7156, - "type": "struct HandlerHelpers.Decimals memory", - "value": "decimals" - }, - "id": 7166, - "name": "Identifier", - "src": "9280:8:34" - } - ], - "id": 7167, - "name": "MemberAccess", - "src": "9280:21:34" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 7168, - "name": "Literal", - "src": "9305:1:34" - } - ], - "id": 7169, - "name": "BinaryOperation", - "src": "9280:26:34" - } - ], - "id": 7170, - "name": "BinaryOperation", - "src": "9251:55:34" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "57726f6e6720646563696d616c73", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"Wrong decimals\"", - "value": "Wrong decimals" - }, - "id": 7171, - "name": "Literal", - "src": "9308:16:34" - } - ], - "id": 7172, - "name": "FunctionCall", - "src": "9243:82:34" - } - ], - "id": 7173, - "name": "ExpressionStatement", - "src": "9243:82:34" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": ">=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "destDecimals", - "referencedDeclaration": 8032, - "type": "uint8" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7156, - "type": "struct HandlerHelpers.Decimals memory", - "value": "decimals" - }, - "id": 7174, - "name": "Identifier", - "src": "9339:8:34" - } - ], - "id": 7175, - "name": "MemberAccess", - "src": "9339:21:34" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "srcDecimals", - "referencedDeclaration": 8030, - "type": "uint8" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7156, - "type": "struct HandlerHelpers.Decimals memory", - "value": "decimals" - }, - "id": 7176, - "name": "Identifier", - "src": "9364:8:34" - } - ], - "id": 7177, - "name": "MemberAccess", - "src": "9364:20:34" - } - ], - "id": 7178, - "name": "BinaryOperation", - "src": "9339:45:34" - }, - { - "children": [ - { - "attributes": { - "functionReturnParameters": 7154 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "mul", - "referencedDeclaration": 820, - "type": "function (uint256,uint256) pure returns (uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7150, - "type": "uint256", - "value": "amount" - }, - "id": 7179, - "name": "Identifier", - "src": "9407:6:34" - } - ], - "id": 7180, - "name": "MemberAccess", - "src": "9407:10:34" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "**", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "hexvalue": "3130", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 10", - "value": "10" - }, - "id": 7181, - "name": "Literal", - "src": "9418:2:34" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "type": "uint8" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "-", - "type": "uint8" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "destDecimals", - "referencedDeclaration": 8032, - "type": "uint8" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 7156, - "type": "struct HandlerHelpers.Decimals memory", - "value": "decimals" - }, - "id": 7182, - "name": "Identifier", - "src": "9425:8:34" - } - ], - "id": 7183, - "name": "MemberAccess", - "src": "9425:21:34" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "srcDecimals", - "referencedDeclaration": 8030, - "type": "uint8" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 7156, - "type": "struct HandlerHelpers.Decimals memory", - "value": "decimals" - }, - "id": 7184, - "name": "Identifier", - "src": "9449:8:34" - } - ], - "id": 7185, - "name": "MemberAccess", - "src": "9449:20:34" - } - ], - "id": 7186, - "name": "BinaryOperation", - "src": "9425:44:34" - } - ], - "id": 7187, - "name": "TupleExpression", - "src": "9424:46:34" - } - ], - "id": 7188, - "name": "BinaryOperation", - "src": "9418:52:34" - } - ], - "id": 7189, - "name": "FunctionCall", - "src": "9407:64:34" - } - ], - "id": 7190, - "name": "Return", - "src": "9400:71:34" - } - ], - "id": 7191, - "name": "Block", - "src": "9386:96:34" - }, - { - "children": [ - { - "attributes": { - "functionReturnParameters": 7154 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "div", - "referencedDeclaration": 842, - "type": "function (uint256,uint256) pure returns (uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7150, - "type": "uint256", - "value": "amount" - }, - "id": 7192, - "name": "Identifier", - "src": "9509:6:34" - } - ], - "id": 7193, - "name": "MemberAccess", - "src": "9509:10:34" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "**", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "hexvalue": "3130", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 10", - "value": "10" - }, - "id": 7194, - "name": "Literal", - "src": "9520:2:34" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "type": "uint8" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "-", - "type": "uint8" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "srcDecimals", - "referencedDeclaration": 8030, - "type": "uint8" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 7156, - "type": "struct HandlerHelpers.Decimals memory", - "value": "decimals" - }, - "id": 7195, - "name": "Identifier", - "src": "9527:8:34" - } - ], - "id": 7196, - "name": "MemberAccess", - "src": "9527:20:34" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "destDecimals", - "referencedDeclaration": 8032, - "type": "uint8" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 7156, - "type": "struct HandlerHelpers.Decimals memory", - "value": "decimals" - }, - "id": 7197, - "name": "Identifier", - "src": "9550:8:34" - } - ], - "id": 7198, - "name": "MemberAccess", - "src": "9550:21:34" - } - ], - "id": 7199, - "name": "BinaryOperation", - "src": "9527:44:34" - } - ], - "id": 7200, - "name": "TupleExpression", - "src": "9526:46:34" - } - ], - "id": 7201, - "name": "BinaryOperation", - "src": "9520:52:34" - } - ], - "id": 7202, - "name": "FunctionCall", - "src": "9509:64:34" - } - ], - "id": 7203, - "name": "Return", - "src": "9502:71:34" - } - ], - "id": 7204, - "name": "Block", - "src": "9488:96:34" - } - ], - "id": 7205, - "name": "IfStatement", - "src": "9335:249:34" - } - ], - "id": 7206, - "name": "Block", - "src": "9105:485:34" + "id": 2295, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2253, + "src": "8147:6:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } } - ], - "id": 7207, - "name": "FunctionDefinition", - "src": "9018:572:34" - }, - { - "attributes": { - "documentation": null, - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [null], - "name": "toSrcBalance", - "overrides": null, - "scope": 7269, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - "children": [ + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2289, + "name": "releaseERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1350, + "src": "8093:12:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 2296, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8093:61:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2297, + "nodeType": "ExpressionStatement", + "src": "8093:61:20" + } + ] + }, + "id": 2299, + "nodeType": "IfStatement", + "src": "7958:208:20", + "trueBody": { + "id": 2288, + "nodeType": "Block", + "src": "7987:85:20", + "statements": [ + { + "expression": { + "arguments": [ { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "tokenAddress", - "overrides": null, - "scope": 7268, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 7208, - "name": "ElementaryTypeName", - "src": "9618:7:34" - } - ], - "id": 7209, - "name": "VariableDeclaration", - "src": "9618:20:34" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "amount", - "overrides": null, - "scope": 7268, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 7210, - "name": "ElementaryTypeName", - "src": "9640:7:34" - } - ], - "id": 7211, - "name": "VariableDeclaration", - "src": "9640:14:34" - } - ], - "id": 7212, - "name": "ParameterList", - "src": "9617:38:34" + "id": 2280, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2263, + "src": "8012:12:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "", - "overrides": null, - "scope": 7268, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 7213, - "name": "ElementaryTypeName", - "src": "9673:7:34" - } - ], - "id": 7214, - "name": "VariableDeclaration", - "src": "9673:7:34" - } + "arguments": [ + { + "id": 2283, + "name": "recipientAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2260, + "src": "8034:16:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes20", + "typeString": "bytes20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes20", + "typeString": "bytes20" + } ], - "id": 7215, - "name": "ParameterList", - "src": "9672:9:34" + "id": 2282, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8026:7:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2281, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8026:7:20", + "typeDescriptions": {} + } + }, + "id": 2284, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8026:25:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, { - "children": [ - { - "attributes": { - "assignments": [7217] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "decimals", - "overrides": null, - "scope": 7267, - "stateVariable": false, - "storageLocation": "memory", - "type": "struct HandlerHelpers.Decimals", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "Decimals", - "referencedDeclaration": 8033, - "type": "struct HandlerHelpers.Decimals" - }, - "id": 7216, - "name": "UserDefinedTypeName", - "src": "9692:8:34" - } - ], - "id": 7217, - "name": "VariableDeclaration", - "src": "9692:24:34" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct HandlerHelpers.Decimals storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 8055, - "type": "mapping(address => struct HandlerHelpers.Decimals storage ref)", - "value": "_decimals" - }, - "id": 7218, - "name": "Identifier", - "src": "9719:9:34" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7209, - "type": "address", - "value": "tokenAddress" - }, - "id": 7219, - "name": "Identifier", - "src": "9729:12:34" - } - ], - "id": 7220, - "name": "IndexAccess", - "src": "9719:23:34" - } - ], - "id": 7221, - "name": "VariableDeclarationStatement", - "src": "9692:50:34" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_210a4f0f6d287f58fa7508b82e8ee4b9fa77631b2cd7ecb1c82d4cb54573bb89", - "typeString": "literal_string \"Wrong decimals\"" - } - ], - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 7222, - "name": "Identifier", - "src": "9820:7:34" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "&&", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "srcDecimals", - "referencedDeclaration": 8030, - "type": "uint8" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7217, - "type": "struct HandlerHelpers.Decimals memory", - "value": "decimals" - }, - "id": 7223, - "name": "Identifier", - "src": "9828:8:34" - } - ], - "id": 7224, - "name": "MemberAccess", - "src": "9828:20:34" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 7225, - "name": "Literal", - "src": "9852:1:34" - } - ], - "id": 7226, - "name": "BinaryOperation", - "src": "9828:25:34" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "destDecimals", - "referencedDeclaration": 8032, - "type": "uint8" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7217, - "type": "struct HandlerHelpers.Decimals memory", - "value": "decimals" - }, - "id": 7227, - "name": "Identifier", - "src": "9857:8:34" - } - ], - "id": 7228, - "name": "MemberAccess", - "src": "9857:21:34" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 7229, - "name": "Literal", - "src": "9882:1:34" - } - ], - "id": 7230, - "name": "BinaryOperation", - "src": "9857:26:34" - } - ], - "id": 7231, - "name": "BinaryOperation", - "src": "9828:55:34" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "57726f6e6720646563696d616c73", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"Wrong decimals\"", - "value": "Wrong decimals" - }, - "id": 7232, - "name": "Literal", - "src": "9885:16:34" - } - ], - "id": 7233, - "name": "FunctionCall", - "src": "9820:82:34" - } - ], - "id": 7234, - "name": "ExpressionStatement", - "src": "9820:82:34" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": ">=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "destDecimals", - "referencedDeclaration": 8032, - "type": "uint8" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7217, - "type": "struct HandlerHelpers.Decimals memory", - "value": "decimals" - }, - "id": 7235, - "name": "Identifier", - "src": "9916:8:34" - } - ], - "id": 7236, - "name": "MemberAccess", - "src": "9916:21:34" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "srcDecimals", - "referencedDeclaration": 8030, - "type": "uint8" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7217, - "type": "struct HandlerHelpers.Decimals memory", - "value": "decimals" - }, - "id": 7237, - "name": "Identifier", - "src": "9941:8:34" - } - ], - "id": 7238, - "name": "MemberAccess", - "src": "9941:20:34" - } - ], - "id": 7239, - "name": "BinaryOperation", - "src": "9916:45:34" - }, - { - "children": [ - { - "attributes": { - "functionReturnParameters": 7215 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "div", - "referencedDeclaration": 842, - "type": "function (uint256,uint256) pure returns (uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7211, - "type": "uint256", - "value": "amount" - }, - "id": 7240, - "name": "Identifier", - "src": "9984:6:34" - } - ], - "id": 7241, - "name": "MemberAccess", - "src": "9984:10:34" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "**", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "hexvalue": "3130", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 10", - "value": "10" - }, - "id": 7242, - "name": "Literal", - "src": "9995:2:34" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "type": "uint8" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "-", - "type": "uint8" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "destDecimals", - "referencedDeclaration": 8032, - "type": "uint8" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 7217, - "type": "struct HandlerHelpers.Decimals memory", - "value": "decimals" - }, - "id": 7243, - "name": "Identifier", - "src": "10002:8:34" - } - ], - "id": 7244, - "name": "MemberAccess", - "src": "10002:21:34" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "srcDecimals", - "referencedDeclaration": 8030, - "type": "uint8" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 7217, - "type": "struct HandlerHelpers.Decimals memory", - "value": "decimals" - }, - "id": 7245, - "name": "Identifier", - "src": "10026:8:34" - } - ], - "id": 7246, - "name": "MemberAccess", - "src": "10026:20:34" - } - ], - "id": 7247, - "name": "BinaryOperation", - "src": "10002:44:34" - } - ], - "id": 7248, - "name": "TupleExpression", - "src": "10001:46:34" - } - ], - "id": 7249, - "name": "BinaryOperation", - "src": "9995:52:34" - } - ], - "id": 7250, - "name": "FunctionCall", - "src": "9984:64:34" - } - ], - "id": 7251, - "name": "Return", - "src": "9977:71:34" - } - ], - "id": 7252, - "name": "Block", - "src": "9963:96:34" - }, - { - "children": [ - { - "attributes": { - "functionReturnParameters": 7215 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "mul", - "referencedDeclaration": 820, - "type": "function (uint256,uint256) pure returns (uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7211, - "type": "uint256", - "value": "amount" - }, - "id": 7253, - "name": "Identifier", - "src": "10086:6:34" - } - ], - "id": 7254, - "name": "MemberAccess", - "src": "10086:10:34" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "**", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "hexvalue": "3130", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 10", - "value": "10" - }, - "id": 7255, - "name": "Literal", - "src": "10097:2:34" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "type": "uint8" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "-", - "type": "uint8" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "srcDecimals", - "referencedDeclaration": 8030, - "type": "uint8" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 7217, - "type": "struct HandlerHelpers.Decimals memory", - "value": "decimals" - }, - "id": 7256, - "name": "Identifier", - "src": "10104:8:34" - } - ], - "id": 7257, - "name": "MemberAccess", - "src": "10104:20:34" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "destDecimals", - "referencedDeclaration": 8032, - "type": "uint8" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 7217, - "type": "struct HandlerHelpers.Decimals memory", - "value": "decimals" - }, - "id": 7258, - "name": "Identifier", - "src": "10127:8:34" - } - ], - "id": 7259, - "name": "MemberAccess", - "src": "10127:21:34" - } - ], - "id": 7260, - "name": "BinaryOperation", - "src": "10104:44:34" - } - ], - "id": 7261, - "name": "TupleExpression", - "src": "10103:46:34" - } - ], - "id": 7262, - "name": "BinaryOperation", - "src": "10097:52:34" - } - ], - "id": 7263, - "name": "FunctionCall", - "src": "10086:64:34" - } - ], - "id": 7264, - "name": "Return", - "src": "10079:71:34" - } - ], - "id": 7265, - "name": "Block", - "src": "10065:96:34" - } - ], - "id": 7266, - "name": "IfStatement", - "src": "9912:249:34" - } - ], - "id": 7267, - "name": "Block", - "src": "9682:485:34" + "id": 2285, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2253, + "src": "8053:6:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } } - ], - "id": 7268, - "name": "FunctionDefinition", - "src": "9596:571:34" - } - ], - "id": 7269, - "name": "ContractDefinition", - "src": "455:9714:34" - } - ], - "id": 7270, - "name": "SourceUnit", - "src": "0:10170:34" - }, - "compiler": { - "name": "solc", - "version": "0.7.0+commit.9e61f92b.Emscripten.clang" - }, - "networks": { - "5": { - "events": {}, - "links": {}, - "address": "0x2B6Ab4b880A45a07d83Cf4d664Df4Ab85705Bc07", - "transactionHash": "0x3d335f830804f8295c02dc81b99de06bbe073765592ff54e1a5812276161e8e3" - }, - "5777": { - "events": {}, - "links": {}, - "address": "0xd2F2872344EC780Ea05a666bde107f80eba4e7e5", - "transactionHash": "0x0bbdbfa7584f7f6204aaeec451dc19cd0f8cef9244717806f63f31ec6f23ad3e" - }, - "1658807992770": { - "events": {}, - "links": {}, - "address": "0x2B6Ab4b880A45a07d83Cf4d664Df4Ab85705Bc07", - "transactionHash": "0x8f8e405786c008c9f69f490ba5df1c75ae8d1d89fa36b32f578ff773902b05ef" - } - }, - "schemaVersion": "3.4.8", - "updatedAt": "2022-07-27T05:41:53.403Z", - "networkType": "ethereum", - "devdoc": { - "author": "ChainSafe Systems.", - "kind": "dev", - "methods": { - "constructor": { - "details": "{initialResourceIDs} and {initialContractAddresses} must have the same length (one resourceID for every address). Also, these arrays must be ordered in the way that {initialResourceIDs}[0] is the intended resourceID for {initialContractAddresses}[0].", - "params": { - "bridgeAddress": "Contract address of previously deployed Bridge.", - "burnableContractAddresses": "These addresses will be set as burnable and when {deposit} is called, the deposited token will be burned. When {executeProposal} is called, new tokens will be minted.", - "initialContractAddresses": "These are the addresses the {initialResourceIDs} will point to, and are the contracts that will be called to perform various deposit calls.", - "initialResourceIDs": "Resource IDs are used to identify a specific contract address. These are the Resource IDs this contract will initially support." - } - }, - "deposit(bytes32,uint8,uint64,address,bytes)": { - "details": "Depending if the corresponding {tokenAddress} for the parsed {resourceID} is marked true in {_burnList}, deposited tokens will be burned, if not, they will be locked.", - "params": { - "data": "Consists of: {resourceID}, {amount}, {lenRecipientAddress}, and {recipientAddress} all padded to 32 bytes.", - "depositNonce": "This value is generated as an ID by the Bridge contract.", - "depositer": "Address of account making the deposit in the Bridge contract.", - "destinationChainID": "Chain ID of chain tokens are expected to be bridged to." + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2279, + "name": "mintERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1375, + "src": "8002:9:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 2286, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8002:58:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2287, + "nodeType": "ExpressionStatement", + "src": "8002:58:20" + } + ] + } } + ] }, - "executeProposal(bytes32,bytes)": { - "params": { - "data": "Consists of {resourceID}, {amount}, {lenDestinationRecipientAddress}, and {destinationRecipientAddress} all padded to 32 bytes." - } + "documentation": { + "id": 2242, + "nodeType": "StructuredDocumentation", + "src": "6077:643:20", + "text": "@notice Proposal execution should be initiated when a proposal is finalized in the Bridge contract.\nby a relayer on the deposit's destination chain.\n@param data Consists of {resourceID}, {amount}, {lenDestinationRecipientAddress},\nand {destinationRecipientAddress} all padded to 32 bytes.\n@notice Data passed into the function should be constructed as follows:\namount uint256 bytes 0 - 32\ndestinationRecipientAddress length uint256 bytes 32 - 64\ndestinationRecipientAddress bytes bytes 64 - END" }, - "getDepositRecord(uint64,uint8)": { - "params": { - "depositNonce": "This ID will have been generated by the Bridge contract.", - "destId": "ID of chain deposit will be bridged to." + "functionSelector": "e248cff2", + "id": 2301, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2250, + "kind": "modifierInvocation", + "modifierName": { + "id": 2249, + "name": "onlyBridge", + "nameLocations": [ + "6810:10:20" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3108, + "src": "6810:10:20" }, - "returns": { - "_0": "DepositRecord which consists of: - _tokenAddress Address used when {deposit} was executed. - _destinationChainID ChainID deposited tokens are intended to end up on. - _resourceID ResourceID used when {deposit} was executed. - _lenDestinationRecipientAddress Used to parse recipient's address from {_destinationRecipientAddress} - _destinationRecipientAddress Address tokens are intended to be deposited to on desitnation chain. - _depositer Address that initially called {deposit} in the Bridge contract. - _amount Amount of tokens that were deposited." - } - }, - "setBurnable(address)": { - "params": { - "contractAddress": "Address of contract to be used when making or executing deposits." - } + "nodeType": "ModifierInvocation", + "src": "6810:10:20" + } + ], + "name": "executeProposal", + "nameLocation": "6735:15:20", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 2248, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "6801:8:20" }, - "setDecimals(address,uint8,uint8)": { - "params": { - "contractAddress": "Address of contract to be used when making or eexcuting deposits.", - "destDecimals": "Decimals of this token on dest chain.", - "srcDecimals": "Decimals of this token on source chain" + "parameters": { + "id": 2247, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2244, + "mutability": "mutable", + "name": "resourceID", + "nameLocation": "6759:10:20", + "nodeType": "VariableDeclaration", + "scope": 2301, + "src": "6751:18:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2243, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6751:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2246, + "mutability": "mutable", + "name": "data", + "nameLocation": "6786:4:20", + "nodeType": "VariableDeclaration", + "scope": 2301, + "src": "6771:19:20", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2245, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6771:5:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" } + ], + "src": "6750:41:20" }, - "setResource(bytes32,address)": { - "params": { - "contractAddress": "Address of contract to be called when a deposit is made and a deposited is executed.", - "resourceID": "ResourceID to be used when making deposits." - } + "returnParameters": { + "id": 2251, + "nodeType": "ParameterList", + "parameters": [], + "src": "6821:0:20" }, - "withdraw(address,address,uint256)": { - "params": { - "amount": "The amount of ERC20 tokens to release.", - "recipient": "Address to release tokens to.", - "tokenAddress": "Address of token contract to release." + "scope": 2322, + "src": "6726:1447:20", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 3163 + ], + "body": { + "id": 2320, + "nodeType": "Block", + "src": "8556:64:20", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2315, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2304, + "src": "8580:12:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2316, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2306, + "src": "8594:9:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2317, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2308, + "src": "8605:6:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2314, + "name": "releaseERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1350, + "src": "8567:12:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 2318, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8567:45:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2319, + "nodeType": "ExpressionStatement", + "src": "8567:45:20" } - } - }, - "title": "Handles ERC20 deposits and deposit executions.", - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": { - "deposit(bytes32,uint8,uint64,address,bytes)": { - "notice": "A deposit is initiatied by making a deposit in the Bridge contract.Data passed into the function should be constructed as follows: amount uint256 bytes 0 - 32 recipientAddress length uint256 bytes 32 - 64 recipientAddress bytes bytes 64 - END" + ] }, - "executeProposal(bytes32,bytes)": { - "notice": "Proposal execution should be initiated when a proposal is finalized in the Bridge contract. by a relayer on the deposit's destination chain.Data passed into the function should be constructed as follows: amount uint256 bytes 0 - 32 destinationRecipientAddress length uint256 bytes 32 - 64 destinationRecipientAddress bytes bytes 64 - END" + "documentation": { + "id": 2302, + "nodeType": "StructuredDocumentation", + "src": "8181:268:20", + "text": "@notice Used to manually release ERC20 tokens from ERC20Safe.\n@param tokenAddress Address of token contract to release.\n@param recipient Address to release tokens to.\n@param amount The amount of ERC20 tokens to release." }, - "setBurnable(address)": { - "notice": "First verifies {contractAddress} is whitelisted, then sets {_burnList}[{contractAddress}] to true." + "functionSelector": "d9caed12", + "id": 2321, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2312, + "kind": "modifierInvocation", + "modifierName": { + "id": 2311, + "name": "onlyBridge", + "nameLocations": [ + "8545:10:20" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3108, + "src": "8545:10:20" + }, + "nodeType": "ModifierInvocation", + "src": "8545:10:20" + } + ], + "name": "withdraw", + "nameLocation": "8464:8:20", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 2310, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "8536:8:20" }, - "setDecimals(address,uint8,uint8)": { - "notice": "First verifies {contractAddress} is whitelisted, then sets {_decimals}[{contractAddress}] to it's decimals value." + "parameters": { + "id": 2309, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2304, + "mutability": "mutable", + "name": "tokenAddress", + "nameLocation": "8481:12:20", + "nodeType": "VariableDeclaration", + "scope": 2321, + "src": "8473:20:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2303, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8473:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2306, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "8503:9:20", + "nodeType": "VariableDeclaration", + "scope": 2321, + "src": "8495:17:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2305, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8495:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2308, + "mutability": "mutable", + "name": "amount", + "nameLocation": "8519:6:20", + "nodeType": "VariableDeclaration", + "scope": 2321, + "src": "8514:11:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2307, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "8514:4:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8472:54:20" }, - "setResource(bytes32,address)": { - "notice": "First verifies {_resourceIDToContractAddress}[{resourceID}] and {_contractAddressToResourceID}[{contractAddress}] are not already set, then sets {_resourceIDToContractAddress} with {contractAddress}, {_contractAddressToResourceID} with {resourceID}, and {_contractWhitelist} to true for {contractAddress}." + "returnParameters": { + "id": 2313, + "nodeType": "ParameterList", + "parameters": [], + "src": "8556:0:20" }, - "withdraw(address,address,uint256)": { - "notice": "Used to manually release ERC20 tokens from ERC20Safe." - } + "scope": 2322, + "src": "8455:165:20", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 2323, + "src": "344:8279:20", + "usedErrors": [] + } + ], + "src": "33:8592:20" + }, + "compiler": { + "name": "solc", + "version": "0.8.19+commit.7dd6d404.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.4.16", + "updatedAt": "2024-05-15T07:58:14.380Z", + "devdoc": { + "author": "ChainSafe Systems.", + "kind": "dev", + "methods": { + "constructor": { + "details": "{initialResourceIDs} and {initialContractAddresses} must have the same length (one resourceID for every address). Also, these arrays must be ordered in the way that {initialResourceIDs}[0] is the intended resourceID for {initialContractAddresses}[0].", + "params": { + "bridgeAddress": "Contract address of previously deployed Bridge.", + "burnableContractAddresses": "These addresses will be set as burnable and when {deposit} is called, the deposited token will be burned. When {executeProposal} is called, new tokens will be minted.", + "initialContractAddresses": "These are the addresses the {initialResourceIDs} will point to, and are the contracts that will be called to perform various deposit calls.", + "initialResourceIDs": "Resource IDs are used to identify a specific contract address. These are the Resource IDs this contract will initially support." + } + }, + "deposit(bytes32,uint8,uint64,address,bytes)": { + "details": "Depending if the corresponding {tokenAddress} for the parsed {resourceID} is marked true in {_burnList}, deposited tokens will be burned, if not, they will be locked.", + "params": { + "data": "Consists of: {resourceID}, {amount}, {lenRecipientAddress}, and {recipientAddress} all padded to 32 bytes.", + "depositNonce": "This value is generated as an ID by the Bridge contract.", + "depositer": "Address of account making the deposit in the Bridge contract.", + "destinationChainID": "Chain ID of chain tokens are expected to be bridged to." + } + }, + "executeProposal(bytes32,bytes)": { + "params": { + "data": "Consists of {resourceID}, {amount}, {lenDestinationRecipientAddress}, and {destinationRecipientAddress} all padded to 32 bytes." + } + }, + "fundERC20(address,address,uint256)": { + "params": { + "amount": "Amount of tokens to transfer.", + "owner": "Address of current token owner.", + "tokenAddress": "Address of ERC20 to transfer." + } + }, + "getDepositRecord(uint64,uint8)": { + "params": { + "depositNonce": "This ID will have been generated by the Bridge contract.", + "destId": "ID of chain deposit will be bridged to." }, - "notice": "This contract is intended to be used with the Bridge contract.", - "version": 1 - } -} + "returns": { + "_0": "DepositRecord which consists of: - _tokenAddress Address used when {deposit} was executed. - _destinationChainID ChainID deposited tokens are intended to end up on. - _resourceID ResourceID used when {deposit} was executed. - _lenDestinationRecipientAddress Used to parse recipient's address from {_destinationRecipientAddress} - _destinationRecipientAddress Address tokens are intended to be deposited to on desitnation chain. - _depositer Address that initially called {deposit} in the Bridge contract. - _amount Amount of tokens that were deposited." + } + }, + "setBurnable(address)": { + "params": { + "contractAddress": "Address of contract to be used when making or executing deposits." + } + }, + "setResource(bytes32,address)": { + "params": { + "contractAddress": "Address of contract to be called when a deposit is made and a deposited is executed.", + "resourceID": "ResourceID to be used when making deposits." + } + }, + "withdraw(address,address,uint256)": { + "params": { + "amount": "The amount of ERC20 tokens to release.", + "recipient": "Address to release tokens to.", + "tokenAddress": "Address of token contract to release." + } + } + }, + "title": "Handles ERC20 deposits and deposit executions.", + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": { + "deposit(bytes32,uint8,uint64,address,bytes)": { + "notice": "A deposit is initiatied by making a deposit in the Bridge contract.Data passed into the function should be constructed as follows: amount uint256 bytes 0 - 32 recipientAddress length uint256 bytes 32 - 64 recipientAddress bytes bytes 64 - END" + }, + "executeProposal(bytes32,bytes)": { + "notice": "Proposal execution should be initiated when a proposal is finalized in the Bridge contract. by a relayer on the deposit's destination chain.Data passed into the function should be constructed as follows: amount uint256 bytes 0 - 32 destinationRecipientAddress length uint256 bytes 32 - 64 destinationRecipientAddress bytes bytes 64 - END" + }, + "fundERC20(address,address,uint256)": { + "notice": "Used to transfer tokens into the safe to fund proposals." + }, + "setBurnable(address)": { + "notice": "First verifies {contractAddress} is whitelisted, then sets {_burnList}[{contractAddress}] to true." + }, + "setResource(bytes32,address)": { + "notice": "First verifies {_resourceIDToContractAddress}[{resourceID}] and {_contractAddressToResourceID}[{contractAddress}] are not already set, then sets {_resourceIDToContractAddress} with {contractAddress}, {_contractAddressToResourceID} with {resourceID}, and {_contractWhitelist} to true for {contractAddress}." + }, + "withdraw(address,address,uint256)": { + "notice": "Used to manually release ERC20 tokens from ERC20Safe." + } + }, + "notice": "This contract is intended to be used with the Bridge contract.", + "version": 1 + } +} \ No newline at end of file diff --git a/ts-tests/common/abi/bridge/ERC721Handler.json b/ts-tests/common/abi/bridge/ERC721Handler.json index 52d7a6df0d..6a706ad5c9 100644 --- a/ts-tests/common/abi/bridge/ERC721Handler.json +++ b/ts-tests/common/abi/bridge/ERC721Handler.json @@ -1,10384 +1,23990 @@ { - "contractName": "ERC721Handler", - "abi": [ + "contractName": "ERC721Handler", + "abi": [ + { + "inputs": [ { - "inputs": [ - { - "internalType": "address", - "name": "bridgeAddress", - "type": "address" - }, - { - "internalType": "bytes32[]", - "name": "initialResourceIDs", - "type": "bytes32[]" - }, - { - "internalType": "address[]", - "name": "initialContractAddresses", - "type": "address[]" - }, - { - "internalType": "address[]", - "name": "burnableContractAddresses", - "type": "address[]" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" + "internalType": "address", + "name": "bridgeAddress", + "type": "address" }, { - "inputs": [], - "name": "_bridgeAddress", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true + "internalType": "bytes32[]", + "name": "initialResourceIDs", + "type": "bytes32[]" }, { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "_burnList", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true + "internalType": "address[]", + "name": "initialContractAddresses", + "type": "address[]" }, { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "_contractWhitelist", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true - }, + "internalType": "address[]", + "name": "burnableContractAddresses", + "type": "address[]" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "_bridgeAddress", + "outputs": [ { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "_decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "srcDecimals", - "type": "uint8" - }, - { - "internalType": "uint8", - "name": "destDecimals", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "_burnList", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "_contractWhitelist", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" }, { - "inputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - }, - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "name": "_depositRecords", - "outputs": [ - { - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - }, - { - "internalType": "uint8", - "name": "_lenDestinationRecipientAddress", - "type": "uint8" - }, - { - "internalType": "uint8", - "name": "_destinationChainID", - "type": "uint8" - }, - { - "internalType": "bytes32", - "name": "_resourceID", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "_destinationRecipientAddress", - "type": "bytes" - }, - { - "internalType": "address", - "name": "_depositer", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_tokenID", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_metaData", - "type": "bytes" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "name": "_depositRecords", + "outputs": [ + { + "internalType": "address", + "name": "_tokenAddress", + "type": "address" }, { - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "name": "_resourceIDToTokenContractAddress", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true + "internalType": "uint8", + "name": "_lenDestinationRecipientAddress", + "type": "uint8" }, { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "_tokenContractAddressToResourceID", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true + "internalType": "uint8", + "name": "_destinationChainID", + "type": "uint8" }, { - "inputs": [ - { - "internalType": "address", - "name": "tokenAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenID", - "type": "uint256" - } - ], - "name": "fundERC721", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "internalType": "bytes32", + "name": "_resourceID", + "type": "bytes32" }, { - "inputs": [ - { - "internalType": "address", - "name": "contractAddress", - "type": "address" - } - ], - "name": "setBurnable", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "internalType": "bytes", + "name": "_destinationRecipientAddress", + "type": "bytes" }, { - "inputs": [ - { - "internalType": "address", - "name": "contractAddress", - "type": "address" - }, - { - "internalType": "uint8", - "name": "srcDecimals", - "type": "uint8" - }, - { - "internalType": "uint8", - "name": "destDecimals", - "type": "uint8" - } - ], - "name": "setDecimals", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "internalType": "address", + "name": "_depositer", + "type": "address" }, { - "inputs": [ - { - "internalType": "bytes32", - "name": "resourceID", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "contractAddress", - "type": "address" - } - ], - "name": "setResource", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "internalType": "uint256", + "name": "_tokenID", + "type": "uint256" }, { - "inputs": [ - { - "internalType": "uint64", - "name": "depositNonce", - "type": "uint64" - }, - { - "internalType": "uint8", - "name": "destId", - "type": "uint8" - } - ], - "name": "getDepositRecord", - "outputs": [ - { - "components": [ - { - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - }, - { - "internalType": "uint8", - "name": "_lenDestinationRecipientAddress", - "type": "uint8" - }, - { - "internalType": "uint8", - "name": "_destinationChainID", - "type": "uint8" - }, - { - "internalType": "bytes32", - "name": "_resourceID", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "_destinationRecipientAddress", - "type": "bytes" - }, - { - "internalType": "address", - "name": "_depositer", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_tokenID", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_metaData", - "type": "bytes" - } - ], - "internalType": "struct ERC721Handler.DepositRecord", - "name": "", - "type": "tuple" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true + "internalType": "bytes", + "name": "_metaData", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "_resourceIDToTokenContractAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "_tokenContractAddressToResourceID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" }, { - "inputs": [ - { - "internalType": "bytes32", - "name": "resourceID", - "type": "bytes32" - }, - { - "internalType": "uint8", - "name": "destinationChainID", - "type": "uint8" - }, - { - "internalType": "uint64", - "name": "depositNonce", - "type": "uint64" - }, - { - "internalType": "address", - "name": "depositer", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "deposit", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "internalType": "address", + "name": "owner", + "type": "address" }, { - "inputs": [ - { - "internalType": "bytes32", - "name": "resourceID", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "executeProposal", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "internalType": "uint256", + "name": "tokenID", + "type": "uint256" + } + ], + "name": "fundERC721", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "contractAddress", + "type": "address" + } + ], + "name": "setBurnable", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "resourceID", + "type": "bytes32" }, { - "inputs": [ - { - "internalType": "address", - "name": "tokenAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenID", - "type": "uint256" - } - ], - "name": "withdraw", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "internalType": "address", + "name": "contractAddress", + "type": "address" } - ], - "metadata": "{\"compiler\":{\"version\":\"0.7.0+commit.9e61f92b\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"bridgeAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"initialResourceIDs\",\"type\":\"bytes32[]\"},{\"internalType\":\"address[]\",\"name\":\"initialContractAddresses\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"burnableContractAddresses\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"_bridgeAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"_burnList\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"_contractWhitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"_decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"srcDecimals\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"destDecimals\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"_depositRecords\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"_lenDestinationRecipientAddress\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"_destinationChainID\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"_resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_destinationRecipientAddress\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_depositer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenID\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_metaData\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"_resourceIDToTokenContractAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"_tokenContractAddressToResourceID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"destinationChainID\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"depositer\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"executeProposal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenID\",\"type\":\"uint256\"}],\"name\":\"fundERC721\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"destId\",\"type\":\"uint8\"}],\"name\":\"getDepositRecord\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"_lenDestinationRecipientAddress\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"_destinationChainID\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"_resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_destinationRecipientAddress\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_depositer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenID\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_metaData\",\"type\":\"bytes\"}],\"internalType\":\"struct ERC721Handler.DepositRecord\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"setBurnable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"srcDecimals\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"destDecimals\",\"type\":\"uint8\"}],\"name\":\"setDecimals\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"setResource\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenID\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"ChainSafe Systems.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"{initialResourceIDs} and {initialContractAddresses} must have the same length (one resourceID for every address). Also, these arrays must be ordered in the way that {initialResourceIDs}[0] is the intended resourceID for {initialContractAddresses}[0].\",\"params\":{\"bridgeAddress\":\"Contract address of previously deployed Bridge.\",\"burnableContractAddresses\":\"These addresses will be set as burnable and when {deposit} is called, the deposited token will be burned. When {executeProposal} is called, new tokens will be minted.\",\"initialContractAddresses\":\"These are the addresses the {initialResourceIDs} will point to, and are the contracts that will be called to perform various deposit calls.\",\"initialResourceIDs\":\"Resource IDs are used to identify a specific contract address. These are the Resource IDs this contract will initially support.\"}},\"deposit(bytes32,uint8,uint64,address,bytes)\":{\"details\":\"Depending if the corresponding {tokenAddress} for the parsed {resourceID} is marked true in {_burnList}, deposited tokens will be burned, if not, they will be locked.\",\"params\":{\"data\":\"Consists of: {resourceID}, {tokenID}, {lenDestinationRecipientAddress}, and {destinationRecipientAddress} all padded to 32 bytes.\",\"depositNonce\":\"This value is generated as an ID by the Bridge contract.\",\"depositer\":\"Address of account making the deposit in the Bridge contract.\",\"destinationChainID\":\"Chain ID of chain token is expected to be bridged to.\"}},\"executeProposal(bytes32,bytes)\":{\"params\":{\"data\":\"Consists of {tokenID}, {resourceID}, {lenDestinationRecipientAddress}, {destinationRecipientAddress}, {lenMeta}, and {metaData} all padded to 32 bytes.\"}},\"fundERC721(address,address,uint256)\":{\"params\":{\"owner\":\"Address of current token owner.\",\"tokenAddress\":\"Address of ERC721 to transfer.\",\"tokenID\":\"ID of token to transfer.\"}},\"getDepositRecord(uint64,uint8)\":{\"params\":{\"depositNonce\":\"This ID will have been generated by the Bridge contract.\",\"destId\":\"ID of chain deposit will be bridged to.\"},\"returns\":{\"_0\":\"DepositRecord which consists of: - _tokenAddress Address used when {deposit} was executed. - _destinationChainID ChainID deposited tokens are intended to end up on. - _resourceID ResourceID used when {deposit} was executed. - _lenDestinationRecipientAddress Used to parse recipient's address from {_destinationRecipientAddress} - _destinationRecipientAddress Address tokens are intended to be deposited to on desitnation chain. - _depositer Address that initially called {deposit} in the Bridge contract. - _tokenID ID of ERC721. - _metaData Optional ERC721 metadata.\"}},\"setBurnable(address)\":{\"params\":{\"contractAddress\":\"Address of contract to be used when making or executing deposits.\"}},\"setDecimals(address,uint8,uint8)\":{\"params\":{\"contractAddress\":\"Address of contract to be used when making or eexcuting deposits.\",\"destDecimals\":\"Decimals of this token on dest chain.\",\"srcDecimals\":\"Decimals of this token on source chain\"}},\"setResource(bytes32,address)\":{\"params\":{\"contractAddress\":\"Address of contract to be called when a deposit is made and a deposited is executed.\",\"resourceID\":\"ResourceID to be used when making deposits.\"}},\"withdraw(address,address,uint256)\":{\"params\":{\"recipient\":\"Address to release token to.\",\"tokenAddress\":\"Address of token contract to release.\",\"tokenID\":\"The ERC721 token ID to release.\"}}},\"title\":\"Handles ERC721 deposits and deposit executions.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"deposit(bytes32,uint8,uint64,address,bytes)\":{\"notice\":\"A deposit is initiatied by making a deposit in the Bridge contract.Data passed into the function should be constructed as follows: tokenID uint256 bytes 0 - 32 destinationRecipientAddress length uint256 bytes 32 - 64 destinationRecipientAddress bytes bytes 64 - (64 + len(destinationRecipientAddress))If the corresponding {tokenAddress} for the parsed {resourceID} supports {_INTERFACE_ERC721_METADATA}, then {metaData} will be set according to the {tokenURI} method in the token contract.\"},\"executeProposal(bytes32,bytes)\":{\"notice\":\"Proposal execution should be initiated when a proposal is finalized in the Bridge contract. by a relayer on the deposit's destination chain.Data passed into the function should be constructed as follows: tokenID uint256 bytes 0 - 32 destinationRecipientAddress length uint256 bytes 32 - 64 destinationRecipientAddress bytes bytes 64 - (64 + len(destinationRecipientAddress)) metadata length uint256 bytes (64 + len(destinationRecipientAddress)) - (64 + len(destinationRecipientAddress) + 32) metadata bytes bytes (64 + len(destinationRecipientAddress) + 32) - END\"},\"fundERC721(address,address,uint256)\":{\"notice\":\"Used to transfer tokens into the safe to fund proposals.\"},\"setBurnable(address)\":{\"notice\":\"First verifies {contractAddress} is whitelisted, then sets {_burnList}[{contractAddress}] to true.\"},\"setDecimals(address,uint8,uint8)\":{\"notice\":\"First verifies {contractAddress} is whitelisted, then sets {_decimals}[{contractAddress}] to it's decimals value.\"},\"setResource(bytes32,address)\":{\"notice\":\"First verifies {_resourceIDToContractAddress}[{resourceID}] and {_contractAddressToResourceID}[{contractAddress}] are not already set, then sets {_resourceIDToContractAddress} with {contractAddress}, {_contractAddressToResourceID} with {resourceID}, and {_contractWhitelist} to true for {contractAddress}.\"},\"withdraw(address,address,uint256)\":{\"notice\":\"Used to manually release ERC721 tokens from ERC721Safe.\"}},\"notice\":\"This contract is intended to be used with the Bridge contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/handlers/ERC721Handler.sol\":\"ERC721Handler\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/GSN/Context.sol\":{\"keccak256\":\"0x9486045e189facd2e868ece35249872598ef03f1087fb6fa4d1161842daa2287\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://77c3a04ef8453788b14b1ebbc24dd3f0a18ceb2615cd156aac949a611e552af8\",\"dweb:/ipfs/QmcmqWGguRM3iLuF57tcyrN3F6EA63kzeNkDfQuteBnurr\"]},\"@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0x4fc155a2f7837603d69a13cfa481eb5e7f5e02cb77e2ec9edbac30986db37988\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0855147e38b5e36288a8df73b8da49132f14ec7abb19041b0c98872263643aaa\",\"dweb:/ipfs/QmSrSysyFUYQq7hbJaJXG7EyZW6ezDBzEJx3SABp6eiJSS\"]},\"@openzeppelin/contracts/introspection/ERC165.sol\":{\"keccak256\":\"0x24141d2f6b98d4cb77a8936eae8cbaad2e261d9062bdc08036096f4550092501\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b710eb003944777135f027500a5a57b479fe857849f5f467c1ef9687401e3c95\",\"dweb:/ipfs/QmcELzi6KRzAs3DXwxdsoKWRJ13KSeipKQsJgD3unctdZM\"]},\"@openzeppelin/contracts/introspection/ERC165Checker.sol\":{\"keccak256\":\"0x1bdefceaba99e08a6c30400bc686e6380c1e914887bf5780db14f965c09aa9d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fa31e8df5c7a5f3434977d3a881ee322c4e81f8486aec4bb859bebd20f23d805\",\"dweb:/ipfs/QmShFfnjPytP2ooLtDj7f2XULXgbsRj4xjrFc9qm9kRe79\"]},\"@openzeppelin/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0xf70bc25d981e4ec9673a995ad2995d5d493ea188d3d8f388bba9c227ce09fb82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd970f51e3a77790c2f02b5b1759827c3b897c3d98c407b3631e8af32e3dc93c\",\"dweb:/ipfs/QmPF85Amgbqjk3SNZKsPCsqCw8JfwYEPMnnhvMJUyX58je\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xcc78a17dd88fa5a2edc60c8489e2f405c0913b377216a5b26b35656b2d0dab52\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://526dc85e1f9b9b45830e202568d267d93dde7a4fcccf4ad7798dadcd92304d3c\",\"dweb:/ipfs/QmaoXMB972J3cSDLtBq3xBo4jLwqD2uzXTwujtSPqkYVhR\"]},\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x118ed7540f56b21ff92e21ebaa73584048e98d2ac04ca67571329bb8dbd9032f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da2918b7aff73dd51d41bfcfa548f81eb50531b8353500fdbdacf297076db070\",\"dweb:/ipfs/Qmb8ixAs1vBjZRowQNuNg6bRf2NZmgZ1JTBxmQS14PHpcL\"]},\"@openzeppelin/contracts/token/ERC721/ERC721Burnable.sol\":{\"keccak256\":\"0x060925a04766df64ac29f56aaa3a38aafd71424ba4d996ca0f14363828b97056\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8593f0fcac22c97956ab3e779e8a55a6c33dd01059fa01f15992518e708f4e6f\",\"dweb:/ipfs/QmWYQcAy7R6v5prSfmigmrhr7nGxwzkbZkmdeMcLNLUG66\"]},\"@openzeppelin/contracts/token/ERC721/ERC721Pausable.sol\":{\"keccak256\":\"0x1c31a4c2ad1af9e25cd8f4ea941ebd6a6a932426183ab39c160cb8e51cfc704f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://77dd2448bbeb4a8f6f3273042d02326fa6ba191827e5b37f6f68492b17d022c9\",\"dweb:/ipfs/QmRiAmuxtRcVRhXUymziiTD3r8SGcjxKN95ZLVKd2jtWjN\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x2d99a0deb6648c34fbc66d6ac4a2d64798d7a5321b45624f6736fadc63da1962\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2dcdce5ede1e5e650d174ec0b35be7d47b6a50f30bc895ef0d9e59fb75052e45\",\"dweb:/ipfs/QmQ2XFsDLTYqfEdw7pYzHiGtFRY11yQm4b6ynYgKqDxeB8\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol\":{\"keccak256\":\"0xe6bd1b1218338b6f9fe17776f48623b4ac3d8a40405f74a44bc23c00abe2ca13\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0c354c3f6e9c487759aa7869be4fba68e0b2efc777b514d289c4cbd3ff8f7e1a\",\"dweb:/ipfs/QmdF9LcSYVmiUCL7JxLEYmSLrjga6zJsujfi6sgEJD4M1z\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol\":{\"keccak256\":\"0xccb917776f826ac6b68bd5a15a5f711e3967848a52ba11e6104d9a4f593314a7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://430255ad2229ced6d880e61a67bdc6e48dbbaed8354a7c1fe918cd8b8714a886\",\"dweb:/ipfs/QmTHY56odzqEpEC6v6tafaWMYY7vmULw25q5XHJLCCAeox\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x52146049d6709c870e8ddcd988b5155cb6c5d640cfcd8978aee52bc1ba2ec4eb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada84513617b7c1b2f890b44503735abaec73a1acd030112a17aac7e6c66a4a1\",\"dweb:/ipfs/QmaiFwdio67iJrfjAdkMac24eJ5sS1qD7CZW6PhUU6KjiK\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x28911e614500ae7c607a432a709d35da25f3bc5ddc8bd12b278b66358070c0ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://256c8c8af5eb072bc473226ab2b2187149b8fc04f5f4a4820db22527f5ce8e3c\",\"dweb:/ipfs/QmRvi5BhnL7Rxf85KrJhwM6RRhukm4tzoctRdgQEheNyiN\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"@openzeppelin/contracts/utils/Counters.sol\":{\"keccak256\":\"0x21662e4254ce4ac8570b30cc7ab31435966b3cb778a56ba4d09276881cfb2437\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://acce8fe6adc670f9987a8b6aedc4cc0abcd0dcd2e152d649a12099d735bd7bad\",\"dweb:/ipfs/QmXAk17oK3daBmA8CGyVcU56L496jW3U6Ef1WkfHyB1JAV\"]},\"@openzeppelin/contracts/utils/EnumerableMap.sol\":{\"keccak256\":\"0x4b087f06b6670a131a5a14e53b1d2a5ef19c034cc5ec42eeebcf9554325744ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6a6af5d848334e40db419773f6360601e311ffc21c2e274f730b8c542da99fd\",\"dweb:/ipfs/QmfA24cxQ2g41ZWUuDF295dxDJ4xF1bSDYtC3EaLd7CzW8\"]},\"@openzeppelin/contracts/utils/EnumerableSet.sol\":{\"keccak256\":\"0x1562cd9922fbf739edfb979f506809e2743789cbde3177515542161c3d04b164\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4580d57781513d98870d9738c7d39094336e0a70cdb90d68dad549c6ced466ec\",\"dweb:/ipfs/Qmf9YZzzRFuvMnav9dgmeRUpdYMMECiZX8w25sHWVbA18V\"]},\"@openzeppelin/contracts/utils/Pausable.sol\":{\"keccak256\":\"0x212fb1b1d4beaf74354dad9bc329f44ee3c5375ef1c32acff76b4ecefc10f1d8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d21c68cb321d1c8d0fa39fd9ecb6bbe3b2f26623b0f38af280a010c916c85f23\",\"dweb:/ipfs/Qmf2P51HRC4ekDHLYfbXu5SXR33gXrWtq6oKSmfyWqVRuC\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xa1e12f97981f1d0964b1c048978606a57127c56c438bab61cdfe269cad859a74\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5eefac1760f524971e14aa3f3d79515a3d54fd28c1d3bdca0b36127da349b830\",\"dweb:/ipfs/QmUMzkyH3ytJX5gVPizQruNLhkKmuJb3nFqBDad4LPdg5U\"]},\"project:/contracts/ERC721MinterBurnerPauser.sol\":{\"keccak256\":\"0x9ecab1b387a6c4a4deca0a7238b3e7080388341c482523945137cef2ac433ed2\",\"urls\":[\"bzz-raw://8a4ad168e55ca029f2687f082861b215285feacaabd05e69593e5b4265b6e76d\",\"dweb:/ipfs/QmcimuwZaf5CoPY6SNqhnnzM8qAnmP8p2cUVmv8x5YX3XG\"]},\"project:/contracts/ERC721Safe.sol\":{\"keccak256\":\"0xf49414b71d5251041cea69364e91a57dcf9c7750754c5dd5bf425b17d2620219\",\"urls\":[\"bzz-raw://e19888d519979f7985865b0b35d0b4f0224567950c66fc0a41e0f0b49035065d\",\"dweb:/ipfs/Qmf7QuCgsoMtU6csmrsQFvLFmiQQZwmQQnLQhh79sNVXtg\"]},\"project:/contracts/handlers/ERC721Handler.sol\":{\"keccak256\":\"0x56a14e2cd22da3bc545d110933103648aaedb03b4e565c726fdf365cead220ab\",\"urls\":[\"bzz-raw://9310571fa2d7d3419eec2d0003aef3fce38d90d980b6de60fb34d1d88e32fdaa\",\"dweb:/ipfs/QmScoweLbSSJKotFQMA6WFyf3Fk8T52NxhbYdwfb1pkCE2\"]},\"project:/contracts/handlers/HandlerHelpers.sol\":{\"keccak256\":\"0x8a31503ab6b96e4f5086458b816ad2b7c94fe545f7f6c33fd2c157231c58d1f5\",\"urls\":[\"bzz-raw://60cf8848dc02980ff0e9a25f6fe56f7584e21089f6bab80a1318f56a4afcd546\",\"dweb:/ipfs/QmXWoh5YjkKmpsDBEDaoQSgQw19STyoChbFYYa65RZwThX\"]},\"project:/contracts/interfaces/IDepositExecute.sol\":{\"keccak256\":\"0x58eb03ea6e50b74064af646139ea0eb923625e9ca249c7b566429b283ff11818\",\"urls\":[\"bzz-raw://bd78d20c816d72dd0685827c9804c2cf78c90d7d2a23e5e2933010fa36affe67\",\"dweb:/ipfs/QmWBjFpqp3NQoF4ad8EtA4iqjox2auNqwWQy2wHkcW112Y\"]},\"project:/contracts/interfaces/IERCHandler.sol\":{\"keccak256\":\"0xf6011e0c383a688ba2b20900073fdea8ff03c48ac2b5e47239b28ab131559937\",\"urls\":[\"bzz-raw://d180ad27c06b300fe9111630210ed5fb56cd4c7da3f039f7c3372ebea06e1790\",\"dweb:/ipfs/QmRBgtVQC8H8EtojZLQhxyPKfWMhL6Y9qyquMao8bxJxeE\"]}},\"version\":1}", - "bytecode": "0x60806040523480156200001157600080fd5b5060405162002a9438038062002a94833981810160405281019062000037919062000483565b81518351146200007e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000075906200062c565b60405180910390fd5b836000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060005b8351811015620001135762000105848281518110620000dc57fe5b6020026020010151848381518110620000f157fe5b60200260200101516200015f60201b60201c565b8080600101915050620000c1565b5060005b81518110156200015457620001468282815181106200013257fe5b60200260200101516200025160201b60201c565b808060010191505062000117565b505050505062000751565b806001600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16620002e0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002d7906200060a565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000815190506200034c816200071d565b92915050565b600082601f8301126200036457600080fd5b81516200037b62000375826200067c565b6200064e565b91508181835260208401935060208101905083856020840282011115620003a157600080fd5b60005b83811015620003d55781620003ba88826200033b565b845260208401935060208301925050600181019050620003a4565b5050505092915050565b600082601f830112620003f157600080fd5b8151620004086200040282620006a5565b6200064e565b915081818352602084019350602081019050838560208402820111156200042e57600080fd5b60005b838110156200046257816200044788826200046c565b84526020840193506020830192505060018101905062000431565b5050505092915050565b6000815190506200047d8162000737565b92915050565b600080600080608085870312156200049a57600080fd5b6000620004aa878288016200033b565b945050602085015167ffffffffffffffff811115620004c857600080fd5b620004d687828801620003df565b935050604085015167ffffffffffffffff811115620004f457600080fd5b620005028782880162000352565b925050606085015167ffffffffffffffff8111156200052057600080fd5b6200052e8782880162000352565b91505092959194509250565b600062000549602483620006ce565b91507f70726f766964656420636f6e7472616374206973206e6f742077686974656c6960008301527f73746564000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000620005b1603c83620006ce565b91507f696e697469616c5265736f7572636549447320616e6420696e697469616c436f60008301527f6e7472616374416464726573736573206c656e206d69736d61746368000000006020830152604082019050919050565b6000602082019050818103600083015262000625816200053a565b9050919050565b600060208201905081810360008301526200064781620005a2565b9050919050565b6000604051905081810181811067ffffffffffffffff821117156200067257600080fd5b8060405250919050565b600067ffffffffffffffff8211156200069457600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115620006bd57600080fd5b602082029050602081019050919050565b600082825260208201905092915050565b6000620006ec82620006fd565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6200072881620006df565b81146200073457600080fd5b50565b6200074281620006f3565b81146200074e57600080fd5b50565b61233380620007616000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80637f79bea811610097578063d51f0f4711610066578063d51f0f47146102af578063d9caed12146102e0578063e248cff2146102fc578063f471274414610318576100f5565b80637f79bea814610203578063b8fa373614610233578063ba484c091461024f578063c8ba6c871461027f576100f5565b806338995da9116100d357806338995da9146101645780634402027f146101805780636a70d081146101b757806373542980146101e7576100f5565b806307b7ed99146100fa5780630a6d55d814610116578063318c136e14610146575b600080fd5b610114600480360381019061010f919061186c565b610334565b005b610130600480360381019061012b919061195c565b610348565b60405161013d9190611eb0565b60405180910390f35b61014e61037b565b60405161015b9190611eb0565b60405180910390f35b61017e60048036038101906101799190611a19565b61039f565b005b61019a60048036038101906101959190611b28565b6107a3565b6040516101ae989796959493929190611f40565b60405180910390f35b6101d160048036038101906101cc919061186c565b610982565b6040516101de9190611fcc565b60405180910390f35b61020160048036038101906101fc9190611895565b6109a2565b005b61021d6004803603810190610218919061186c565b610a1c565b60405161022a9190611fcc565b60405180910390f35b61024d60048036038101906102489190611985565b610a3c565b005b61026960048036038101906102649190611aec565b610a52565b604051610276919061207d565b60405180910390f35b6102996004803603810190610294919061186c565b610cea565b6040516102a69190611fe7565b60405180910390f35b6102c960048036038101906102c4919061186c565b610d02565b6040516102d79291906120ba565b60405180910390f35b6102fa60048036038101906102f59190611895565b610d40565b005b610316600480360381019061031191906119c1565b610d59565b005b610332600480360381019061032d91906118e4565b610ef6565b005b61033c610f0e565b61034581610f9e565b50565b60016020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6103a7610f0e565b60008060608060c435925060e4359350604051915083820160200160405260e4360360e483376000600160008c815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610491576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104889061205d565b60405180910390fd5b6104c1635b5e139f60e01b8273ffffffffffffffffffffffffffffffffffffffff1661108590919063ffffffff16565b1561055d5760008190508073ffffffffffffffffffffffffffffffffffffffff1663c87b56dd866040518263ffffffff1660e01b8152600401610504919061209f565b60006040518083038186803b15801561051c57600080fd5b505afa158015610530573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906105599190611aab565b9250505b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156105be576105b981856110aa565b6105cb565b6105ca8189308761111f565b5b6040518061010001604052808273ffffffffffffffffffffffffffffffffffffffff1681526020018660ff1681526020018b60ff1681526020018c81526020018481526020018973ffffffffffffffffffffffffffffffffffffffff16815260200185815260200183815250600660008c60ff1660ff16815260200190815260200160002060008b67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548160ff021916908360ff16021790555060408201518160000160156101000a81548160ff021916908360ff160217905550606082015181600101556080820151816002019080519060200190610724929190611639565b5060a08201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060c0820151816004015560e0820151816005019080519060200190610792929190611639565b509050505050505050505050505050565b6006602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060000160149054906101000a900460ff16908060000160159054906101000a900460ff1690806001015490806002018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108ae5780601f10610883576101008083540402835291602001916108ae565b820191906000526020600020905b81548152906001019060200180831161089157829003601f168201915b5050505050908060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806004015490806005018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109785780601f1061094d57610100808354040283529160200191610978565b820191906000526020600020905b81548152906001019060200180831161095b57829003601f168201915b5050505050905088565b60046020528060005260406000206000915054906101000a900460ff1681565b60008390508073ffffffffffffffffffffffffffffffffffffffff166323b872dd8430856040518463ffffffff1660e01b81526004016109e493929190611ecb565b600060405180830381600087803b1580156109fe57600080fd5b505af1158015610a12573d6000803e3d6000fd5b5050505050505050565b60036020528060005260406000206000915054906101000a900460ff1681565b610a44610f0e565b610a4e828261119a565b5050565b610a5a6116b9565b600660008360ff1660ff16815260200190815260200160002060008467ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020604051806101000160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900460ff1660ff1660ff1681526020016000820160159054906101000a900460ff1660ff1660ff16815260200160018201548152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bd75780601f10610bac57610100808354040283529160200191610bd7565b820191906000526020600020905b815481529060010190602001808311610bba57829003601f168201915b505050505081526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160048201548152602001600582018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610cd95780601f10610cae57610100808354040283529160200191610cd9565b820191906000526020600020905b815481529060010190602001808311610cbc57829003601f168201915b505050505081525050905092915050565b60026020528060005260406000206000915090505481565b60056020528060005260406000206000915090508060000160009054906101000a900460ff16908060000160019054906101000a900460ff16905082565b610d48610f0e565b610d548330848461128c565b505050565b610d61610f0e565b6000606080606435925060405191506084358060a401358184016040016040528060200160840136036084853760405192508083016040016040528160a40180360381853750505060006020830151905060006001600089815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610e76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6d9061205d565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610edc57610ed7818360601c8786611307565b610eec565b610eeb81308460601c8861128c565b5b5050505050505050565b610efe610f0e565b610f09838383611382565b505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f939061201d565b60405180910390fd5b565b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661102a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110219061203d565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000611090836114b2565b80156110a257506110a183836114e6565b5b905092915050565b60008290508073ffffffffffffffffffffffffffffffffffffffff166342966c68836040518263ffffffff1660e01b81526004016110e8919061209f565b600060405180830381600087803b15801561110257600080fd5b505af1158015611116573d6000803e3d6000fd5b50505050505050565b60008490508073ffffffffffffffffffffffffffffffffffffffff166323b872dd8585856040518463ffffffff1660e01b815260040161116193929190611ecb565b600060405180830381600087803b15801561117b57600080fd5b505af115801561118f573d6000803e3d6000fd5b505050505050505050565b806001600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008490508073ffffffffffffffffffffffffffffffffffffffff166323b872dd8585856040518463ffffffff1660e01b81526004016112ce93929190611ecb565b600060405180830381600087803b1580156112e857600080fd5b505af11580156112fc573d6000803e3d6000fd5b505050505050505050565b60008490508073ffffffffffffffffffffffffffffffffffffffff1663d3fc98648585856040518463ffffffff1660e01b815260040161134993929190611f02565b600060405180830381600087803b15801561136357600080fd5b505af1158015611377573d6000803e3d6000fd5b505050505050505050565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661140e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114059061203d565b60405180910390fd5b60405180604001604052808360ff1681526020018260ff16815250600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff160217905550905050505050565b60006114c5826301ffc9a760e01b6114e6565b80156114df57506114dd8263ffffffff60e01b6114e6565b155b9050919050565b60008060006114f5858561150d565b915091508180156115035750805b9250505092915050565b60008060606301ffc9a760e01b8460405160240161152b9190612002565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600060608673ffffffffffffffffffffffffffffffffffffffff16617530846040516115b69190611e99565b6000604051808303818686fa925050503d80600081146115f2576040519150601f19603f3d011682016040523d82523d6000602084013e6115f7565b606091505b50915091506020815110156116155760008094509450505050611632565b818180602001905181019061162a9190611933565b945094505050505b9250929050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061167a57805160ff19168380011785556116a8565b828001600101855582156116a8579182015b828111156116a757825182559160200191906001019061168c565b5b5090506116b59190611733565b5090565b604051806101000160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600060ff168152602001600060ff1681526020016000801916815260200160608152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001606081525090565b5b8082111561174c576000816000905550600101611734565b5090565b60008135905061175f81612273565b92915050565b6000815190506117748161228a565b92915050565b600081359050611789816122a1565b92915050565b60008083601f8401126117a157600080fd5b8235905067ffffffffffffffff8111156117ba57600080fd5b6020830191508360018202830111156117d257600080fd5b9250929050565b600082601f8301126117ea57600080fd5b81516117fd6117f882612110565b6120e3565b9150808252602083016020830185838301111561181957600080fd5b61182483828461222f565b50505092915050565b60008135905061183c816122b8565b92915050565b600081359050611851816122cf565b92915050565b600081359050611866816122e6565b92915050565b60006020828403121561187e57600080fd5b600061188c84828501611750565b91505092915050565b6000806000606084860312156118aa57600080fd5b60006118b886828701611750565b93505060206118c986828701611750565b92505060406118da8682870161182d565b9150509250925092565b6000806000606084860312156118f957600080fd5b600061190786828701611750565b935050602061191886828701611857565b925050604061192986828701611857565b9150509250925092565b60006020828403121561194557600080fd5b600061195384828501611765565b91505092915050565b60006020828403121561196e57600080fd5b600061197c8482850161177a565b91505092915050565b6000806040838503121561199857600080fd5b60006119a68582860161177a565b92505060206119b785828601611750565b9150509250929050565b6000806000604084860312156119d657600080fd5b60006119e48682870161177a565b935050602084013567ffffffffffffffff811115611a0157600080fd5b611a0d8682870161178f565b92509250509250925092565b60008060008060008060a08789031215611a3257600080fd5b6000611a4089828a0161177a565b9650506020611a5189828a01611857565b9550506040611a6289828a01611842565b9450506060611a7389828a01611750565b935050608087013567ffffffffffffffff811115611a9057600080fd5b611a9c89828a0161178f565b92509250509295509295509295565b600060208284031215611abd57600080fd5b600082015167ffffffffffffffff811115611ad757600080fd5b611ae3848285016117d9565b91505092915050565b60008060408385031215611aff57600080fd5b6000611b0d85828601611842565b9250506020611b1e85828601611857565b9150509250929050565b60008060408385031215611b3b57600080fd5b6000611b4985828601611857565b9250506020611b5a85828601611842565b9150509250929050565b611b6d81612190565b82525050565b611b7c81612190565b82525050565b611b8b816121a2565b82525050565b611b9a816121ae565b82525050565b611ba9816121ae565b82525050565b611bb8816121b8565b82525050565b6000611bc98261213c565b611bd38185612152565b9350611be381856020860161222f565b611bec81612262565b840191505092915050565b6000611c028261213c565b611c0c8185612163565b9350611c1c81856020860161222f565b611c2581612262565b840191505092915050565b6000611c3b8261213c565b611c458185612174565b9350611c5581856020860161222f565b80840191505092915050565b6000611c6c82612147565b611c76818561217f565b9350611c8681856020860161222f565b611c8f81612262565b840191505092915050565b6000611ca7601e8361217f565b91507f73656e646572206d7573742062652062726964676520636f6e747261637400006000830152602082019050919050565b6000611ce760248361217f565b91507f70726f766964656420636f6e7472616374206973206e6f742077686974656c6960008301527f73746564000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611d4d60288361217f565b91507f70726f766964656420746f6b656e41646472657373206973206e6f742077686960008301527f74656c69737465640000000000000000000000000000000000000000000000006020830152604082019050919050565b600061010083016000830151611dbf6000860182611b64565b506020830151611dd26020860182611e7b565b506040830151611de56040860182611e7b565b506060830151611df86060860182611b91565b5060808301518482036080860152611e108282611bbe565b91505060a0830151611e2560a0860182611b64565b5060c0830151611e3860c0860182611e5d565b5060e083015184820360e0860152611e508282611bbe565b9150508091505092915050565b611e6681612204565b82525050565b611e7581612204565b82525050565b611e8481612222565b82525050565b611e9381612222565b82525050565b6000611ea58284611c30565b915081905092915050565b6000602082019050611ec56000830184611b73565b92915050565b6000606082019050611ee06000830186611b73565b611eed6020830185611b73565b611efa6040830184611e6c565b949350505050565b6000606082019050611f176000830186611b73565b611f246020830185611e6c565b8181036040830152611f368184611c61565b9050949350505050565b600061010082019050611f56600083018b611b73565b611f63602083018a611e8a565b611f706040830189611e8a565b611f7d6060830188611ba0565b8181036080830152611f8f8187611bf7565b9050611f9e60a0830186611b73565b611fab60c0830185611e6c565b81810360e0830152611fbd8184611bf7565b90509998505050505050505050565b6000602082019050611fe16000830184611b82565b92915050565b6000602082019050611ffc6000830184611ba0565b92915050565b60006020820190506120176000830184611baf565b92915050565b6000602082019050818103600083015261203681611c9a565b9050919050565b6000602082019050818103600083015261205681611cda565b9050919050565b6000602082019050818103600083015261207681611d40565b9050919050565b600060208201905081810360008301526120978184611da6565b905092915050565b60006020820190506120b46000830184611e6c565b92915050565b60006040820190506120cf6000830185611e8a565b6120dc6020830184611e8a565b9392505050565b6000604051905081810181811067ffffffffffffffff8211171561210657600080fd5b8060405250919050565b600067ffffffffffffffff82111561212757600080fd5b601f19601f8301169050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061219b826121e4565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b600060ff82169050919050565b60005b8381101561224d578082015181840152602081019050612232565b8381111561225c576000848401525b50505050565b6000601f19601f8301169050919050565b61227c81612190565b811461228757600080fd5b50565b612293816121a2565b811461229e57600080fd5b50565b6122aa816121ae565b81146122b557600080fd5b50565b6122c181612204565b81146122cc57600080fd5b50565b6122d88161220e565b81146122e357600080fd5b50565b6122ef81612222565b81146122fa57600080fd5b5056fea26469706673582212203b5740bf9cc4a6dbe3d2a280957943770fe8a12d70a7385a7af28a888c896c8164736f6c63430007000033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100f55760003560e01c80637f79bea811610097578063d51f0f4711610066578063d51f0f47146102af578063d9caed12146102e0578063e248cff2146102fc578063f471274414610318576100f5565b80637f79bea814610203578063b8fa373614610233578063ba484c091461024f578063c8ba6c871461027f576100f5565b806338995da9116100d357806338995da9146101645780634402027f146101805780636a70d081146101b757806373542980146101e7576100f5565b806307b7ed99146100fa5780630a6d55d814610116578063318c136e14610146575b600080fd5b610114600480360381019061010f919061186c565b610334565b005b610130600480360381019061012b919061195c565b610348565b60405161013d9190611eb0565b60405180910390f35b61014e61037b565b60405161015b9190611eb0565b60405180910390f35b61017e60048036038101906101799190611a19565b61039f565b005b61019a60048036038101906101959190611b28565b6107a3565b6040516101ae989796959493929190611f40565b60405180910390f35b6101d160048036038101906101cc919061186c565b610982565b6040516101de9190611fcc565b60405180910390f35b61020160048036038101906101fc9190611895565b6109a2565b005b61021d6004803603810190610218919061186c565b610a1c565b60405161022a9190611fcc565b60405180910390f35b61024d60048036038101906102489190611985565b610a3c565b005b61026960048036038101906102649190611aec565b610a52565b604051610276919061207d565b60405180910390f35b6102996004803603810190610294919061186c565b610cea565b6040516102a69190611fe7565b60405180910390f35b6102c960048036038101906102c4919061186c565b610d02565b6040516102d79291906120ba565b60405180910390f35b6102fa60048036038101906102f59190611895565b610d40565b005b610316600480360381019061031191906119c1565b610d59565b005b610332600480360381019061032d91906118e4565b610ef6565b005b61033c610f0e565b61034581610f9e565b50565b60016020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6103a7610f0e565b60008060608060c435925060e4359350604051915083820160200160405260e4360360e483376000600160008c815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610491576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104889061205d565b60405180910390fd5b6104c1635b5e139f60e01b8273ffffffffffffffffffffffffffffffffffffffff1661108590919063ffffffff16565b1561055d5760008190508073ffffffffffffffffffffffffffffffffffffffff1663c87b56dd866040518263ffffffff1660e01b8152600401610504919061209f565b60006040518083038186803b15801561051c57600080fd5b505afa158015610530573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906105599190611aab565b9250505b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156105be576105b981856110aa565b6105cb565b6105ca8189308761111f565b5b6040518061010001604052808273ffffffffffffffffffffffffffffffffffffffff1681526020018660ff1681526020018b60ff1681526020018c81526020018481526020018973ffffffffffffffffffffffffffffffffffffffff16815260200185815260200183815250600660008c60ff1660ff16815260200190815260200160002060008b67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548160ff021916908360ff16021790555060408201518160000160156101000a81548160ff021916908360ff160217905550606082015181600101556080820151816002019080519060200190610724929190611639565b5060a08201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060c0820151816004015560e0820151816005019080519060200190610792929190611639565b509050505050505050505050505050565b6006602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060000160149054906101000a900460ff16908060000160159054906101000a900460ff1690806001015490806002018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108ae5780601f10610883576101008083540402835291602001916108ae565b820191906000526020600020905b81548152906001019060200180831161089157829003601f168201915b5050505050908060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806004015490806005018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109785780601f1061094d57610100808354040283529160200191610978565b820191906000526020600020905b81548152906001019060200180831161095b57829003601f168201915b5050505050905088565b60046020528060005260406000206000915054906101000a900460ff1681565b60008390508073ffffffffffffffffffffffffffffffffffffffff166323b872dd8430856040518463ffffffff1660e01b81526004016109e493929190611ecb565b600060405180830381600087803b1580156109fe57600080fd5b505af1158015610a12573d6000803e3d6000fd5b5050505050505050565b60036020528060005260406000206000915054906101000a900460ff1681565b610a44610f0e565b610a4e828261119a565b5050565b610a5a6116b9565b600660008360ff1660ff16815260200190815260200160002060008467ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020604051806101000160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900460ff1660ff1660ff1681526020016000820160159054906101000a900460ff1660ff1660ff16815260200160018201548152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bd75780601f10610bac57610100808354040283529160200191610bd7565b820191906000526020600020905b815481529060010190602001808311610bba57829003601f168201915b505050505081526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160048201548152602001600582018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610cd95780601f10610cae57610100808354040283529160200191610cd9565b820191906000526020600020905b815481529060010190602001808311610cbc57829003601f168201915b505050505081525050905092915050565b60026020528060005260406000206000915090505481565b60056020528060005260406000206000915090508060000160009054906101000a900460ff16908060000160019054906101000a900460ff16905082565b610d48610f0e565b610d548330848461128c565b505050565b610d61610f0e565b6000606080606435925060405191506084358060a401358184016040016040528060200160840136036084853760405192508083016040016040528160a40180360381853750505060006020830151905060006001600089815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610e76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6d9061205d565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610edc57610ed7818360601c8786611307565b610eec565b610eeb81308460601c8861128c565b5b5050505050505050565b610efe610f0e565b610f09838383611382565b505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f939061201d565b60405180910390fd5b565b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661102a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110219061203d565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000611090836114b2565b80156110a257506110a183836114e6565b5b905092915050565b60008290508073ffffffffffffffffffffffffffffffffffffffff166342966c68836040518263ffffffff1660e01b81526004016110e8919061209f565b600060405180830381600087803b15801561110257600080fd5b505af1158015611116573d6000803e3d6000fd5b50505050505050565b60008490508073ffffffffffffffffffffffffffffffffffffffff166323b872dd8585856040518463ffffffff1660e01b815260040161116193929190611ecb565b600060405180830381600087803b15801561117b57600080fd5b505af115801561118f573d6000803e3d6000fd5b505050505050505050565b806001600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008490508073ffffffffffffffffffffffffffffffffffffffff166323b872dd8585856040518463ffffffff1660e01b81526004016112ce93929190611ecb565b600060405180830381600087803b1580156112e857600080fd5b505af11580156112fc573d6000803e3d6000fd5b505050505050505050565b60008490508073ffffffffffffffffffffffffffffffffffffffff1663d3fc98648585856040518463ffffffff1660e01b815260040161134993929190611f02565b600060405180830381600087803b15801561136357600080fd5b505af1158015611377573d6000803e3d6000fd5b505050505050505050565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661140e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114059061203d565b60405180910390fd5b60405180604001604052808360ff1681526020018260ff16815250600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff160217905550905050505050565b60006114c5826301ffc9a760e01b6114e6565b80156114df57506114dd8263ffffffff60e01b6114e6565b155b9050919050565b60008060006114f5858561150d565b915091508180156115035750805b9250505092915050565b60008060606301ffc9a760e01b8460405160240161152b9190612002565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600060608673ffffffffffffffffffffffffffffffffffffffff16617530846040516115b69190611e99565b6000604051808303818686fa925050503d80600081146115f2576040519150601f19603f3d011682016040523d82523d6000602084013e6115f7565b606091505b50915091506020815110156116155760008094509450505050611632565b818180602001905181019061162a9190611933565b945094505050505b9250929050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061167a57805160ff19168380011785556116a8565b828001600101855582156116a8579182015b828111156116a757825182559160200191906001019061168c565b5b5090506116b59190611733565b5090565b604051806101000160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600060ff168152602001600060ff1681526020016000801916815260200160608152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001606081525090565b5b8082111561174c576000816000905550600101611734565b5090565b60008135905061175f81612273565b92915050565b6000815190506117748161228a565b92915050565b600081359050611789816122a1565b92915050565b60008083601f8401126117a157600080fd5b8235905067ffffffffffffffff8111156117ba57600080fd5b6020830191508360018202830111156117d257600080fd5b9250929050565b600082601f8301126117ea57600080fd5b81516117fd6117f882612110565b6120e3565b9150808252602083016020830185838301111561181957600080fd5b61182483828461222f565b50505092915050565b60008135905061183c816122b8565b92915050565b600081359050611851816122cf565b92915050565b600081359050611866816122e6565b92915050565b60006020828403121561187e57600080fd5b600061188c84828501611750565b91505092915050565b6000806000606084860312156118aa57600080fd5b60006118b886828701611750565b93505060206118c986828701611750565b92505060406118da8682870161182d565b9150509250925092565b6000806000606084860312156118f957600080fd5b600061190786828701611750565b935050602061191886828701611857565b925050604061192986828701611857565b9150509250925092565b60006020828403121561194557600080fd5b600061195384828501611765565b91505092915050565b60006020828403121561196e57600080fd5b600061197c8482850161177a565b91505092915050565b6000806040838503121561199857600080fd5b60006119a68582860161177a565b92505060206119b785828601611750565b9150509250929050565b6000806000604084860312156119d657600080fd5b60006119e48682870161177a565b935050602084013567ffffffffffffffff811115611a0157600080fd5b611a0d8682870161178f565b92509250509250925092565b60008060008060008060a08789031215611a3257600080fd5b6000611a4089828a0161177a565b9650506020611a5189828a01611857565b9550506040611a6289828a01611842565b9450506060611a7389828a01611750565b935050608087013567ffffffffffffffff811115611a9057600080fd5b611a9c89828a0161178f565b92509250509295509295509295565b600060208284031215611abd57600080fd5b600082015167ffffffffffffffff811115611ad757600080fd5b611ae3848285016117d9565b91505092915050565b60008060408385031215611aff57600080fd5b6000611b0d85828601611842565b9250506020611b1e85828601611857565b9150509250929050565b60008060408385031215611b3b57600080fd5b6000611b4985828601611857565b9250506020611b5a85828601611842565b9150509250929050565b611b6d81612190565b82525050565b611b7c81612190565b82525050565b611b8b816121a2565b82525050565b611b9a816121ae565b82525050565b611ba9816121ae565b82525050565b611bb8816121b8565b82525050565b6000611bc98261213c565b611bd38185612152565b9350611be381856020860161222f565b611bec81612262565b840191505092915050565b6000611c028261213c565b611c0c8185612163565b9350611c1c81856020860161222f565b611c2581612262565b840191505092915050565b6000611c3b8261213c565b611c458185612174565b9350611c5581856020860161222f565b80840191505092915050565b6000611c6c82612147565b611c76818561217f565b9350611c8681856020860161222f565b611c8f81612262565b840191505092915050565b6000611ca7601e8361217f565b91507f73656e646572206d7573742062652062726964676520636f6e747261637400006000830152602082019050919050565b6000611ce760248361217f565b91507f70726f766964656420636f6e7472616374206973206e6f742077686974656c6960008301527f73746564000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611d4d60288361217f565b91507f70726f766964656420746f6b656e41646472657373206973206e6f742077686960008301527f74656c69737465640000000000000000000000000000000000000000000000006020830152604082019050919050565b600061010083016000830151611dbf6000860182611b64565b506020830151611dd26020860182611e7b565b506040830151611de56040860182611e7b565b506060830151611df86060860182611b91565b5060808301518482036080860152611e108282611bbe565b91505060a0830151611e2560a0860182611b64565b5060c0830151611e3860c0860182611e5d565b5060e083015184820360e0860152611e508282611bbe565b9150508091505092915050565b611e6681612204565b82525050565b611e7581612204565b82525050565b611e8481612222565b82525050565b611e9381612222565b82525050565b6000611ea58284611c30565b915081905092915050565b6000602082019050611ec56000830184611b73565b92915050565b6000606082019050611ee06000830186611b73565b611eed6020830185611b73565b611efa6040830184611e6c565b949350505050565b6000606082019050611f176000830186611b73565b611f246020830185611e6c565b8181036040830152611f368184611c61565b9050949350505050565b600061010082019050611f56600083018b611b73565b611f63602083018a611e8a565b611f706040830189611e8a565b611f7d6060830188611ba0565b8181036080830152611f8f8187611bf7565b9050611f9e60a0830186611b73565b611fab60c0830185611e6c565b81810360e0830152611fbd8184611bf7565b90509998505050505050505050565b6000602082019050611fe16000830184611b82565b92915050565b6000602082019050611ffc6000830184611ba0565b92915050565b60006020820190506120176000830184611baf565b92915050565b6000602082019050818103600083015261203681611c9a565b9050919050565b6000602082019050818103600083015261205681611cda565b9050919050565b6000602082019050818103600083015261207681611d40565b9050919050565b600060208201905081810360008301526120978184611da6565b905092915050565b60006020820190506120b46000830184611e6c565b92915050565b60006040820190506120cf6000830185611e8a565b6120dc6020830184611e8a565b9392505050565b6000604051905081810181811067ffffffffffffffff8211171561210657600080fd5b8060405250919050565b600067ffffffffffffffff82111561212757600080fd5b601f19601f8301169050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061219b826121e4565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b600060ff82169050919050565b60005b8381101561224d578082015181840152602081019050612232565b8381111561225c576000848401525b50505050565b6000601f19601f8301169050919050565b61227c81612190565b811461228757600080fd5b50565b612293816121a2565b811461229e57600080fd5b50565b6122aa816121ae565b81146122b557600080fd5b50565b6122c181612204565b81146122cc57600080fd5b50565b6122d88161220e565b81146122e357600080fd5b50565b6122ef81612222565b81146122fa57600080fd5b5056fea26469706673582212203b5740bf9cc4a6dbe3d2a280957943770fe8a12d70a7385a7af28a888c896c8164736f6c63430007000033", - "immutableReferences": {}, - "sourceMap": "511:11230:35:-:0;;;2063:702;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2314:24;:31;2285:18;:25;:60;2277:145;;;;;;;;;;;;:::i;:::-;;;;;;;;;2450:13;2433:14;;:30;;;;;;;;;;;;;;;;;;2479:9;2474:145;2498:18;:25;2494:1;:29;2474:145;;;2544:64;2557:18;2576:1;2557:21;;;;;;;;;;;;;;2580:24;2605:1;2580:27;;;;;;;;;;;;;;2544:12;;;:64;;:::i;:::-;2525:3;;;;;;;2474:145;;;;2634:9;2629:130;2653:25;:32;2649:1;:36;2629:130;;;2706:42;2719:25;2745:1;2719:28;;;;;;;;;;;;;;2706:12;;;:42;;:::i;:::-;2687:3;;;;;;;2629:130;;;;2063:702;;;;511:11230;;3196:282:37;3330:15;3282:33;:45;3316:10;3282:45;;;;;;;;;;;;:63;;;;;;;;;;;;;;;;;;3408:10;3355:33;:50;3389:15;3355:50;;;;;;;;;;;;;;;:63;;;;3467:4;3429:18;:35;3448:15;3429:35;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;3196:282;;:::o;3484:200::-;3558:18;:35;3577:15;3558:35;;;;;;;;;;;;;;;;;;;;;;;;;3550:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;3673:4;3644:9;:26;3654:15;3644:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3484:200;:::o;5:134:-1:-;;89:6;83:13;74:22;;101:33;128:5;101:33;:::i;:::-;68:71;;;;:::o;164:722::-;;292:3;285:4;277:6;273:17;269:27;259:2;;310:1;307;300:12;259:2;340:6;334:13;362:80;377:64;434:6;377:64;:::i;:::-;362:80;:::i;:::-;353:89;;459:5;484:6;477:5;470:21;514:4;506:6;502:17;492:27;;536:4;531:3;527:14;520:21;;589:6;636:3;628:4;620:6;616:17;611:3;607:27;604:36;601:2;;;653:1;650;643:12;601:2;678:1;663:217;688:6;685:1;682:13;663:217;;;746:3;768:48;812:3;800:10;768:48;:::i;:::-;763:3;756:61;840:4;835:3;831:14;824:21;;868:4;863:3;859:14;852:21;;720:160;710:1;707;703:9;698:14;;663:217;;;667:14;252:634;;;;;;;:::o;912:722::-;;1040:3;1033:4;1025:6;1021:17;1017:27;1007:2;;1058:1;1055;1048:12;1007:2;1088:6;1082:13;1110:80;1125:64;1182:6;1125:64;:::i;:::-;1110:80;:::i;:::-;1101:89;;1207:5;1232:6;1225:5;1218:21;1262:4;1254:6;1250:17;1240:27;;1284:4;1279:3;1275:14;1268:21;;1337:6;1384:3;1376:4;1368:6;1364:17;1359:3;1355:27;1352:36;1349:2;;;1401:1;1398;1391:12;1349:2;1426:1;1411:217;1436:6;1433:1;1430:13;1411:217;;;1494:3;1516:48;1560:3;1548:10;1516:48;:::i;:::-;1511:3;1504:61;1588:4;1583:3;1579:14;1572:21;;1616:4;1611:3;1607:14;1600:21;;1468:160;1458:1;1455;1451:9;1446:14;;1411:217;;;1415:14;1000:634;;;;;;;:::o;1642:134::-;;1726:6;1720:13;1711:22;;1738:33;1765:5;1738:33;:::i;:::-;1705:71;;;;:::o;1783:1059::-;;;;;2024:3;2012:9;2003:7;1999:23;1995:33;1992:2;;;2041:1;2038;2031:12;1992:2;2076:1;2093:64;2149:7;2140:6;2129:9;2125:22;2093:64;:::i;:::-;2083:74;;2055:108;2215:2;2204:9;2200:18;2194:25;2239:18;2231:6;2228:30;2225:2;;;2271:1;2268;2261:12;2225:2;2291:89;2372:7;2363:6;2352:9;2348:22;2291:89;:::i;:::-;2281:99;;2173:213;2438:2;2427:9;2423:18;2417:25;2462:18;2454:6;2451:30;2448:2;;;2494:1;2491;2484:12;2448:2;2514:89;2595:7;2586:6;2575:9;2571:22;2514:89;:::i;:::-;2504:99;;2396:213;2661:2;2650:9;2646:18;2640:25;2685:18;2677:6;2674:30;2671:2;;;2717:1;2714;2707:12;2671:2;2737:89;2818:7;2809:6;2798:9;2794:22;2737:89;:::i;:::-;2727:99;;2619:213;1986:856;;;;;;;:::o;2850:373::-;;3010:67;3074:2;3069:3;3010:67;:::i;:::-;3003:74;;3110:34;3106:1;3101:3;3097:11;3090:55;3179:6;3174:2;3169:3;3165:12;3158:28;3214:2;3209:3;3205:12;3198:19;;2996:227;;;:::o;3232:397::-;;3392:67;3456:2;3451:3;3392:67;:::i;:::-;3385:74;;3492:34;3488:1;3483:3;3479:11;3472:55;3561:30;3556:2;3551:3;3547:12;3540:52;3620:2;3615:3;3611:12;3604:19;;3378:251;;;:::o;3637:416::-;;3837:2;3826:9;3822:18;3814:26;;3887:9;3881:4;3877:20;3873:1;3862:9;3858:17;3851:47;3912:131;4038:4;3912:131;:::i;:::-;3904:139;;3808:245;;;:::o;4060:416::-;;4260:2;4249:9;4245:18;4237:26;;4310:9;4304:4;4300:20;4296:1;4285:9;4281:17;4274:47;4335:131;4461:4;4335:131;:::i;:::-;4327:139;;4231:245;;;:::o;4483:256::-;;4545:2;4539:9;4529:19;;4583:4;4575:6;4571:17;4682:6;4670:10;4667:22;4646:18;4634:10;4631:34;4628:62;4625:2;;;4703:1;4700;4693:12;4625:2;4723:10;4719:2;4712:22;4523:216;;;;:::o;4746:304::-;;4905:18;4897:6;4894:30;4891:2;;;4937:1;4934;4927:12;4891:2;4972:4;4964:6;4960:17;4952:25;;5035:4;5029;5025:15;5017:23;;4828:222;;;:::o;5057:304::-;;5216:18;5208:6;5205:30;5202:2;;;5248:1;5245;5238:12;5202:2;5283:4;5275:6;5271:17;5263:25;;5346:4;5340;5336:15;5328:23;;5139:222;;;:::o;5369:163::-;;5484:6;5479:3;5472:19;5521:4;5516:3;5512:14;5497:29;;5465:67;;;;:::o;5540:91::-;;5602:24;5620:5;5602:24;:::i;:::-;5591:35;;5585:46;;;:::o;5638:72::-;;5700:5;5689:16;;5683:27;;;:::o;5717:121::-;;5790:42;5783:5;5779:54;5768:65;;5762:76;;;:::o;5845:117::-;5914:24;5932:5;5914:24;:::i;:::-;5907:5;5904:35;5894:2;;5953:1;5950;5943:12;5894:2;5888:74;:::o;5969:117::-;6038:24;6056:5;6038:24;:::i;:::-;6031:5;6028:35;6018:2;;6077:1;6074;6067:12;6018:2;6012:74;:::o;511:11230:35:-;;;;;;;", - "deployedSourceMap": "511:11230:35:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2076:120:37;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;439:69;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;359:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5030:2456:35;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1041:75;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;786:42:37;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;640:193:29;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;683:51:37;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1680:154;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3581:167:35;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;559:69:37;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;877:46;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;11558:181:35;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8492:2797;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2585:187:37;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2076:120;962:13;:11;:13::i;:::-;2160:29:::1;2173:15;2160:12;:29::i;:::-;2076:120:::0;:::o;439:69::-;;;;;;;;;;;;;;;;;;;;;;:::o;359:29::-;;;;;;;;;;;;:::o;5030:2456:35:-;962:13:37;:11;:13::i;:::-;5318:43:35::1;5371:20:::0;5401:40:::1;5451:21:::0;5574:4:::1;5561:18;5550:29;;5703:4;5690:18;5656:52;;5809:4;5803:11;5772:42;;5922:30;5893:27;5889:64;5883:4;5879:75;5873:4;5866:89;6426:4;6410:14;6406:25;6277:4;6190:27;6160:335;6515:20;6538:33;:45;6572:10;6538:45;;;;;;;;;;;;;;;;;;;;;6515:68;;6601:18;:32;6620:12;6601:32;;;;;;;;;;;;;;;;;;;;;;;;;6593:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6765:58;678:10;6796:26;;6765:12;:30;;;;:58;;;;:::i;:::-;6761:199;;;6839:22;6880:12;6839:54;;6924:6;:15;;;6940:7;6924:24;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6907:42;;6761:199;;6974:9;:23;6984:12;6974:23;;;;;;;;;;;;;;;;;;;;;;;;;6970:177;;;7013:33;7024:12;7038:7;7013:10;:33::i;:::-;6970:177;;;7077:59;7088:12;7102:9;7121:4;7128:7;7077:10;:59::i;:::-;6970:177;7209:270;;;;;;;;7236:12;7209:270;;;;;;7268:30;7209:270;;;;;;7319:18;7209:270;;;;;;7352:10;7209:270;;;;7376:27;7209:270;;;;7417:9;7209:270;;;;;;7440:7;7209:270;;;;7461:8;7209:270;;::::0;7157:15:::1;:35;7173:18;7157:35;;;;;;;;;;;;;;;:49;7193:12;7157:49;;;;;;;;;;;;;;;:322;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;985:1:37;;;;;5030:2456:35::0;;;;;;:::o;1041:75::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;786:42:37:-;;;;;;;;;;;;;;;;;;;;;;:::o;640:193:29:-;728:14;753:12;728:38;;776:6;:19;;;796:5;811:4;818:7;776:50;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;640:193;;;;:::o;683:51:37:-;;;;;;;;;;;;;;;;;;;;;;:::o;1680:154::-;962:13;:11;:13::i;:::-;1786:41:::1;1799:10;1811:15;1786:12;:41::i;:::-;1680:154:::0;;:::o;3581:167:35:-;3665:20;;:::i;:::-;3704:15;:23;3720:6;3704:23;;;;;;;;;;;;;;;:37;3728:12;3704:37;;;;;;;;;;;;;;;3697:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3581:167;;;;:::o;559:69:37:-;;;;;;;;;;;;;;;;;:::o;877:46::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11558:181:35:-;962:13:37;:11;:13::i;:::-;11670:62:35::1;11684:12;11706:4;11713:9;11724:7;11670:13;:62::i;:::-;11558:181:::0;;;:::o;8492:2797::-;962:13:37;:11;:13::i;:::-;8597:23:35::1;8630:43;8683:24:::0;8768:4:::1;8755:18;8741:32;;8882:4;8876:11;8838:49;;8992:4;8979:18;9242:30;9236:4;9232:41;9219:55;9344:30;9315:27;9311:64;9305:4;9301:75;9295:4;9288:89;9756:7;9750:4;9746:18;9740:4;9736:29;9720:14;9716:50;9562:4;9450:27;9420:433;9987:4;9981:11;9969:23;;10091:7;10081:8;10077:22;10071:4;10067:33;10061:4;10054:47;10241:30;10235:4;10231:41;10634:11;10618:14;10614:32;10507:11;10435:8;10405:299;8727:1987;;;10724:24;10841:4;10812:27;10808:38;10802:45;10782:65;;10867:20;10890:33;:45;10924:10;10890:45;;;;;;;;;;;;;;;;;;;;;10867:68;;10953:18;:41;10980:12;10953:41;;;;;;;;;;;;;;;;;;;;;;;;;10945:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;11054:9;:23;11064:12;11054:23;;;;;;;;;;;;;;;;;;;;;;;;;11050:233;;;11093:70;11104:12;11126:16;11118:25;;11145:7;11154:8;11093:10;:70::i;:::-;11050:233;;;11194:78;11208:12;11230:4;11245:16;11237:25;;11264:7;11194:13;:78::i;:::-;11050:233;985:1:37;;;;;8492:2797:35::0;;;:::o;2585:187:37:-;962:13;:11;:13::i;:::-;2709:56:::1;2722:15;2739:11;2752:12;2709;:56::i;:::-;2585:187:::0;;;:::o;999:119::-;1062:14;;;;;;;;;;1048:28;;:10;:28;;;1040:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;999:119::o;3484:200::-;3558:18;:35;3577:15;3558:35;;;;;;;;;;;;;;;;;;;;;;;;;3550:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;3673:4;3644:9;:26;3654:15;3644:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3484:200;:::o;1358:286:3:-;1445:4;1552:23;1567:7;1552:14;:23::i;:::-;:85;;;;;1591:46;1616:7;1625:11;1591:24;:46::i;:::-;1552:85;1545:92;;1358:286;;;;:::o;2538:187:29:-;2616:31;2675:12;2616:72;;2698:6;:11;;;2710:7;2698:20;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2538:187;;;:::o;1128:211::-;1237:14;1262:12;1237:38;;1285:6;:19;;;1305:5;1312:9;1323:7;1285:46;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1128:211;;;;;:::o;3196:282:37:-;3330:15;3282:33;:45;3316:10;3282:45;;;;;;;;;;;;:63;;;;;;;;;;;;;;;;;;3408:10;3355:33;:50;3389:15;3355:50;;;;;;;;;;;;;;;:63;;;;3467:4;3429:18;:35;3448:15;3429:35;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;3196:282;;:::o;1633:216:29:-;1748:14;1773:12;1748:38;;1796:6;:19;;;1816:5;1823:9;1834:7;1796:46;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1633:216;;;;;:::o;2129:250::-;2245:31;2304:12;2245:72;;2327:6;:11;;;2339:9;2350:7;2366:4;2327:45;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2129:250;;;;;:::o;3690:333:37:-;3803:18;:35;3822:15;3803:35;;;;;;;;;;;;;;;;;;;;;;;;;3795:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;3918:98;;;;;;;;3954:11;3918:98;;;;;;3993:12;3918:98;;;;;3889:9;:26;3899:15;3889:26;;;;;;;;;;;;;;;:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3690:333;;;:::o;746:394:3:-;810:4;1005:55;1030:7;641:10;1039:20;;1005:24;:55::i;:::-;:128;;;;;1077:56;1102:7;494:10;1111:21;;1077:24;:56::i;:::-;1076:57;1005:128;998:135;;746:394;;;:::o;4232:395::-;4325:4;4504:12;4518:11;4533:50;4562:7;4571:11;4533:28;:50::i;:::-;4503:80;;;;4602:7;:17;;;;;4613:6;4602:17;4594:26;;;;4232:395;;;;:::o;5144:444::-;5265:4;5271;5291:26;641:10;5343:20;;5365:11;5320:57;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5291:86;;5388:12;5402:19;5425:7;:18;;5450:5;5458:13;5425:47;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5387:85;;;;5502:2;5486:6;:13;:18;5482:45;;;5514:5;5521;5506:21;;;;;;;;;5482:45;5545:7;5565:6;5554:26;;;;;;;;;;;;:::i;:::-;5537:44;;;;;;;5144:444;;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;5:130::-;;85:6;72:20;63:29;;97:33;124:5;97:33;:::i;:::-;57:78;;;;:::o;142:128::-;;223:6;217:13;208:22;;235:30;259:5;235:30;:::i;:::-;202:68;;;;:::o;277:130::-;;357:6;344:20;335:29;;369:33;396:5;369:33;:::i;:::-;329:78;;;;:::o;428:336::-;;;542:3;535:4;527:6;523:17;519:27;509:2;;560:1;557;550:12;509:2;593:6;580:20;570:30;;620:18;612:6;609:30;606:2;;;652:1;649;642:12;606:2;686:4;678:6;674:17;662:29;;737:3;729:4;721:6;717:17;707:8;703:32;700:41;697:2;;;754:1;751;744:12;697:2;502:262;;;;;:::o;773:444::-;;886:3;879:4;871:6;867:17;863:27;853:2;;904:1;901;894:12;853:2;934:6;928:13;956:65;971:49;1013:6;971:49;:::i;:::-;956:65;:::i;:::-;947:74;;1041:6;1034:5;1027:21;1077:4;1069:6;1065:17;1110:4;1103:5;1099:16;1145:3;1136:6;1131:3;1127:16;1124:25;1121:2;;;1162:1;1159;1152:12;1121:2;1172:39;1204:6;1199:3;1194;1172:39;:::i;:::-;846:371;;;;;;;:::o;1225:130::-;;1305:6;1292:20;1283:29;;1317:33;1344:5;1317:33;:::i;:::-;1277:78;;;;:::o;1362:128::-;;1441:6;1428:20;1419:29;;1453:32;1479:5;1453:32;:::i;:::-;1413:77;;;;:::o;1497:126::-;;1575:6;1562:20;1553:29;;1587:31;1612:5;1587:31;:::i;:::-;1547:76;;;;:::o;1630:241::-;;1734:2;1722:9;1713:7;1709:23;1705:32;1702:2;;;1750:1;1747;1740:12;1702:2;1785:1;1802:53;1847:7;1838:6;1827:9;1823:22;1802:53;:::i;:::-;1792:63;;1764:97;1696:175;;;;:::o;1878:491::-;;;;2016:2;2004:9;1995:7;1991:23;1987:32;1984:2;;;2032:1;2029;2022:12;1984:2;2067:1;2084:53;2129:7;2120:6;2109:9;2105:22;2084:53;:::i;:::-;2074:63;;2046:97;2174:2;2192:53;2237:7;2228:6;2217:9;2213:22;2192:53;:::i;:::-;2182:63;;2153:98;2282:2;2300:53;2345:7;2336:6;2325:9;2321:22;2300:53;:::i;:::-;2290:63;;2261:98;1978:391;;;;;:::o;2376:483::-;;;;2510:2;2498:9;2489:7;2485:23;2481:32;2478:2;;;2526:1;2523;2516:12;2478:2;2561:1;2578:53;2623:7;2614:6;2603:9;2599:22;2578:53;:::i;:::-;2568:63;;2540:97;2668:2;2686:51;2729:7;2720:6;2709:9;2705:22;2686:51;:::i;:::-;2676:61;;2647:96;2774:2;2792:51;2835:7;2826:6;2815:9;2811:22;2792:51;:::i;:::-;2782:61;;2753:96;2472:387;;;;;:::o;2866:257::-;;2978:2;2966:9;2957:7;2953:23;2949:32;2946:2;;;2994:1;2991;2984:12;2946:2;3029:1;3046:61;3099:7;3090:6;3079:9;3075:22;3046:61;:::i;:::-;3036:71;;3008:105;2940:183;;;;:::o;3130:241::-;;3234:2;3222:9;3213:7;3209:23;3205:32;3202:2;;;3250:1;3247;3240:12;3202:2;3285:1;3302:53;3347:7;3338:6;3327:9;3323:22;3302:53;:::i;:::-;3292:63;;3264:97;3196:175;;;;:::o;3378:366::-;;;3499:2;3487:9;3478:7;3474:23;3470:32;3467:2;;;3515:1;3512;3505:12;3467:2;3550:1;3567:53;3612:7;3603:6;3592:9;3588:22;3567:53;:::i;:::-;3557:63;;3529:97;3657:2;3675:53;3720:7;3711:6;3700:9;3696:22;3675:53;:::i;:::-;3665:63;;3636:98;3461:283;;;;;:::o;3751:490::-;;;;3891:2;3879:9;3870:7;3866:23;3862:32;3859:2;;;3907:1;3904;3897:12;3859:2;3942:1;3959:53;4004:7;3995:6;3984:9;3980:22;3959:53;:::i;:::-;3949:63;;3921:97;4077:2;4066:9;4062:18;4049:32;4101:18;4093:6;4090:30;4087:2;;;4133:1;4130;4123:12;4087:2;4161:64;4217:7;4208:6;4197:9;4193:22;4161:64;:::i;:::-;4143:82;;;;4028:203;3853:388;;;;;:::o;4248:861::-;;;;;;;4436:3;4424:9;4415:7;4411:23;4407:33;4404:2;;;4453:1;4450;4443:12;4404:2;4488:1;4505:53;4550:7;4541:6;4530:9;4526:22;4505:53;:::i;:::-;4495:63;;4467:97;4595:2;4613:51;4656:7;4647:6;4636:9;4632:22;4613:51;:::i;:::-;4603:61;;4574:96;4701:2;4719:52;4763:7;4754:6;4743:9;4739:22;4719:52;:::i;:::-;4709:62;;4680:97;4808:2;4826:53;4871:7;4862:6;4851:9;4847:22;4826:53;:::i;:::-;4816:63;;4787:98;4944:3;4933:9;4929:19;4916:33;4969:18;4961:6;4958:30;4955:2;;;5001:1;4998;4991:12;4955:2;5029:64;5085:7;5076:6;5065:9;5061:22;5029:64;:::i;:::-;5011:82;;;;4895:204;4398:711;;;;;;;;:::o;5116:362::-;;5241:2;5229:9;5220:7;5216:23;5212:32;5209:2;;;5257:1;5254;5247:12;5209:2;5313:1;5302:9;5298:17;5292:24;5336:18;5328:6;5325:30;5322:2;;;5368:1;5365;5358:12;5322:2;5388:74;5454:7;5445:6;5434:9;5430:22;5388:74;:::i;:::-;5378:84;;5271:197;5203:275;;;;:::o;5485:360::-;;;5603:2;5591:9;5582:7;5578:23;5574:32;5571:2;;;5619:1;5616;5609:12;5571:2;5654:1;5671:52;5715:7;5706:6;5695:9;5691:22;5671:52;:::i;:::-;5661:62;;5633:96;5760:2;5778:51;5821:7;5812:6;5801:9;5797:22;5778:51;:::i;:::-;5768:61;;5739:96;5565:280;;;;;:::o;5852:360::-;;;5970:2;5958:9;5949:7;5945:23;5941:32;5938:2;;;5986:1;5983;5976:12;5938:2;6021:1;6038:51;6081:7;6072:6;6061:9;6057:22;6038:51;:::i;:::-;6028:61;;6000:95;6126:2;6144:52;6188:7;6179:6;6168:9;6164:22;6144:52;:::i;:::-;6134:62;;6105:97;5932:280;;;;;:::o;6219:103::-;6292:24;6310:5;6292:24;:::i;:::-;6287:3;6280:37;6274:48;;:::o;6329:113::-;6412:24;6430:5;6412:24;:::i;:::-;6407:3;6400:37;6394:48;;:::o;6449:104::-;6526:21;6541:5;6526:21;:::i;:::-;6521:3;6514:34;6508:45;;:::o;6560:103::-;6633:24;6651:5;6633:24;:::i;:::-;6628:3;6621:37;6615:48;;:::o;6670:113::-;6753:24;6771:5;6753:24;:::i;:::-;6748:3;6741:37;6735:48;;:::o;6790:110::-;6871:23;6888:5;6871:23;:::i;:::-;6866:3;6859:36;6853:47;;:::o;6907:323::-;;7007:38;7039:5;7007:38;:::i;:::-;7057:60;7110:6;7105:3;7057:60;:::i;:::-;7050:67;;7122:52;7167:6;7162:3;7155:4;7148:5;7144:16;7122:52;:::i;:::-;7195:29;7217:6;7195:29;:::i;:::-;7190:3;7186:39;7179:46;;6987:243;;;;;:::o;7237:343::-;;7347:38;7379:5;7347:38;:::i;:::-;7397:70;7460:6;7455:3;7397:70;:::i;:::-;7390:77;;7472:52;7517:6;7512:3;7505:4;7498:5;7494:16;7472:52;:::i;:::-;7545:29;7567:6;7545:29;:::i;:::-;7540:3;7536:39;7529:46;;7327:253;;;;;:::o;7587:356::-;;7715:38;7747:5;7715:38;:::i;:::-;7765:88;7846:6;7841:3;7765:88;:::i;:::-;7758:95;;7858:52;7903:6;7898:3;7891:4;7884:5;7880:16;7858:52;:::i;:::-;7931:6;7926:3;7922:16;7915:23;;7695:248;;;;;:::o;7950:347::-;;8062:39;8095:5;8062:39;:::i;:::-;8113:71;8177:6;8172:3;8113:71;:::i;:::-;8106:78;;8189:52;8234:6;8229:3;8222:4;8215:5;8211:16;8189:52;:::i;:::-;8262:29;8284:6;8262:29;:::i;:::-;8257:3;8253:39;8246:46;;8042:255;;;;;:::o;8305:330::-;;8465:67;8529:2;8524:3;8465:67;:::i;:::-;8458:74;;8565:32;8561:1;8556:3;8552:11;8545:53;8626:2;8621:3;8617:12;8610:19;;8451:184;;;:::o;8644:373::-;;8804:67;8868:2;8863:3;8804:67;:::i;:::-;8797:74;;8904:34;8900:1;8895:3;8891:11;8884:55;8973:6;8968:2;8963:3;8959:12;8952:28;9008:2;9003:3;8999:12;8992:19;;8790:227;;;:::o;9026:377::-;;9186:67;9250:2;9245:3;9186:67;:::i;:::-;9179:74;;9286:34;9282:1;9277:3;9273:11;9266:55;9355:10;9350:2;9345:3;9341:12;9334:32;9394:2;9389:3;9385:12;9378:19;;9172:231;;;:::o;9490:1670::-;;9653:6;9648:3;9644:16;9747:4;9740:5;9736:16;9730:23;9759:63;9816:4;9811:3;9807:14;9793:12;9759:63;:::i;:::-;9675:153;9928:4;9921:5;9917:16;9911:23;9940:59;9993:4;9988:3;9984:14;9970:12;9940:59;:::i;:::-;9838:167;10093:4;10086:5;10082:16;10076:23;10105:59;10158:4;10153:3;10149:14;10135:12;10105:59;:::i;:::-;10015:155;10250:4;10243:5;10239:16;10233:23;10262:63;10319:4;10314:3;10310:14;10296:12;10262:63;:::i;:::-;10180:151;10428:4;10421:5;10417:16;10411:23;10480:3;10474:4;10470:14;10463:4;10458:3;10454:14;10447:38;10500:71;10566:4;10552:12;10500:71;:::i;:::-;10492:79;;10341:242;10662:4;10655:5;10651:16;10645:23;10674:63;10731:4;10726:3;10722:14;10708:12;10674:63;:::i;:::-;10593:150;10820:4;10813:5;10809:16;10803:23;10832:63;10889:4;10884:3;10880:14;10866:12;10832:63;:::i;:::-;10753:148;10979:4;10972:5;10968:16;10962:23;11031:3;11025:4;11021:14;11014:4;11009:3;11005:14;10998:38;11051:71;11117:4;11103:12;11051:71;:::i;:::-;11043:79;;10911:223;11151:4;11144:11;;9626:1534;;;;;:::o;11167:103::-;11240:24;11258:5;11240:24;:::i;:::-;11235:3;11228:37;11222:48;;:::o;11277:113::-;11360:24;11378:5;11360:24;:::i;:::-;11355:3;11348:37;11342:48;;:::o;11397:97::-;11466:22;11482:5;11466:22;:::i;:::-;11461:3;11454:35;11448:46;;:::o;11501:107::-;11580:22;11596:5;11580:22;:::i;:::-;11575:3;11568:35;11562:46;;:::o;11615:271::-;;11768:93;11857:3;11848:6;11768:93;:::i;:::-;11761:100;;11878:3;11871:10;;11749:137;;;;:::o;11893:222::-;;12020:2;12009:9;12005:18;11997:26;;12034:71;12102:1;12091:9;12087:17;12078:6;12034:71;:::i;:::-;11991:124;;;;:::o;12122:444::-;;12305:2;12294:9;12290:18;12282:26;;12319:71;12387:1;12376:9;12372:17;12363:6;12319:71;:::i;:::-;12401:72;12469:2;12458:9;12454:18;12445:6;12401:72;:::i;:::-;12484;12552:2;12541:9;12537:18;12528:6;12484:72;:::i;:::-;12276:290;;;;;;:::o;12573:532::-;;12776:2;12765:9;12761:18;12753:26;;12790:71;12858:1;12847:9;12843:17;12834:6;12790:71;:::i;:::-;12872:72;12940:2;12929:9;12925:18;12916:6;12872:72;:::i;:::-;12992:9;12986:4;12982:20;12977:2;12966:9;12962:18;12955:48;13017:78;13090:4;13081:6;13017:78;:::i;:::-;13009:86;;12747:358;;;;;;:::o;13112:1156::-;;13463:3;13452:9;13448:19;13440:27;;13478:71;13546:1;13535:9;13531:17;13522:6;13478:71;:::i;:::-;13560:68;13624:2;13613:9;13609:18;13600:6;13560:68;:::i;:::-;13639;13703:2;13692:9;13688:18;13679:6;13639:68;:::i;:::-;13718:72;13786:2;13775:9;13771:18;13762:6;13718:72;:::i;:::-;13839:9;13833:4;13829:20;13823:3;13812:9;13808:19;13801:49;13864:76;13935:4;13926:6;13864:76;:::i;:::-;13856:84;;13951:73;14019:3;14008:9;14004:19;13995:6;13951:73;:::i;:::-;14035;14103:3;14092:9;14088:19;14079:6;14035:73;:::i;:::-;14157:9;14151:4;14147:20;14141:3;14130:9;14126:19;14119:49;14182:76;14253:4;14244:6;14182:76;:::i;:::-;14174:84;;13434:834;;;;;;;;;;;:::o;14275:210::-;;14396:2;14385:9;14381:18;14373:26;;14410:65;14472:1;14461:9;14457:17;14448:6;14410:65;:::i;:::-;14367:118;;;;:::o;14492:222::-;;14619:2;14608:9;14604:18;14596:26;;14633:71;14701:1;14690:9;14686:17;14677:6;14633:71;:::i;:::-;14590:124;;;;:::o;14721:218::-;;14846:2;14835:9;14831:18;14823:26;;14860:69;14926:1;14915:9;14911:17;14902:6;14860:69;:::i;:::-;14817:122;;;;:::o;14946:416::-;;15146:2;15135:9;15131:18;15123:26;;15196:9;15190:4;15186:20;15182:1;15171:9;15167:17;15160:47;15221:131;15347:4;15221:131;:::i;:::-;15213:139;;15117:245;;;:::o;15369:416::-;;15569:2;15558:9;15554:18;15546:26;;15619:9;15613:4;15609:20;15605:1;15594:9;15590:17;15583:47;15644:131;15770:4;15644:131;:::i;:::-;15636:139;;15540:245;;;:::o;15792:416::-;;15992:2;15981:9;15977:18;15969:26;;16042:9;16036:4;16032:20;16028:1;16017:9;16013:17;16006:47;16067:131;16193:4;16067:131;:::i;:::-;16059:139;;15963:245;;;:::o;16215:394::-;;16404:2;16393:9;16389:18;16381:26;;16454:9;16448:4;16444:20;16440:1;16429:9;16425:17;16418:47;16479:120;16594:4;16585:6;16479:120;:::i;:::-;16471:128;;16375:234;;;;:::o;16616:222::-;;16743:2;16732:9;16728:18;16720:26;;16757:71;16825:1;16814:9;16810:17;16801:6;16757:71;:::i;:::-;16714:124;;;;:::o;16845:317::-;;16992:2;16981:9;16977:18;16969:26;;17006:67;17070:1;17059:9;17055:17;17046:6;17006:67;:::i;:::-;17084:68;17148:2;17137:9;17133:18;17124:6;17084:68;:::i;:::-;16963:199;;;;;:::o;17169:256::-;;17231:2;17225:9;17215:19;;17269:4;17261:6;17257:17;17368:6;17356:10;17353:22;17332:18;17320:10;17317:34;17314:62;17311:2;;;17389:1;17386;17379:12;17311:2;17409:10;17405:2;17398:22;17209:216;;;;:::o;17432:322::-;;17576:18;17568:6;17565:30;17562:2;;;17608:1;17605;17598:12;17562:2;17675:4;17671:9;17664:4;17656:6;17652:17;17648:33;17640:41;;17739:4;17733;17729:15;17721:23;;17499:255;;;:::o;17761:121::-;;17854:5;17848:12;17838:22;;17819:63;;;:::o;17889:122::-;;17983:5;17977:12;17967:22;;17948:63;;;:::o;18019:152::-;;18123:6;18118:3;18111:19;18160:4;18155:3;18151:14;18136:29;;18104:67;;;;:::o;18180:162::-;;18294:6;18289:3;18282:19;18331:4;18326:3;18322:14;18307:29;;18275:67;;;;:::o;18351:144::-;;18486:3;18471:18;;18464:31;;;;:::o;18504:163::-;;18619:6;18614:3;18607:19;18656:4;18651:3;18647:14;18632:29;;18600:67;;;;:::o;18675:91::-;;18737:24;18755:5;18737:24;:::i;:::-;18726:35;;18720:46;;;:::o;18773:85::-;;18846:5;18839:13;18832:21;18821:32;;18815:43;;;:::o;18865:72::-;;18927:5;18916:16;;18910:27;;;:::o;18944:144::-;;19016:66;19009:5;19005:78;18994:89;;18988:100;;;:::o;19095:121::-;;19168:42;19161:5;19157:54;19146:65;;19140:76;;;:::o;19223:72::-;;19285:5;19274:16;;19268:27;;;:::o;19302:96::-;;19374:18;19367:5;19363:30;19352:41;;19346:52;;;:::o;19405:81::-;;19476:4;19469:5;19465:16;19454:27;;19448:38;;;:::o;19494:268::-;19559:1;19566:101;19580:6;19577:1;19574:13;19566:101;;;19656:1;19651:3;19647:11;19641:18;19637:1;19632:3;19628:11;19621:39;19602:2;19599:1;19595:10;19590:15;;19566:101;;;19682:6;19679:1;19676:13;19673:2;;;19747:1;19738:6;19733:3;19729:16;19722:27;19673:2;19543:219;;;;:::o;19770:97::-;;19858:2;19854:7;19849:2;19842:5;19838:14;19834:28;19824:38;;19818:49;;;:::o;19875:117::-;19944:24;19962:5;19944:24;:::i;:::-;19937:5;19934:35;19924:2;;19983:1;19980;19973:12;19924:2;19918:74;:::o;19999:111::-;20065:21;20080:5;20065:21;:::i;:::-;20058:5;20055:32;20045:2;;20101:1;20098;20091:12;20045:2;20039:71;:::o;20117:117::-;20186:24;20204:5;20186:24;:::i;:::-;20179:5;20176:35;20166:2;;20225:1;20222;20215:12;20166:2;20160:74;:::o;20241:117::-;20310:24;20328:5;20310:24;:::i;:::-;20303:5;20300:35;20290:2;;20349:1;20346;20339:12;20290:2;20284:74;:::o;20365:115::-;20433:23;20450:5;20433:23;:::i;:::-;20426:5;20423:34;20413:2;;20471:1;20468;20461:12;20413:2;20407:73;:::o;20487:113::-;20554:22;20570:5;20554:22;:::i;:::-;20547:5;20544:33;20534:2;;20591:1;20588;20581:12;20534:2;20528:72;:::o", - "source": "pragma solidity 0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"../interfaces/IDepositExecute.sol\";\nimport \"./HandlerHelpers.sol\";\nimport \"../ERC721Safe.sol\";\nimport \"../ERC721MinterBurnerPauser.sol\";\nimport \"@openzeppelin/contracts/introspection/ERC165Checker.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol\";\n\n\n/**\n @title Handles ERC721 deposits and deposit executions.\n @author ChainSafe Systems.\n @notice This contract is intended to be used with the Bridge contract.\n */\ncontract ERC721Handler is IDepositExecute, HandlerHelpers, ERC721Safe {\n using ERC165Checker for address;\n\n bytes4 private constant _INTERFACE_ERC721_METADATA = 0x5b5e139f;\n\n struct DepositRecord {\n address _tokenAddress;\n uint8 _lenDestinationRecipientAddress;\n uint8 _destinationChainID;\n bytes32 _resourceID;\n bytes _destinationRecipientAddress;\n address _depositer;\n uint _tokenID;\n bytes _metaData;\n }\n\n // DepositNonce => Deposit Record\n mapping (uint8 => mapping (uint64 => DepositRecord)) public _depositRecords;\n\n /**\n @param bridgeAddress Contract address of previously deployed Bridge.\n @param initialResourceIDs Resource IDs are used to identify a specific contract address.\n These are the Resource IDs this contract will initially support.\n @param initialContractAddresses These are the addresses the {initialResourceIDs} will point to, and are the contracts that will be\n called to perform various deposit calls.\n @param burnableContractAddresses These addresses will be set as burnable and when {deposit} is called, the deposited token will be burned.\n When {executeProposal} is called, new tokens will be minted.\n\n @dev {initialResourceIDs} and {initialContractAddresses} must have the same length (one resourceID for every address).\n Also, these arrays must be ordered in the way that {initialResourceIDs}[0] is the intended resourceID for {initialContractAddresses}[0].\n */\n constructor(\n address bridgeAddress,\n bytes32[] memory initialResourceIDs,\n address[] memory initialContractAddresses,\n address[] memory burnableContractAddresses\n ) public {\n require(initialResourceIDs.length == initialContractAddresses.length,\n \"initialResourceIDs and initialContractAddresses len mismatch\");\n\n _bridgeAddress = bridgeAddress;\n\n for (uint256 i = 0; i < initialResourceIDs.length; i++) {\n _setResource(initialResourceIDs[i], initialContractAddresses[i]);\n }\n\n for (uint256 i = 0; i < burnableContractAddresses.length; i++) {\n _setBurnable(burnableContractAddresses[i]);\n }\n }\n\n /**\n @param depositNonce This ID will have been generated by the Bridge contract.\n @param destId ID of chain deposit will be bridged to.\n @return DepositRecord which consists of:\n - _tokenAddress Address used when {deposit} was executed.\n - _destinationChainID ChainID deposited tokens are intended to end up on.\n - _resourceID ResourceID used when {deposit} was executed.\n - _lenDestinationRecipientAddress Used to parse recipient's address from {_destinationRecipientAddress}\n - _destinationRecipientAddress Address tokens are intended to be deposited to on desitnation chain.\n - _depositer Address that initially called {deposit} in the Bridge contract.\n - _tokenID ID of ERC721.\n - _metaData Optional ERC721 metadata.\n */\n function getDepositRecord(uint64 depositNonce, uint8 destId) external view returns (DepositRecord memory) {\n return _depositRecords[destId][depositNonce];\n }\n\n /**\n @notice A deposit is initiatied by making a deposit in the Bridge contract.\n @param destinationChainID Chain ID of chain token is expected to be bridged to.\n @param depositNonce This value is generated as an ID by the Bridge contract.\n @param depositer Address of account making the deposit in the Bridge contract.\n @param data Consists of: {resourceID}, {tokenID}, {lenDestinationRecipientAddress},\n and {destinationRecipientAddress} all padded to 32 bytes.\n @notice Data passed into the function should be constructed as follows:\n tokenID uint256 bytes 0 - 32\n destinationRecipientAddress length uint256 bytes 32 - 64\n destinationRecipientAddress bytes bytes 64 - (64 + len(destinationRecipientAddress))\n @notice If the corresponding {tokenAddress} for the parsed {resourceID} supports {_INTERFACE_ERC721_METADATA},\n then {metaData} will be set according to the {tokenURI} method in the token contract.\n @dev Depending if the corresponding {tokenAddress} for the parsed {resourceID} is\n marked true in {_burnList}, deposited tokens will be burned, if not, they will be locked.\n */\n function deposit(bytes32 resourceID,\n uint8 destinationChainID,\n uint64 depositNonce,\n address depositer,\n bytes calldata data\n ) external override onlyBridge {\n uint lenDestinationRecipientAddress;\n uint tokenID;\n bytes memory destinationRecipientAddress;\n bytes memory metaData;\n\n assembly {\n\n // Load tokenID from data + 32\n tokenID := calldataload(0xC4)\n\n // Load length of recipient address from data + 96\n lenDestinationRecipientAddress := calldataload(0xE4)\n // Load free mem pointer for recipient\n destinationRecipientAddress := mload(0x40)\n // Store recipient address\n mstore(0x40, add(0x20, add(destinationRecipientAddress, lenDestinationRecipientAddress)))\n\n // func sig (4) + destinationChainId (padded to 32) + depositNonce (32) + depositor (32) +\n // bytes lenght (32) + resourceId (32) + tokenId (32) + length (32) = 0xE4\n\n calldatacopy(\n destinationRecipientAddress, // copy to destinationRecipientAddress\n 0xE4, // copy from calldata after destinationRecipientAddress length declaration @0xE4\n sub(calldatasize(), 0xE4) // copy size (calldatasize - (0xE4 + 0x20))\n )\n }\n\n address tokenAddress = _resourceIDToTokenContractAddress[resourceID];\n require(_contractWhitelist[tokenAddress], \"provided tokenAddress is not whitelisted\");\n\n // Check if the contract supports metadata, fetch it if it does\n if (tokenAddress.supportsInterface(_INTERFACE_ERC721_METADATA)) {\n IERC721Metadata erc721 = IERC721Metadata(tokenAddress);\n metaData = bytes(erc721.tokenURI(tokenID));\n }\n\n if (_burnList[tokenAddress]) {\n burnERC721(tokenAddress, tokenID);\n } else {\n lockERC721(tokenAddress, depositer, address(this), tokenID);\n }\n\n _depositRecords[destinationChainID][depositNonce] = DepositRecord(\n tokenAddress,\n uint8(lenDestinationRecipientAddress),\n uint8(destinationChainID),\n resourceID,\n destinationRecipientAddress,\n depositer,\n tokenID,\n metaData\n );\n }\n\n /**\n @notice Proposal execution should be initiated when a proposal is finalized in the Bridge contract.\n by a relayer on the deposit's destination chain.\n @param data Consists of {tokenID}, {resourceID}, {lenDestinationRecipientAddress},\n {destinationRecipientAddress}, {lenMeta}, and {metaData} all padded to 32 bytes.\n @notice Data passed into the function should be constructed as follows:\n tokenID uint256 bytes 0 - 32\n destinationRecipientAddress length uint256 bytes 32 - 64\n destinationRecipientAddress bytes bytes 64 - (64 + len(destinationRecipientAddress))\n metadata length uint256 bytes (64 + len(destinationRecipientAddress)) - (64 + len(destinationRecipientAddress) + 32)\n metadata bytes bytes (64 + len(destinationRecipientAddress) + 32) - END\n */\n function executeProposal(bytes32 resourceID, bytes calldata data) external override onlyBridge {\n uint256 tokenID;\n bytes memory destinationRecipientAddress;\n bytes memory metaData;\n\n assembly {\n tokenID := calldataload(0x64)\n\n\n // set up destinationRecipientAddress\n destinationRecipientAddress := mload(0x40) // load free memory pointer\n let lenDestinationRecipientAddress := calldataload(0x84)\n\n // set up metaData\n // 0xA4 is a combination of 0x24 (position of {data} in calldata) and\n // 0x80 is the relative position of the {metadata} length in {data}\n let lenMeta := calldataload(add(0xA4, lenDestinationRecipientAddress))\n\n mstore(0x40, add(0x40, add(destinationRecipientAddress, lenDestinationRecipientAddress))) // shift free memory pointer\n\n calldatacopy(\n destinationRecipientAddress, // copy to destinationRecipientAddress\n 0x84, // copy from calldata after destinationRecipientAddress length declaration @0x84\n sub(calldatasize(), add(0x84, add(0x20, lenMeta))) // copy size (calldatasize - (0xC4 + the space metaData takes up))\n )\n\n // metadata has variable length\n // load free memory pointer to store metadata\n metaData := mload(0x40)\n\n // incrementing free memory pointer\n mstore(0x40, add(0x40, add(metaData, lenMeta)))\n\n // metadata is located at (0x84 + 0x20 + lenDestinationRecipientAddress) in calldata\n let metaDataLoc := add(0xA4, lenDestinationRecipientAddress)\n\n // in the calldata, metadata is stored @0x124 after accounting for function signature and the depositNonce\n calldatacopy(\n metaData, // copy to metaData\n metaDataLoc, // copy from calldata after metaData length declaration\n sub(calldatasize(), metaDataLoc) // copy size (calldatasize - metaDataLoc)\n )\n }\n\n bytes20 recipientAddress;\n\n assembly {\n recipientAddress := mload(add(destinationRecipientAddress, 0x20))\n }\n\n address tokenAddress = _resourceIDToTokenContractAddress[resourceID];\n require(_contractWhitelist[address(tokenAddress)], \"provided tokenAddress is not whitelisted\");\n\n if (_burnList[tokenAddress]) {\n mintERC721(tokenAddress, address(recipientAddress), tokenID, metaData);\n } else {\n releaseERC721(tokenAddress, address(this), address(recipientAddress), tokenID);\n }\n }\n\n /**\n @notice Used to manually release ERC721 tokens from ERC721Safe.\n @param tokenAddress Address of token contract to release.\n @param recipient Address to release token to.\n @param tokenID The ERC721 token ID to release.\n */\n function withdraw(address tokenAddress, address recipient, uint tokenID) external override onlyBridge {\n releaseERC721(tokenAddress, address(this), recipient, tokenID);\n }\n}\n", - "sourcePath": "/root/dev-spaces/me/chainbridge-solidity/contracts/handlers/ERC721Handler.sol", - "ast": { - "absolutePath": "project:/contracts/handlers/ERC721Handler.sol", - "exportedSymbols": { - "ERC721Handler": [7607] + ], + "name": "setResource", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "depositNonce", + "type": "uint64" }, - "id": 7608, - "license": null, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 7271, - "literals": ["solidity", "0.7", ".0"], - "nodeType": "PragmaDirective", - "src": "0:22:35" - }, + { + "internalType": "uint8", + "name": "destId", + "type": "uint8" + } + ], + "name": "getDepositRecord", + "outputs": [ + { + "components": [ { - "id": 7272, - "literals": ["experimental", "ABIEncoderV2"], - "nodeType": "PragmaDirective", - "src": "23:33:35" + "internalType": "address", + "name": "_tokenAddress", + "type": "address" }, { - "absolutePath": "project:/contracts/interfaces/IDepositExecute.sol", - "file": "../interfaces/IDepositExecute.sol", - "id": 7273, - "nodeType": "ImportDirective", - "scope": 7608, - "sourceUnit": 8246, - "src": "58:43:35", - "symbolAliases": [], - "unitAlias": "" + "internalType": "uint8", + "name": "_lenDestinationRecipientAddress", + "type": "uint8" }, { - "absolutePath": "project:/contracts/handlers/HandlerHelpers.sol", - "file": "./HandlerHelpers.sol", - "id": 7274, - "nodeType": "ImportDirective", - "scope": 7608, - "sourceUnit": 8210, - "src": "102:30:35", - "symbolAliases": [], - "unitAlias": "" + "internalType": "uint8", + "name": "_destinationChainID", + "type": "uint8" }, { - "absolutePath": "project:/contracts/ERC721Safe.sol", - "file": "../ERC721Safe.sol", - "id": 7275, - "nodeType": "ImportDirective", - "scope": 7608, - "sourceUnit": 6235, - "src": "133:27:35", - "symbolAliases": [], - "unitAlias": "" + "internalType": "bytes32", + "name": "_resourceID", + "type": "bytes32" }, { - "absolutePath": "project:/contracts/ERC721MinterBurnerPauser.sol", - "file": "../ERC721MinterBurnerPauser.sol", - "id": 7276, - "nodeType": "ImportDirective", - "scope": 7608, - "sourceUnit": 6092, - "src": "161:41:35", - "symbolAliases": [], - "unitAlias": "" + "internalType": "bytes", + "name": "_destinationRecipientAddress", + "type": "bytes" }, { - "absolutePath": "@openzeppelin/contracts/introspection/ERC165Checker.sol", - "file": "@openzeppelin/contracts/introspection/ERC165Checker.sol", - "id": 7277, - "nodeType": "ImportDirective", - "scope": 7608, - "sourceUnit": 571, - "src": "203:65:35", - "symbolAliases": [], - "unitAlias": "" + "internalType": "address", + "name": "_depositer", + "type": "address" }, { - "absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol", - "file": "@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol", - "id": 7278, - "nodeType": "ImportDirective", - "scope": 7608, - "sourceUnit": 2936, - "src": "269:66:35", - "symbolAliases": [], - "unitAlias": "" + "internalType": "uint256", + "name": "_tokenID", + "type": "uint256" }, { - "abstract": false, - "baseContracts": [ - { - "arguments": null, - "baseName": { - "contractScope": null, - "id": 7280, - "name": "IDepositExecute", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 8245, - "src": "537:15:35", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IDepositExecute_$8245", - "typeString": "contract IDepositExecute" - } - }, - "id": 7281, - "nodeType": "InheritanceSpecifier", - "src": "537:15:35" + "internalType": "bytes", + "name": "_metaData", + "type": "bytes" + } + ], + "internalType": "struct ERC721Handler.DepositRecord", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "resourceID", + "type": "bytes32" + }, + { + "internalType": "uint8", + "name": "destinationChainID", + "type": "uint8" + }, + { + "internalType": "uint64", + "name": "depositNonce", + "type": "uint64" + }, + { + "internalType": "address", + "name": "depositer", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "resourceID", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "executeProposal", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenID", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "metadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"bridgeAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"initialResourceIDs\",\"type\":\"bytes32[]\"},{\"internalType\":\"address[]\",\"name\":\"initialContractAddresses\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"burnableContractAddresses\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"_bridgeAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"_burnList\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"_contractWhitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"_depositRecords\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"_lenDestinationRecipientAddress\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"_destinationChainID\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"_resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_destinationRecipientAddress\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_depositer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenID\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_metaData\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"_resourceIDToTokenContractAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"_tokenContractAddressToResourceID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"destinationChainID\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"depositer\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"executeProposal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenID\",\"type\":\"uint256\"}],\"name\":\"fundERC721\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"destId\",\"type\":\"uint8\"}],\"name\":\"getDepositRecord\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"_lenDestinationRecipientAddress\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"_destinationChainID\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"_resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_destinationRecipientAddress\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_depositer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenID\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_metaData\",\"type\":\"bytes\"}],\"internalType\":\"struct ERC721Handler.DepositRecord\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"setBurnable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"setResource\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenID\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"ChainSafe Systems.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"{initialResourceIDs} and {initialContractAddresses} must have the same length (one resourceID for every address). Also, these arrays must be ordered in the way that {initialResourceIDs}[0] is the intended resourceID for {initialContractAddresses}[0].\",\"params\":{\"bridgeAddress\":\"Contract address of previously deployed Bridge.\",\"burnableContractAddresses\":\"These addresses will be set as burnable and when {deposit} is called, the deposited token will be burned. When {executeProposal} is called, new tokens will be minted.\",\"initialContractAddresses\":\"These are the addresses the {initialResourceIDs} will point to, and are the contracts that will be called to perform various deposit calls.\",\"initialResourceIDs\":\"Resource IDs are used to identify a specific contract address. These are the Resource IDs this contract will initially support.\"}},\"deposit(bytes32,uint8,uint64,address,bytes)\":{\"details\":\"Depending if the corresponding {tokenAddress} for the parsed {resourceID} is marked true in {_burnList}, deposited tokens will be burned, if not, they will be locked.\",\"params\":{\"data\":\"Consists of: {resourceID}, {tokenID}, {lenDestinationRecipientAddress}, and {destinationRecipientAddress} all padded to 32 bytes.\",\"depositNonce\":\"This value is generated as an ID by the Bridge contract.\",\"depositer\":\"Address of account making the deposit in the Bridge contract.\",\"destinationChainID\":\"Chain ID of chain token is expected to be bridged to.\"}},\"executeProposal(bytes32,bytes)\":{\"params\":{\"data\":\"Consists of {tokenID}, {resourceID}, {lenDestinationRecipientAddress}, {destinationRecipientAddress}, {lenMeta}, and {metaData} all padded to 32 bytes.\"}},\"fundERC721(address,address,uint256)\":{\"params\":{\"owner\":\"Address of current token owner.\",\"tokenAddress\":\"Address of ERC721 to transfer.\",\"tokenID\":\"ID of token to transfer.\"}},\"getDepositRecord(uint64,uint8)\":{\"params\":{\"depositNonce\":\"This ID will have been generated by the Bridge contract.\",\"destId\":\"ID of chain deposit will be bridged to.\"},\"returns\":{\"_0\":\"DepositRecord which consists of: - _tokenAddress Address used when {deposit} was executed. - _destinationChainID ChainID deposited tokens are intended to end up on. - _resourceID ResourceID used when {deposit} was executed. - _lenDestinationRecipientAddress Used to parse recipient's address from {_destinationRecipientAddress} - _destinationRecipientAddress Address tokens are intended to be deposited to on desitnation chain. - _depositer Address that initially called {deposit} in the Bridge contract. - _tokenID ID of ERC721. - _metaData Optional ERC721 metadata.\"}},\"setBurnable(address)\":{\"params\":{\"contractAddress\":\"Address of contract to be used when making or executing deposits.\"}},\"setResource(bytes32,address)\":{\"params\":{\"contractAddress\":\"Address of contract to be called when a deposit is made and a deposited is executed.\",\"resourceID\":\"ResourceID to be used when making deposits.\"}},\"withdraw(address,address,uint256)\":{\"params\":{\"recipient\":\"Address to release token to.\",\"tokenAddress\":\"Address of token contract to release.\",\"tokenID\":\"The ERC721 token ID to release.\"}}},\"title\":\"Handles ERC721 deposits and deposit executions.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"deposit(bytes32,uint8,uint64,address,bytes)\":{\"notice\":\"A deposit is initiatied by making a deposit in the Bridge contract.Data passed into the function should be constructed as follows: tokenID uint256 bytes 0 - 32 destinationRecipientAddress length uint256 bytes 32 - 64 destinationRecipientAddress bytes bytes 64 - (64 + len(destinationRecipientAddress))If the corresponding {tokenAddress} for the parsed {resourceID} supports {_INTERFACE_ERC721_METADATA}, then {metaData} will be set according to the {tokenURI} method in the token contract.\"},\"executeProposal(bytes32,bytes)\":{\"notice\":\"Proposal execution should be initiated when a proposal is finalized in the Bridge contract. by a relayer on the deposit's destination chain.Data passed into the function should be constructed as follows: tokenID uint256 bytes 0 - 32 destinationRecipientAddress length uint256 bytes 32 - 64 destinationRecipientAddress bytes bytes 64 - (64 + len(destinationRecipientAddress)) metadata length uint256 bytes (64 + len(destinationRecipientAddress)) - (64 + len(destinationRecipientAddress) + 32) metadata bytes bytes (64 + len(destinationRecipientAddress) + 32) - END\"},\"fundERC721(address,address,uint256)\":{\"notice\":\"Used to transfer tokens into the safe to fund proposals.\"},\"setBurnable(address)\":{\"notice\":\"First verifies {contractAddress} is whitelisted, then sets {_burnList}[{contractAddress}] to true.\"},\"setResource(bytes32,address)\":{\"notice\":\"First verifies {_resourceIDToContractAddress}[{resourceID}] and {_contractAddressToResourceID}[{contractAddress}] are not already set, then sets {_resourceIDToContractAddress} with {contractAddress}, {_contractAddressToResourceID} with {resourceID}, and {_contractWhitelist} to true for {contractAddress}.\"},\"withdraw(address,address,uint256)\":{\"notice\":\"Used to manually release ERC721 tokens from ERC721Safe.\"}},\"notice\":\"This contract is intended to be used with the Bridge contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/handlers/ERC721Handler.sol\":\"ERC721Handler\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"project:/contracts/ERC721MinterBurnerPauser.sol\":{\"keccak256\":\"0xe8a107d636e1231426876efcf9e3e6d7450ab8c797d3a827fed9ee6cbb9a018f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cdba147847f59fbe767712b919f7259f19677e56f40d52862aa1389c4eab64aa\",\"dweb:/ipfs/QmeW3J3zKQyhm98WtYGRw8sJAvd8sccWR5agNpQUgWiabJ\"]},\"project:/contracts/ERC721Safe.sol\":{\"keccak256\":\"0x9e9112d24b17860b3eba7f02a41eec303762e034ee2a1a19b78f9055f5dd4424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2fe6a00abeb0b1b92d4aee09934a2521c52793a06d80c7005768ac7017c6ba4\",\"dweb:/ipfs/Qmb9Q8bdWnxZSng2vJriTHvr6yXSnMU9cf6vYZBPZFnkub\"]},\"project:/contracts/handlers/ERC721Handler.sol\":{\"keccak256\":\"0x6ebdf4676d7193996c182418692cbf38d3e2715f2d691ef2e5192b827219d3e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6cf0fb20931a1ffc971f64078db6c9ef9677eec5c47a6b7cffe08ef636c37b2\",\"dweb:/ipfs/QmbBnHY9An3qw4LddESYgu7WDyDod4SefWvwimVGCRUfBz\"]},\"project:/contracts/handlers/HandlerHelpers.sol\":{\"keccak256\":\"0x0ff7446a571495928f87ca7dd881048487fe4e6a8b255072148b6cdecc24aa4a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://643ee18c2a175da648bf713b3e38fe1a5760170943cf2e04529ae4cbe0174e33\",\"dweb:/ipfs/QmbcmuauHjhhvt7kLxXTm6U24VeVPjrAbBku7M8d2Czveq\"]},\"project:/contracts/interfaces/IDepositExecute.sol\":{\"keccak256\":\"0x2ca59cc65955ce56c174361335387738a9c04e9953966fc7e7e8a5e24360342b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c70943daf286672ec6d9e629a6e06a54edc9374f486b17955c31a3e53d433761\",\"dweb:/ipfs/QmW5FxsMc93iDMr4wtqD5NRLgUWbaX48SyFViduH5wSiPJ\"]},\"project:/contracts/interfaces/IERCHandler.sol\":{\"keccak256\":\"0xd603e031bccb0731cbc1a579f4c47b59b29a4e817b71c2d523fd9dfdd010b930\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1f35fdd978917075a238d74bc8f04867c74e651eebf9324b6a1f2fa88b9294a7\",\"dweb:/ipfs/QmUXqfKNNyqTEgNDEn4gwhDHTYj4BTHH4Q2Ah1XmbjNyn3\"]},\"project:/contracts/openzeppelin/AccessControl.sol\":{\"keccak256\":\"0xdae96a90cf7ebe1af6d3a6ce965f6c1f4bcf8c2931d6b0fecc54acf29c1ee92b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dfc9858247b6ac358a4850a74189190a311548333041bdd9b3f75feeef409d47\",\"dweb:/ipfs/QmXs3uTH6jAV66r4CuvNwKJxpUiDpcmVjWQugDripnvo6V\"]},\"project:/contracts/openzeppelin/AccessControlEnumerable.sol\":{\"keccak256\":\"0x429abe98d2cb675b8653b983c40902a24b9c0ad6f005bee3601a9339961e8dc3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7dfd1a8023ee1892980a7a01eaa4ec229087bf0bee99bf5155c105969b1217f5\",\"dweb:/ipfs/QmeYccn3MSv5P1bjfCDvjZFgWSwigfqsqQXU94GkTRomg7\"]},\"project:/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]},\"project:/contracts/openzeppelin/Context.sol\":{\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a367861093b74443b137564d3f3c472f70bcf114739e62059c939f25e315706c\",\"dweb:/ipfs/Qmd7JMpcxD9RuQjK3uM3EzJUgSqdN8vzp8eytEiuwxQJ6h\"]},\"project:/contracts/openzeppelin/Counters.sol\":{\"keccak256\":\"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59e1c62884d55b70f3ae5432b44bb3166ad71ae3acd19c57ab6ddc3c87c325ee\",\"dweb:/ipfs/QmezuXg5GK5oeA4F91EZhozBFekhq5TD966bHPH18cCqhu\"]},\"project:/contracts/openzeppelin/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"project:/contracts/openzeppelin/ERC165Checker.sol\":{\"keccak256\":\"0x5a08ad61f4e82b8a3323562661a86fb10b10190848073fdc13d4ac43710ffba5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f7bb74cf88fd88daa34e118bc6e363381d05044f34f391d39a10c0c9dac3ebd\",\"dweb:/ipfs/QmNbQ3v8v4zuDtg7VeLAbdhAm3tCzUodNoDZZ8ekmCHWZX\"]},\"project:/contracts/openzeppelin/ERC721.sol\":{\"keccak256\":\"0x7e0a5e9f459c9fda62f996d9aa96cbe63367b39878db0cd8459a1d35f5e8845d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd331a0c63ed5c3230ceaf8fe10a01ac4182d75755b1c9c5870fbea2075feb41\",\"dweb:/ipfs/QmbwFo2MQfvHPobDNbC3uTMfUqUQz9nDWgibktA3hbygMZ\"]},\"project:/contracts/openzeppelin/ERC721Burnable.sol\":{\"keccak256\":\"0x3804486ef1e03119a5e9bebccfa938108df72feaaf97b708cf76ed85f827cb5f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8435c49f2da56f6d7d94ff4a51699d395cf53da0bbcb63f1a525c290d0682998\",\"dweb:/ipfs/QmQpvbnL5Me1cpHYa16Mcf8rSg3n9KLdgfjB7fqXe673hz\"]},\"project:/contracts/openzeppelin/ERC721Pausable.sol\":{\"keccak256\":\"0x89c63f78385a0b419a189584eb03279c3ec132e4958cd780e63c876a61e36a1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a32a23dd2746735c554484e9d6006835eb7ad71b275a11b7c98deac58206d9f4\",\"dweb:/ipfs/QmUwwcW8J9X8PbpAgodMeSpfjLsD4NGFoT2v4m38pjBmLz\"]},\"project:/contracts/openzeppelin/ERC721URIStorage.sol\":{\"keccak256\":\"0xdebd5e4aacf09867e1309f564e99d679b4e6f5c77f20bf2b9c2cfb1437b4d526\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85756970d00ed5738f66603bb637d1c76e727678373f51b93050f266b2a1983b\",\"dweb:/ipfs/QmbaNPTx7zQL8yfkYQ2UCqqJ14U1APKxEA4X16XKU7qBgS\"]},\"project:/contracts/openzeppelin/EnumerableSet.sol\":{\"keccak256\":\"0x9f4357008a8f7d8c8bf5d48902e789637538d8c016be5766610901b4bba81514\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20bf19b2b851f58a4c24543de80ae70b3e08621f9230eb335dc75e2d4f43f5df\",\"dweb:/ipfs/QmSYuH1AhvJkPK8hNvoPqtExBcgTB42pPRHgTHkS5c5zYW\"]},\"project:/contracts/openzeppelin/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"project:/contracts/openzeppelin/IAccessControlEnumerable.sol\":{\"keccak256\":\"0xba4459ab871dfa300f5212c6c30178b63898c03533a1ede28436f11546626676\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dcc7b09bfa6e18aab262ca372f4a9b1fc82e294b430706a4e1378cf58e6a276\",\"dweb:/ipfs/QmT8oSAcesdctR15HMLhr2a1HRpXymxdjTfdtfTYJcj2N2\"]},\"project:/contracts/openzeppelin/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"project:/contracts/openzeppelin/IERC4906.sol\":{\"keccak256\":\"0x2a9dadb806be80dd451821f1f1190eb9aa6f6edae85b185db29d60767cc0c5f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5c25cac8dbe5bd96320053d23c3dacdb875e629d7c53ac00892eb7aa8500bde6\",\"dweb:/ipfs/Qmaf2oqbxxdJA9DphAoH4UCb8aXEAVM8fnu6qMxHJ5ta4A\"]},\"project:/contracts/openzeppelin/IERC721.sol\":{\"keccak256\":\"0xb9c26cfc4bc38f5296b5582ab1faa6740d29ca2545df64754d0725fd09121ea3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://54cf2b9546c636685d73c0e13dc980fac3bf655149a3ae1785e41c1a2aad9a49\",\"dweb:/ipfs/QmZgum1d3kRH5ZF9TYdpHnfxiUjcgSiQtZp7geHzKsHP2K\"]},\"project:/contracts/openzeppelin/IERC721Metadata.sol\":{\"keccak256\":\"0x867ef5399056dc94c3eb0a403ae2d758b151902a9223dfa50b9fa39cb815c2fb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://56a2ca5b54defdace0c7c17bc238e3c7df9875ac67f8a3483c43243a152722ce\",\"dweb:/ipfs/QmNgmCm69D3vkZn6Bh33qrjNyXeAa4vuBDeCAchWpKLGEg\"]},\"project:/contracts/openzeppelin/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]},\"project:/contracts/openzeppelin/Math.sol\":{\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c\",\"dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS\"]},\"project:/contracts/openzeppelin/Pausable.sol\":{\"keccak256\":\"0xedd9e645af02d14f88ed7974006a39c27ca29475a20088c6c89b60f2e9007df9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0af0fc5c16b687431b0b203343f1910f5647c405c0d8f779cd9a710176f6c1a0\",\"dweb:/ipfs/QmcVjS4kmWobHkZbWXAKGJ9DVD7F2ZRb7uKMfSjt9goJs5\"]},\"project:/contracts/openzeppelin/SignedMath.sol\":{\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7\",\"dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6\"]},\"project:/contracts/openzeppelin/Strings.sol\":{\"keccak256\":\"0x0e86814fd3efc59443d122909fa36b268e2b7364f1e3103fa74931858ee636b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://38f060c0c03021efa043f6f1cca18ffbaa542994865ee889d930498d86b3445b\",\"dweb:/ipfs/QmXFbcG4WEt5bDng7EpouKXjyakkXRjwueM7sNjot1o6Gr\"]}},\"version\":1}", + "bytecode": "0x60806040523480156200001157600080fd5b5060405162002bab38038062002bab833981810160405281019062000037919062000665565b81518351146200007e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200007590620007bb565b60405180910390fd5b836000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060005b83518110156200012d5762000117848281518110620000e557620000e4620007dd565b5b6020026020010151848381518110620001035762000102620007dd565b5b60200260200101516200018a60201b60201c565b8080620001249062000845565b915050620000c1565b5060005b81518110156200017f5762000169828281518110620001555762000154620007dd565b5b60200260200101516200027c60201b60201c565b8080620001769062000845565b91505062000131565b50505050506200092a565b806001600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166200030b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003029062000908565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620003a7826200037a565b9050919050565b620003b9816200039a565b8114620003c557600080fd5b50565b600081519050620003d981620003ae565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200042f82620003e4565b810181811067ffffffffffffffff82111715620004515762000450620003f5565b5b80604052505050565b60006200046662000366565b905062000474828262000424565b919050565b600067ffffffffffffffff821115620004975762000496620003f5565b5b602082029050602081019050919050565b600080fd5b6000819050919050565b620004c281620004ad565b8114620004ce57600080fd5b50565b600081519050620004e281620004b7565b92915050565b6000620004ff620004f98462000479565b6200045a565b90508083825260208201905060208402830185811115620005255762000524620004a8565b5b835b818110156200055257806200053d8882620004d1565b84526020840193505060208101905062000527565b5050509392505050565b600082601f830112620005745762000573620003df565b5b815162000586848260208601620004e8565b91505092915050565b600067ffffffffffffffff821115620005ad57620005ac620003f5565b5b602082029050602081019050919050565b6000620005d5620005cf846200058f565b6200045a565b90508083825260208201905060208402830185811115620005fb57620005fa620004a8565b5b835b81811015620006285780620006138882620003c8565b845260208401935050602081019050620005fd565b5050509392505050565b600082601f8301126200064a5762000649620003df565b5b81516200065c848260208601620005be565b91505092915050565b6000806000806080858703121562000682576200068162000370565b5b60006200069287828801620003c8565b945050602085015167ffffffffffffffff811115620006b657620006b562000375565b5b620006c4878288016200055c565b935050604085015167ffffffffffffffff811115620006e857620006e762000375565b5b620006f68782880162000632565b925050606085015167ffffffffffffffff8111156200071a576200071962000375565b5b620007288782880162000632565b91505092959194509250565b600082825260208201905092915050565b7f696e697469616c5265736f7572636549447320616e6420696e697469616c436f60008201527f6e7472616374416464726573736573206c656e206d69736d6174636800000000602082015250565b6000620007a3603c8362000734565b9150620007b08262000745565b604082019050919050565b60006020820190508181036000830152620007d68162000794565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000819050919050565b600062000852826200083b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036200088757620008866200080c565b5b600182019050919050565b7f70726f766964656420636f6e7472616374206973206e6f742077686974656c6960008201527f7374656400000000000000000000000000000000000000000000000000000000602082015250565b6000620008f060248362000734565b9150620008fd8262000892565b604082019050919050565b600060208201905081810360008301526200092381620008e1565b9050919050565b612271806200093a6000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063735429801161008c578063ba484c0911610066578063ba484c0914610229578063c8ba6c8714610259578063d9caed1214610289578063e248cff2146102a5576100cf565b806373542980146101c15780637f79bea8146101dd578063b8fa37361461020d576100cf565b806307b7ed99146100d45780630a6d55d8146100f0578063318c136e1461012057806338995da91461013e5780634402027f1461015a5780636a70d08114610191575b600080fd5b6100ee60048036038101906100e99190611454565b6102c1565b005b61010a600480360381019061010591906114b7565b6102d5565b60405161011791906114f3565b60405180910390f35b610128610308565b60405161013591906114f3565b60405180910390f35b610158600480360381019061015391906115ec565b61032c565b005b610174600480360381019061016f9190611686565b610713565b60405161018898979695949392919061178d565b60405180910390f35b6101ab60048036038101906101a69190611454565b6108d2565b6040516101b89190611834565b60405180910390f35b6101db60048036038101906101d6919061187b565b6108f2565b005b6101f760048036038101906101f29190611454565b61096c565b6040516102049190611834565b60405180910390f35b610227600480360381019061022291906118ce565b61098c565b005b610243600480360381019061023e919061190e565b6109a2565b6040516102509190611a8b565b60405180910390f35b610273600480360381019061026e9190611454565b610c1a565b6040516102809190611aad565b60405180910390f35b6102a3600480360381019061029e919061187b565b610c32565b005b6102bf60048036038101906102ba9190611ac8565b610c4b565b005b6102c9610de8565b6102d281610e78565b50565b60016020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610334610de8565b60008060608060c435925060e4359350604051915083820160200160405260e4360360e483376000600160008c815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661041e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161041590611bab565b60405180910390fd5b61044e635b5e139f60e01b8273ffffffffffffffffffffffffffffffffffffffff16610f5f90919063ffffffff16565b156104db5760008190508073ffffffffffffffffffffffffffffffffffffffff1663c87b56dd866040518263ffffffff1660e01b81526004016104919190611bcb565b600060405180830381865afa1580156104ae573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906104d79190611d07565b9250505b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561053c576105378185610f84565b610549565b61054881893087610ff9565b5b6040518061010001604052808273ffffffffffffffffffffffffffffffffffffffff1681526020018660ff1681526020018b60ff1681526020018c81526020018481526020018973ffffffffffffffffffffffffffffffffffffffff16815260200185815260200183815250600560008c60ff1660ff16815260200190815260200160002060008b67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548160ff021916908360ff16021790555060408201518160000160156101000a81548160ff021916908360ff16021790555060608201518160010155608082015181600201908161069b9190611f5c565b5060a08201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060c0820151816004015560e08201518160050190816107029190611f5c565b509050505050505050505050505050565b6005602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060000160149054906101000a900460ff16908060000160159054906101000a900460ff169080600101549080600201805461079590611d7f565b80601f01602080910402602001604051908101604052809291908181526020018280546107c190611d7f565b801561080e5780601f106107e35761010080835404028352916020019161080e565b820191906000526020600020905b8154815290600101906020018083116107f157829003601f168201915b5050505050908060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600401549080600501805461084f90611d7f565b80601f016020809104026020016040519081016040528092919081815260200182805461087b90611d7f565b80156108c85780601f1061089d576101008083540402835291602001916108c8565b820191906000526020600020905b8154815290600101906020018083116108ab57829003601f168201915b5050505050905088565b60046020528060005260406000206000915054906101000a900460ff1681565b60008390508073ffffffffffffffffffffffffffffffffffffffff166323b872dd8430856040518463ffffffff1660e01b81526004016109349392919061202e565b600060405180830381600087803b15801561094e57600080fd5b505af1158015610962573d6000803e3d6000fd5b5050505050505050565b60036020528060005260406000206000915054906101000a900460ff1681565b610994610de8565b61099e8282611074565b5050565b6109aa611368565b600560008360ff1660ff16815260200190815260200160002060008467ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020604051806101000160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900460ff1660ff1660ff1681526020016000820160159054906101000a900460ff1660ff1660ff16815260200160018201548152602001600282018054610a9e90611d7f565b80601f0160208091040260200160405190810160405280929190818152602001828054610aca90611d7f565b8015610b175780601f10610aec57610100808354040283529160200191610b17565b820191906000526020600020905b815481529060010190602001808311610afa57829003601f168201915b505050505081526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160048201548152602001600582018054610b9090611d7f565b80601f0160208091040260200160405190810160405280929190818152602001828054610bbc90611d7f565b8015610c095780601f10610bde57610100808354040283529160200191610c09565b820191906000526020600020905b815481529060010190602001808311610bec57829003601f168201915b505050505081525050905092915050565b60026020528060005260406000206000915090505481565b610c3a610de8565b610c4683308484611166565b505050565b610c53610de8565b6000606080606435925060405191506084358060a401358184016040016040528060200160840136036084853760405192508083016040016040528160a40180360381853750505060006020830151905060006001600089815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610d68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5f90611bab565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610dce57610dc9818360601c87866111e1565b610dde565b610ddd81308460601c88611166565b5b5050505050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6d906120b1565b60405180910390fd5b565b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610f04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efb90612143565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000610f6a8361125c565b8015610f7c5750610f7b83836112a9565b5b905092915050565b60008290508073ffffffffffffffffffffffffffffffffffffffff166342966c68836040518263ffffffff1660e01b8152600401610fc29190611bcb565b600060405180830381600087803b158015610fdc57600080fd5b505af1158015610ff0573d6000803e3d6000fd5b50505050505050565b60008490508073ffffffffffffffffffffffffffffffffffffffff166323b872dd8585856040518463ffffffff1660e01b815260040161103b9392919061202e565b600060405180830381600087803b15801561105557600080fd5b505af1158015611069573d6000803e3d6000fd5b505050505050505050565b806001600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008490508073ffffffffffffffffffffffffffffffffffffffff166323b872dd8585856040518463ffffffff1660e01b81526004016111a89392919061202e565b600060405180830381600087803b1580156111c257600080fd5b505af11580156111d6573d6000803e3d6000fd5b505050505050505050565b60008490508073ffffffffffffffffffffffffffffffffffffffff1663d3fc98648585856040518463ffffffff1660e01b8152600401611223939291906121a7565b600060405180830381600087803b15801561123d57600080fd5b505af1158015611251573d6000803e3d6000fd5b505050505050505050565b6000611288827f01ffc9a7000000000000000000000000000000000000000000000000000000006112a9565b80156112a257506112a08263ffffffff60e01b6112a9565b155b9050919050565b6000806301ffc9a760e01b836040516024016112c59190612220565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090506000806000602060008551602087018a617530fa92503d91506000519050828015611350575060208210155b801561135c5750600081115b94505050505092915050565b604051806101000160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600060ff168152602001600060ff1681526020016000801916815260200160608152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001606081525090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611421826113f6565b9050919050565b61143181611416565b811461143c57600080fd5b50565b60008135905061144e81611428565b92915050565b60006020828403121561146a576114696113ec565b5b60006114788482850161143f565b91505092915050565b6000819050919050565b61149481611481565b811461149f57600080fd5b50565b6000813590506114b18161148b565b92915050565b6000602082840312156114cd576114cc6113ec565b5b60006114db848285016114a2565b91505092915050565b6114ed81611416565b82525050565b600060208201905061150860008301846114e4565b92915050565b600060ff82169050919050565b6115248161150e565b811461152f57600080fd5b50565b6000813590506115418161151b565b92915050565b600067ffffffffffffffff82169050919050565b61156481611547565b811461156f57600080fd5b50565b6000813590506115818161155b565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126115ac576115ab611587565b5b8235905067ffffffffffffffff8111156115c9576115c861158c565b5b6020830191508360018202830111156115e5576115e4611591565b5b9250929050565b60008060008060008060a08789031215611609576116086113ec565b5b600061161789828a016114a2565b965050602061162889828a01611532565b955050604061163989828a01611572565b945050606061164a89828a0161143f565b935050608087013567ffffffffffffffff81111561166b5761166a6113f1565b5b61167789828a01611596565b92509250509295509295509295565b6000806040838503121561169d5761169c6113ec565b5b60006116ab85828601611532565b92505060206116bc85828601611572565b9150509250929050565b6116cf8161150e565b82525050565b6116de81611481565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561171e578082015181840152602081019050611703565b60008484015250505050565b6000601f19601f8301169050919050565b6000611746826116e4565b61175081856116ef565b9350611760818560208601611700565b6117698161172a565b840191505092915050565b6000819050919050565b61178781611774565b82525050565b6000610100820190506117a3600083018b6114e4565b6117b0602083018a6116c6565b6117bd60408301896116c6565b6117ca60608301886116d5565b81810360808301526117dc818761173b565b90506117eb60a08301866114e4565b6117f860c083018561177e565b81810360e083015261180a818461173b565b90509998505050505050505050565b60008115159050919050565b61182e81611819565b82525050565b60006020820190506118496000830184611825565b92915050565b61185881611774565b811461186357600080fd5b50565b6000813590506118758161184f565b92915050565b600080600060608486031215611894576118936113ec565b5b60006118a28682870161143f565b93505060206118b38682870161143f565b92505060406118c486828701611866565b9150509250925092565b600080604083850312156118e5576118e46113ec565b5b60006118f3858286016114a2565b92505060206119048582860161143f565b9150509250929050565b60008060408385031215611925576119246113ec565b5b600061193385828601611572565b925050602061194485828601611532565b9150509250929050565b61195781611416565b82525050565b6119668161150e565b82525050565b61197581611481565b82525050565b600082825260208201905092915050565b6000611997826116e4565b6119a1818561197b565b93506119b1818560208601611700565b6119ba8161172a565b840191505092915050565b6119ce81611774565b82525050565b6000610100830160008301516119ed600086018261194e565b506020830151611a00602086018261195d565b506040830151611a13604086018261195d565b506060830151611a26606086018261196c565b5060808301518482036080860152611a3e828261198c565b91505060a0830151611a5360a086018261194e565b5060c0830151611a6660c08601826119c5565b5060e083015184820360e0860152611a7e828261198c565b9150508091505092915050565b60006020820190508181036000830152611aa581846119d4565b905092915050565b6000602082019050611ac260008301846116d5565b92915050565b600080600060408486031215611ae157611ae06113ec565b5b6000611aef868287016114a2565b935050602084013567ffffffffffffffff811115611b1057611b0f6113f1565b5b611b1c86828701611596565b92509250509250925092565b600082825260208201905092915050565b7f70726f766964656420746f6b656e41646472657373206973206e6f742077686960008201527f74656c6973746564000000000000000000000000000000000000000000000000602082015250565b6000611b95602883611b28565b9150611ba082611b39565b604082019050919050565b60006020820190508181036000830152611bc481611b88565b9050919050565b6000602082019050611be0600083018461177e565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611c238261172a565b810181811067ffffffffffffffff82111715611c4257611c41611beb565b5b80604052505050565b6000611c556113e2565b9050611c618282611c1a565b919050565b600067ffffffffffffffff821115611c8157611c80611beb565b5b611c8a8261172a565b9050602081019050919050565b6000611caa611ca584611c66565b611c4b565b905082815260208101848484011115611cc657611cc5611be6565b5b611cd1848285611700565b509392505050565b600082601f830112611cee57611ced611587565b5b8151611cfe848260208601611c97565b91505092915050565b600060208284031215611d1d57611d1c6113ec565b5b600082015167ffffffffffffffff811115611d3b57611d3a6113f1565b5b611d4784828501611cd9565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611d9757607f821691505b602082108103611daa57611da9611d50565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302611e127fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611dd5565b611e1c8683611dd5565b95508019841693508086168417925050509392505050565b6000819050919050565b6000611e59611e54611e4f84611774565b611e34565b611774565b9050919050565b6000819050919050565b611e7383611e3e565b611e87611e7f82611e60565b848454611de2565b825550505050565b600090565b611e9c611e8f565b611ea7818484611e6a565b505050565b5b81811015611ecb57611ec0600082611e94565b600181019050611ead565b5050565b601f821115611f1057611ee181611db0565b611eea84611dc5565b81016020851015611ef9578190505b611f0d611f0585611dc5565b830182611eac565b50505b505050565b600082821c905092915050565b6000611f3360001984600802611f15565b1980831691505092915050565b6000611f4c8383611f22565b9150826002028217905092915050565b611f65826116e4565b67ffffffffffffffff811115611f7e57611f7d611beb565b5b611f888254611d7f565b611f93828285611ecf565b600060209050601f831160018114611fc65760008415611fb4578287015190505b611fbe8582611f40565b865550612026565b601f198416611fd486611db0565b60005b82811015611ffc57848901518255600182019150602085019450602081019050611fd7565b868310156120195784890151612015601f891682611f22565b8355505b6001600288020188555050505b505050505050565b600060608201905061204360008301866114e4565b61205060208301856114e4565b61205d604083018461177e565b949350505050565b7f73656e646572206d7573742062652062726964676520636f6e74726163740000600082015250565b600061209b601e83611b28565b91506120a682612065565b602082019050919050565b600060208201905081810360008301526120ca8161208e565b9050919050565b7f70726f766964656420636f6e7472616374206973206e6f742077686974656c6960008201527f7374656400000000000000000000000000000000000000000000000000000000602082015250565b600061212d602483611b28565b9150612138826120d1565b604082019050919050565b6000602082019050818103600083015261215c81612120565b9050919050565b600081519050919050565b600061217982612163565b6121838185611b28565b9350612193818560208601611700565b61219c8161172a565b840191505092915050565b60006060820190506121bc60008301866114e4565b6121c9602083018561177e565b81810360408301526121db818461216e565b9050949350505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61221a816121e5565b82525050565b60006020820190506122356000830184612211565b9291505056fea26469706673582212209059d0933470bbe2f5ea754528425a0ff3d80b0360692cc511548a3f4c7398ed64736f6c63430008130033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063735429801161008c578063ba484c0911610066578063ba484c0914610229578063c8ba6c8714610259578063d9caed1214610289578063e248cff2146102a5576100cf565b806373542980146101c15780637f79bea8146101dd578063b8fa37361461020d576100cf565b806307b7ed99146100d45780630a6d55d8146100f0578063318c136e1461012057806338995da91461013e5780634402027f1461015a5780636a70d08114610191575b600080fd5b6100ee60048036038101906100e99190611454565b6102c1565b005b61010a600480360381019061010591906114b7565b6102d5565b60405161011791906114f3565b60405180910390f35b610128610308565b60405161013591906114f3565b60405180910390f35b610158600480360381019061015391906115ec565b61032c565b005b610174600480360381019061016f9190611686565b610713565b60405161018898979695949392919061178d565b60405180910390f35b6101ab60048036038101906101a69190611454565b6108d2565b6040516101b89190611834565b60405180910390f35b6101db60048036038101906101d6919061187b565b6108f2565b005b6101f760048036038101906101f29190611454565b61096c565b6040516102049190611834565b60405180910390f35b610227600480360381019061022291906118ce565b61098c565b005b610243600480360381019061023e919061190e565b6109a2565b6040516102509190611a8b565b60405180910390f35b610273600480360381019061026e9190611454565b610c1a565b6040516102809190611aad565b60405180910390f35b6102a3600480360381019061029e919061187b565b610c32565b005b6102bf60048036038101906102ba9190611ac8565b610c4b565b005b6102c9610de8565b6102d281610e78565b50565b60016020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610334610de8565b60008060608060c435925060e4359350604051915083820160200160405260e4360360e483376000600160008c815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661041e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161041590611bab565b60405180910390fd5b61044e635b5e139f60e01b8273ffffffffffffffffffffffffffffffffffffffff16610f5f90919063ffffffff16565b156104db5760008190508073ffffffffffffffffffffffffffffffffffffffff1663c87b56dd866040518263ffffffff1660e01b81526004016104919190611bcb565b600060405180830381865afa1580156104ae573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906104d79190611d07565b9250505b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561053c576105378185610f84565b610549565b61054881893087610ff9565b5b6040518061010001604052808273ffffffffffffffffffffffffffffffffffffffff1681526020018660ff1681526020018b60ff1681526020018c81526020018481526020018973ffffffffffffffffffffffffffffffffffffffff16815260200185815260200183815250600560008c60ff1660ff16815260200190815260200160002060008b67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548160ff021916908360ff16021790555060408201518160000160156101000a81548160ff021916908360ff16021790555060608201518160010155608082015181600201908161069b9190611f5c565b5060a08201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060c0820151816004015560e08201518160050190816107029190611f5c565b509050505050505050505050505050565b6005602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060000160149054906101000a900460ff16908060000160159054906101000a900460ff169080600101549080600201805461079590611d7f565b80601f01602080910402602001604051908101604052809291908181526020018280546107c190611d7f565b801561080e5780601f106107e35761010080835404028352916020019161080e565b820191906000526020600020905b8154815290600101906020018083116107f157829003601f168201915b5050505050908060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600401549080600501805461084f90611d7f565b80601f016020809104026020016040519081016040528092919081815260200182805461087b90611d7f565b80156108c85780601f1061089d576101008083540402835291602001916108c8565b820191906000526020600020905b8154815290600101906020018083116108ab57829003601f168201915b5050505050905088565b60046020528060005260406000206000915054906101000a900460ff1681565b60008390508073ffffffffffffffffffffffffffffffffffffffff166323b872dd8430856040518463ffffffff1660e01b81526004016109349392919061202e565b600060405180830381600087803b15801561094e57600080fd5b505af1158015610962573d6000803e3d6000fd5b5050505050505050565b60036020528060005260406000206000915054906101000a900460ff1681565b610994610de8565b61099e8282611074565b5050565b6109aa611368565b600560008360ff1660ff16815260200190815260200160002060008467ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020604051806101000160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900460ff1660ff1660ff1681526020016000820160159054906101000a900460ff1660ff1660ff16815260200160018201548152602001600282018054610a9e90611d7f565b80601f0160208091040260200160405190810160405280929190818152602001828054610aca90611d7f565b8015610b175780601f10610aec57610100808354040283529160200191610b17565b820191906000526020600020905b815481529060010190602001808311610afa57829003601f168201915b505050505081526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160048201548152602001600582018054610b9090611d7f565b80601f0160208091040260200160405190810160405280929190818152602001828054610bbc90611d7f565b8015610c095780601f10610bde57610100808354040283529160200191610c09565b820191906000526020600020905b815481529060010190602001808311610bec57829003601f168201915b505050505081525050905092915050565b60026020528060005260406000206000915090505481565b610c3a610de8565b610c4683308484611166565b505050565b610c53610de8565b6000606080606435925060405191506084358060a401358184016040016040528060200160840136036084853760405192508083016040016040528160a40180360381853750505060006020830151905060006001600089815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610d68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5f90611bab565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610dce57610dc9818360601c87866111e1565b610dde565b610ddd81308460601c88611166565b5b5050505050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6d906120b1565b60405180910390fd5b565b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610f04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efb90612143565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000610f6a8361125c565b8015610f7c5750610f7b83836112a9565b5b905092915050565b60008290508073ffffffffffffffffffffffffffffffffffffffff166342966c68836040518263ffffffff1660e01b8152600401610fc29190611bcb565b600060405180830381600087803b158015610fdc57600080fd5b505af1158015610ff0573d6000803e3d6000fd5b50505050505050565b60008490508073ffffffffffffffffffffffffffffffffffffffff166323b872dd8585856040518463ffffffff1660e01b815260040161103b9392919061202e565b600060405180830381600087803b15801561105557600080fd5b505af1158015611069573d6000803e3d6000fd5b505050505050505050565b806001600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008490508073ffffffffffffffffffffffffffffffffffffffff166323b872dd8585856040518463ffffffff1660e01b81526004016111a89392919061202e565b600060405180830381600087803b1580156111c257600080fd5b505af11580156111d6573d6000803e3d6000fd5b505050505050505050565b60008490508073ffffffffffffffffffffffffffffffffffffffff1663d3fc98648585856040518463ffffffff1660e01b8152600401611223939291906121a7565b600060405180830381600087803b15801561123d57600080fd5b505af1158015611251573d6000803e3d6000fd5b505050505050505050565b6000611288827f01ffc9a7000000000000000000000000000000000000000000000000000000006112a9565b80156112a257506112a08263ffffffff60e01b6112a9565b155b9050919050565b6000806301ffc9a760e01b836040516024016112c59190612220565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090506000806000602060008551602087018a617530fa92503d91506000519050828015611350575060208210155b801561135c5750600081115b94505050505092915050565b604051806101000160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600060ff168152602001600060ff1681526020016000801916815260200160608152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001606081525090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611421826113f6565b9050919050565b61143181611416565b811461143c57600080fd5b50565b60008135905061144e81611428565b92915050565b60006020828403121561146a576114696113ec565b5b60006114788482850161143f565b91505092915050565b6000819050919050565b61149481611481565b811461149f57600080fd5b50565b6000813590506114b18161148b565b92915050565b6000602082840312156114cd576114cc6113ec565b5b60006114db848285016114a2565b91505092915050565b6114ed81611416565b82525050565b600060208201905061150860008301846114e4565b92915050565b600060ff82169050919050565b6115248161150e565b811461152f57600080fd5b50565b6000813590506115418161151b565b92915050565b600067ffffffffffffffff82169050919050565b61156481611547565b811461156f57600080fd5b50565b6000813590506115818161155b565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126115ac576115ab611587565b5b8235905067ffffffffffffffff8111156115c9576115c861158c565b5b6020830191508360018202830111156115e5576115e4611591565b5b9250929050565b60008060008060008060a08789031215611609576116086113ec565b5b600061161789828a016114a2565b965050602061162889828a01611532565b955050604061163989828a01611572565b945050606061164a89828a0161143f565b935050608087013567ffffffffffffffff81111561166b5761166a6113f1565b5b61167789828a01611596565b92509250509295509295509295565b6000806040838503121561169d5761169c6113ec565b5b60006116ab85828601611532565b92505060206116bc85828601611572565b9150509250929050565b6116cf8161150e565b82525050565b6116de81611481565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561171e578082015181840152602081019050611703565b60008484015250505050565b6000601f19601f8301169050919050565b6000611746826116e4565b61175081856116ef565b9350611760818560208601611700565b6117698161172a565b840191505092915050565b6000819050919050565b61178781611774565b82525050565b6000610100820190506117a3600083018b6114e4565b6117b0602083018a6116c6565b6117bd60408301896116c6565b6117ca60608301886116d5565b81810360808301526117dc818761173b565b90506117eb60a08301866114e4565b6117f860c083018561177e565b81810360e083015261180a818461173b565b90509998505050505050505050565b60008115159050919050565b61182e81611819565b82525050565b60006020820190506118496000830184611825565b92915050565b61185881611774565b811461186357600080fd5b50565b6000813590506118758161184f565b92915050565b600080600060608486031215611894576118936113ec565b5b60006118a28682870161143f565b93505060206118b38682870161143f565b92505060406118c486828701611866565b9150509250925092565b600080604083850312156118e5576118e46113ec565b5b60006118f3858286016114a2565b92505060206119048582860161143f565b9150509250929050565b60008060408385031215611925576119246113ec565b5b600061193385828601611572565b925050602061194485828601611532565b9150509250929050565b61195781611416565b82525050565b6119668161150e565b82525050565b61197581611481565b82525050565b600082825260208201905092915050565b6000611997826116e4565b6119a1818561197b565b93506119b1818560208601611700565b6119ba8161172a565b840191505092915050565b6119ce81611774565b82525050565b6000610100830160008301516119ed600086018261194e565b506020830151611a00602086018261195d565b506040830151611a13604086018261195d565b506060830151611a26606086018261196c565b5060808301518482036080860152611a3e828261198c565b91505060a0830151611a5360a086018261194e565b5060c0830151611a6660c08601826119c5565b5060e083015184820360e0860152611a7e828261198c565b9150508091505092915050565b60006020820190508181036000830152611aa581846119d4565b905092915050565b6000602082019050611ac260008301846116d5565b92915050565b600080600060408486031215611ae157611ae06113ec565b5b6000611aef868287016114a2565b935050602084013567ffffffffffffffff811115611b1057611b0f6113f1565b5b611b1c86828701611596565b92509250509250925092565b600082825260208201905092915050565b7f70726f766964656420746f6b656e41646472657373206973206e6f742077686960008201527f74656c6973746564000000000000000000000000000000000000000000000000602082015250565b6000611b95602883611b28565b9150611ba082611b39565b604082019050919050565b60006020820190508181036000830152611bc481611b88565b9050919050565b6000602082019050611be0600083018461177e565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611c238261172a565b810181811067ffffffffffffffff82111715611c4257611c41611beb565b5b80604052505050565b6000611c556113e2565b9050611c618282611c1a565b919050565b600067ffffffffffffffff821115611c8157611c80611beb565b5b611c8a8261172a565b9050602081019050919050565b6000611caa611ca584611c66565b611c4b565b905082815260208101848484011115611cc657611cc5611be6565b5b611cd1848285611700565b509392505050565b600082601f830112611cee57611ced611587565b5b8151611cfe848260208601611c97565b91505092915050565b600060208284031215611d1d57611d1c6113ec565b5b600082015167ffffffffffffffff811115611d3b57611d3a6113f1565b5b611d4784828501611cd9565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611d9757607f821691505b602082108103611daa57611da9611d50565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302611e127fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611dd5565b611e1c8683611dd5565b95508019841693508086168417925050509392505050565b6000819050919050565b6000611e59611e54611e4f84611774565b611e34565b611774565b9050919050565b6000819050919050565b611e7383611e3e565b611e87611e7f82611e60565b848454611de2565b825550505050565b600090565b611e9c611e8f565b611ea7818484611e6a565b505050565b5b81811015611ecb57611ec0600082611e94565b600181019050611ead565b5050565b601f821115611f1057611ee181611db0565b611eea84611dc5565b81016020851015611ef9578190505b611f0d611f0585611dc5565b830182611eac565b50505b505050565b600082821c905092915050565b6000611f3360001984600802611f15565b1980831691505092915050565b6000611f4c8383611f22565b9150826002028217905092915050565b611f65826116e4565b67ffffffffffffffff811115611f7e57611f7d611beb565b5b611f888254611d7f565b611f93828285611ecf565b600060209050601f831160018114611fc65760008415611fb4578287015190505b611fbe8582611f40565b865550612026565b601f198416611fd486611db0565b60005b82811015611ffc57848901518255600182019150602085019450602081019050611fd7565b868310156120195784890151612015601f891682611f22565b8355505b6001600288020188555050505b505050505050565b600060608201905061204360008301866114e4565b61205060208301856114e4565b61205d604083018461177e565b949350505050565b7f73656e646572206d7573742062652062726964676520636f6e74726163740000600082015250565b600061209b601e83611b28565b91506120a682612065565b602082019050919050565b600060208201905081810360008301526120ca8161208e565b9050919050565b7f70726f766964656420636f6e7472616374206973206e6f742077686974656c6960008201527f7374656400000000000000000000000000000000000000000000000000000000602082015250565b600061212d602483611b28565b9150612138826120d1565b604082019050919050565b6000602082019050818103600083015261215c81612120565b9050919050565b600081519050919050565b600061217982612163565b6121838185611b28565b9350612193818560208601611700565b61219c8161172a565b840191505092915050565b60006060820190506121bc60008301866114e4565b6121c9602083018561177e565b81810360408301526121db818461216e565b9050949350505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61221a816121e5565b82525050565b60006020820190506122356000830184612211565b9291505056fea26469706673582212209059d0933470bbe2f5ea754528425a0ff3d80b0360692cc511548a3f4c7398ed64736f6c63430008130033", + "immutableReferences": {}, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:9504:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "47:35:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "57:19:66", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "73:2:66", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "67:5:66" }, + "nodeType": "YulFunctionCall", + "src": "67:9:66" + }, + "variableNames": [ { - "arguments": null, - "baseName": { - "contractScope": null, - "id": 7282, - "name": "HandlerHelpers", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 8209, - "src": "554:14:35", - "typeDescriptions": { - "typeIdentifier": "t_contract$_HandlerHelpers_$8209", - "typeString": "contract HandlerHelpers" - } - }, - "id": 7283, - "nodeType": "InheritanceSpecifier", - "src": "554:14:35" + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "57:6:66" + } + ] + } + ] + }, + "name": "allocate_unbounded", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "40:6:66", + "type": "" + } + ], + "src": "7:75:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "177:28:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "194:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "197:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "187:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "187:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "187:12:66" + } + ] + }, + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulFunctionDefinition", + "src": "88:117:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "300:28:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "317:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "320:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "310:6:66" }, + "nodeType": "YulFunctionCall", + "src": "310:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "310:12:66" + } + ] + }, + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulFunctionDefinition", + "src": "211:117:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "379:81:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "389:65:66", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "404:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "411:42:66", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "400:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "400:54:66" + }, + "variableNames": [ { - "arguments": null, - "baseName": { - "contractScope": null, - "id": 7284, - "name": "ERC721Safe", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 6234, - "src": "570:10:35", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC721Safe_$6234", - "typeString": "contract ERC721Safe" - } - }, - "id": 7285, - "nodeType": "InheritanceSpecifier", - "src": "570:10:35" - } - ], - "contractDependencies": [6234, 8209, 8245, 8283], - "contractKind": "contract", - "documentation": { - "id": 7279, - "nodeType": "StructuredDocumentation", - "src": "338:172:35", - "text": "@title Handles ERC721 deposits and deposit executions.\n@author ChainSafe Systems.\n@notice This contract is intended to be used with the Bridge contract." - }, - "fullyImplemented": true, - "id": 7607, - "linearizedBaseContracts": [7607, 6234, 8209, 8283, 8245], - "name": "ERC721Handler", - "nodeType": "ContractDefinition", - "nodes": [ - { - "id": 7288, - "libraryName": { - "contractScope": null, - "id": 7286, - "name": "ERC165Checker", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 570, - "src": "593:13:35", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC165Checker_$570", - "typeString": "library ERC165Checker" + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "389:7:66" + } + ] + } + ] + }, + "name": "cleanup_t_uint160", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "361:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "371:7:66", + "type": "" + } + ], + "src": "334:126:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "511:51:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "521:35:66", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "550:5:66" + } + ], + "functionName": { + "name": "cleanup_t_uint160", + "nodeType": "YulIdentifier", + "src": "532:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "532:24:66" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "521:7:66" + } + ] + } + ] + }, + "name": "cleanup_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "493:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "503:7:66", + "type": "" + } + ], + "src": "466:96:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "611:79:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "668:16:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "677:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "680:1:66", + "type": "", + "value": "0" } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "670:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "670:12:66" }, - "nodeType": "UsingForDirective", - "src": "587:32:35", - "typeName": { - "id": 7287, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "611:7:35", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } + "nodeType": "YulExpressionStatement", + "src": "670:12:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "634:5:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "659:5:66" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "641:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "641:24:66" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "631:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "631:35:66" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "624:6:66" }, + "nodeType": "YulFunctionCall", + "src": "624:43:66" + }, + "nodeType": "YulIf", + "src": "621:63:66" + } + ] + }, + "name": "validator_revert_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "604:5:66", + "type": "" + } + ], + "src": "568:122:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "759:80:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "769:22:66", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "784:6:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "778:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "778:13:66" + }, + "variableNames": [ { - "constant": true, - "id": 7291, - "mutability": "constant", - "name": "_INTERFACE_ERC721_METADATA", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7607, - "src": "625:63:35", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" + "name": "value", + "nodeType": "YulIdentifier", + "src": "769:5:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "827:5:66" + } + ], + "functionName": { + "name": "validator_revert_t_address", + "nodeType": "YulIdentifier", + "src": "800:26:66" + }, + "nodeType": "YulFunctionCall", + "src": "800:33:66" + }, + "nodeType": "YulExpressionStatement", + "src": "800:33:66" + } + ] + }, + "name": "abi_decode_t_address_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "737:6:66", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "745:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "753:5:66", + "type": "" + } + ], + "src": "696:143:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "934:28:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "951:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "954:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "944:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "944:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "944:12:66" + } + ] + }, + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulFunctionDefinition", + "src": "845:117:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1016:54:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1026:38:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1044:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1051:2:66", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1040:3:66" }, - "typeName": { - "id": 7289, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "625:6:35", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } + "nodeType": "YulFunctionCall", + "src": "1040:14:66" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1060:2:66", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "1056:3:66" }, - "value": { - "argumentTypes": null, - "hexValue": "30783562356531333966", - "id": 7290, - "isConstant": false, - "isLValue": false, - "isPure": true, + "nodeType": "YulFunctionCall", + "src": "1056:7:66" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "1036:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "1036:28:66" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "1026:6:66" + } + ] + } + ] + }, + "name": "round_up_to_mul_of_32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "999:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "result", + "nodeType": "YulTypedName", + "src": "1009:6:66", + "type": "" + } + ], + "src": "968:102:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1104:152:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1121:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1124:77:66", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1114:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "1114:88:66" + }, + "nodeType": "YulExpressionStatement", + "src": "1114:88:66" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1218:1:66", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1221:4:66", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1211:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "1211:15:66" + }, + "nodeType": "YulExpressionStatement", + "src": "1211:15:66" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1242:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1245:4:66", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1235:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "1235:15:66" + }, + "nodeType": "YulExpressionStatement", + "src": "1235:15:66" + } + ] + }, + "name": "panic_error_0x41", + "nodeType": "YulFunctionDefinition", + "src": "1076:180:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1305:238:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "1315:58:66", + "value": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1337:6:66" + }, + { + "arguments": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "1367:4:66" + } + ], + "functionName": { + "name": "round_up_to_mul_of_32", + "nodeType": "YulIdentifier", + "src": "1345:21:66" + }, + "nodeType": "YulFunctionCall", + "src": "1345:27:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1333:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "1333:40:66" + }, + "variables": [ + { + "name": "newFreePtr", + "nodeType": "YulTypedName", + "src": "1319:10:66", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1484:22:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "1486:16:66" + }, + "nodeType": "YulFunctionCall", + "src": "1486:18:66" + }, + "nodeType": "YulExpressionStatement", + "src": "1486:18:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "1427:10:66" + }, + { "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "678:10:35", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1532892063_by_1", - "typeString": "int_const 1532892063" - }, - "value": "0x5b5e139f" + "nodeType": "YulLiteral", + "src": "1439:18:66", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1424:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "1424:34:66" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "1463:10:66" + }, + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1475:6:66" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "1460:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "1460:22:66" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "1421:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "1421:62:66" + }, + "nodeType": "YulIf", + "src": "1418:88:66" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1522:2:66", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "1526:10:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1515:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "1515:22:66" + }, + "nodeType": "YulExpressionStatement", + "src": "1515:22:66" + } + ] + }, + "name": "finalize_allocation", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "1291:6:66", + "type": "" + }, + { + "name": "size", + "nodeType": "YulTypedName", + "src": "1299:4:66", + "type": "" + } + ], + "src": "1262:281:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1590:88:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1600:30:66", + "value": { + "arguments": [], + "functionName": { + "name": "allocate_unbounded", + "nodeType": "YulIdentifier", + "src": "1610:18:66" + }, + "nodeType": "YulFunctionCall", + "src": "1610:20:66" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1600:6:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1659:6:66" + }, + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "1667:4:66" + } + ], + "functionName": { + "name": "finalize_allocation", + "nodeType": "YulIdentifier", + "src": "1639:19:66" + }, + "nodeType": "YulFunctionCall", + "src": "1639:33:66" + }, + "nodeType": "YulExpressionStatement", + "src": "1639:33:66" + } + ] + }, + "name": "allocate_memory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "size", + "nodeType": "YulTypedName", + "src": "1574:4:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "1583:6:66", + "type": "" + } + ], + "src": "1549:129:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1766:229:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1871:22:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "1873:16:66" + }, + "nodeType": "YulFunctionCall", + "src": "1873:18:66" }, - "visibility": "private" + "nodeType": "YulExpressionStatement", + "src": "1873:18:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1843:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1851:18:66", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1840:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "1840:30:66" + }, + "nodeType": "YulIf", + "src": "1837:56:66" + }, + { + "nodeType": "YulAssignment", + "src": "1903:25:66", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1915:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1923:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "1911:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "1911:17:66" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "1903:4:66" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1965:23:66", + "value": { + "arguments": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "1977:4:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1983:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1973:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "1973:15:66" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "1965:4:66" + } + ] + } + ] + }, + "name": "array_allocation_size_t_array$_t_bytes32_$dyn_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "1750:6:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "size", + "nodeType": "YulTypedName", + "src": "1761:4:66", + "type": "" + } + ], + "src": "1684:311:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2090:28:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2107:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2110:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2100:6:66" }, + "nodeType": "YulFunctionCall", + "src": "2100:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "2100:12:66" + } + ] + }, + "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", + "nodeType": "YulFunctionDefinition", + "src": "2001:117:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2169:32:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2179:16:66", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2190:5:66" + }, + "variableNames": [ { - "canonicalName": "ERC721Handler.DepositRecord", - "id": 7308, - "members": [ + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "2179:7:66" + } + ] + } + ] + }, + "name": "cleanup_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2151:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "2161:7:66", + "type": "" + } + ], + "src": "2124:77:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2250:79:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2307:16:66", + "statements": [ + { + "expression": { + "arguments": [ { - "constant": false, - "id": 7293, - "mutability": "mutable", - "name": "_tokenAddress", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7308, - "src": "726:21:35", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 7292, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "726:7:35", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" + "kind": "number", + "nodeType": "YulLiteral", + "src": "2316:1:66", + "type": "", + "value": "0" }, { - "constant": false, - "id": 7295, - "mutability": "mutable", - "name": "_lenDestinationRecipientAddress", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7308, - "src": "757:40:35", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 7294, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "757:5:35", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" + "kind": "number", + "nodeType": "YulLiteral", + "src": "2319:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2309:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "2309:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "2309:12:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2273:5:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2298:5:66" + } + ], + "functionName": { + "name": "cleanup_t_bytes32", + "nodeType": "YulIdentifier", + "src": "2280:17:66" }, + "nodeType": "YulFunctionCall", + "src": "2280:24:66" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "2270:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "2270:35:66" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "2263:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "2263:43:66" + }, + "nodeType": "YulIf", + "src": "2260:63:66" + } + ] + }, + "name": "validator_revert_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2243:5:66", + "type": "" + } + ], + "src": "2207:122:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2398:80:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2408:22:66", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2423:6:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "2417:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "2417:13:66" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2408:5:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2466:5:66" + } + ], + "functionName": { + "name": "validator_revert_t_bytes32", + "nodeType": "YulIdentifier", + "src": "2439:26:66" + }, + "nodeType": "YulFunctionCall", + "src": "2439:33:66" + }, + "nodeType": "YulExpressionStatement", + "src": "2439:33:66" + } + ] + }, + "name": "abi_decode_t_bytes32_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "2376:6:66", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "2384:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2392:5:66", + "type": "" + } + ], + "src": "2335:143:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2614:619:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2624:90:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2706:6:66" + } + ], + "functionName": { + "name": "array_allocation_size_t_array$_t_bytes32_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "2649:56:66" + }, + "nodeType": "YulFunctionCall", + "src": "2649:64:66" + } + ], + "functionName": { + "name": "allocate_memory", + "nodeType": "YulIdentifier", + "src": "2633:15:66" + }, + "nodeType": "YulFunctionCall", + "src": "2633:81:66" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "2624:5:66" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2723:16:66", + "value": { + "name": "array", + "nodeType": "YulIdentifier", + "src": "2734:5:66" + }, + "variables": [ + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "2727:3:66", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "2756:5:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2763:6:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2749:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "2749:21:66" + }, + "nodeType": "YulExpressionStatement", + "src": "2749:21:66" + }, + { + "nodeType": "YulAssignment", + "src": "2779:23:66", + "value": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "2790:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2797:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2786:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "2786:16:66" + }, + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "2779:3:66" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2812:44:66", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2830:6:66" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2842:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2850:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "2838:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "2838:17:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2826:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "2826:30:66" + }, + "variables": [ + { + "name": "srcEnd", + "nodeType": "YulTypedName", + "src": "2816:6:66", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2884:103:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", + "nodeType": "YulIdentifier", + "src": "2898:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "2898:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "2898:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "2871:6:66" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "2879:3:66" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "2868:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "2868:15:66" + }, + "nodeType": "YulIf", + "src": "2865:122:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3072:155:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "3087:21:66", + "value": { + "name": "src", + "nodeType": "YulIdentifier", + "src": "3105:3:66" + }, + "variables": [ + { + "name": "elementPos", + "nodeType": "YulTypedName", + "src": "3091:10:66", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ { - "constant": false, - "id": 7297, - "mutability": "mutable", - "name": "_destinationChainID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7308, - "src": "807:27:35", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 7296, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "807:5:35", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3129:3:66" }, { - "constant": false, - "id": 7299, - "mutability": "mutable", - "name": "_resourceID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7308, - "src": "844:19:35", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 7298, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "844:7:35", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } + "arguments": [ + { + "name": "elementPos", + "nodeType": "YulIdentifier", + "src": "3166:10:66" }, - "value": null, - "visibility": "internal" - }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "3178:3:66" + } + ], + "functionName": { + "name": "abi_decode_t_bytes32_fromMemory", + "nodeType": "YulIdentifier", + "src": "3134:31:66" + }, + "nodeType": "YulFunctionCall", + "src": "3134:48:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3122:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "3122:61:66" + }, + "nodeType": "YulExpressionStatement", + "src": "3122:61:66" + }, + { + "nodeType": "YulAssignment", + "src": "3196:21:66", + "value": { + "arguments": [ { - "constant": false, - "id": 7301, - "mutability": "mutable", - "name": "_destinationRecipientAddress", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7308, - "src": "873:36:35", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 7300, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "873:5:35", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3207:3:66" }, { - "constant": false, - "id": 7303, - "mutability": "mutable", - "name": "_depositer", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7308, - "src": "919:18:35", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 7302, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "919:7:35", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, + "kind": "number", + "nodeType": "YulLiteral", + "src": "3212:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3203:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "3203:14:66" + }, + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3196:3:66" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "3025:3:66" + }, + { + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "3030:6:66" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "3022:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "3022:15:66" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "3038:25:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3040:21:66", + "value": { + "arguments": [ { - "constant": false, - "id": 7305, - "mutability": "mutable", - "name": "_tokenID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7308, - "src": "947:16:35", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 7304, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "947:4:35", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" + "name": "src", + "nodeType": "YulIdentifier", + "src": "3051:3:66" }, { - "constant": false, - "id": 7307, - "mutability": "mutable", - "name": "_metaData", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7308, - "src": "973:17:35", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 7306, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "973:5:35", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" + "kind": "number", + "nodeType": "YulLiteral", + "src": "3056:4:66", + "type": "", + "value": "0x20" } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3047:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "3047:14:66" + }, + "variableNames": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "3040:3:66" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "3000:21:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "3002:17:66", + "value": { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3013:6:66" + }, + "variables": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "3006:3:66", + "type": "" + } + ] + } + ] + }, + "src": "2996:231:66" + } + ] + }, + "name": "abi_decode_available_length_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "2584:6:66", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "2592:6:66", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "2600:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "2608:5:66", + "type": "" + } + ], + "src": "2501:732:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3344:297:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3393:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulIdentifier", + "src": "3395:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "3395:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "3395:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3372:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3380:4:66", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3368:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "3368:17:66" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "3387:3:66" + } ], - "name": "DepositRecord", - "nodeType": "StructDefinition", - "scope": 7607, - "src": "695:302:35", - "visibility": "public" + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "3364:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "3364:27:66" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3357:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "3357:35:66" + }, + "nodeType": "YulIf", + "src": "3354:122:66" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3485:27:66", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3505:6:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "3499:5:66" }, + "nodeType": "YulFunctionCall", + "src": "3499:13:66" + }, + "variables": [ { - "constant": false, - "functionSelector": "4402027f", - "id": 7314, - "mutability": "mutable", - "name": "_depositRecords", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7607, - "src": "1041:75:35", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint8_$_t_mapping$_t_uint64_$_t_struct$_DepositRecord_$7308_storage_$_$", - "typeString": "mapping(uint8 => mapping(uint64 => struct ERC721Handler.DepositRecord))" - }, - "typeName": { - "id": 7313, - "keyType": { - "id": 7309, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1050:5:35", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Mapping", - "src": "1041:52:35", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint8_$_t_mapping$_t_uint64_$_t_struct$_DepositRecord_$7308_storage_$_$", - "typeString": "mapping(uint8 => mapping(uint64 => struct ERC721Handler.DepositRecord))" - }, - "valueType": { - "id": 7312, - "keyType": { - "id": 7310, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "1068:6:35", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "nodeType": "Mapping", - "src": "1059:33:35", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_DepositRecord_$7308_storage_$", - "typeString": "mapping(uint64 => struct ERC721Handler.DepositRecord)" - }, - "valueType": { - "contractScope": null, - "id": 7311, - "name": "DepositRecord", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 7308, - "src": "1078:13:35", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DepositRecord_$7308_storage_ptr", - "typeString": "struct ERC721Handler.DepositRecord" - } - } - } + "name": "length", + "nodeType": "YulTypedName", + "src": "3489:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3521:114:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3608:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3616:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3604:3:66" }, - "value": null, - "visibility": "public" + "nodeType": "YulFunctionCall", + "src": "3604:17:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "3623:6:66" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "3631:3:66" + } + ], + "functionName": { + "name": "abi_decode_available_length_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory", + "nodeType": "YulIdentifier", + "src": "3530:73:66" }, + "nodeType": "YulFunctionCall", + "src": "3530:105:66" + }, + "variableNames": [ { - "body": { - "id": 7383, - "nodeType": "Block", - "src": "2267:498:35", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7334, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 7330, - "name": "initialResourceIDs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7320, - "src": "2285:18:35", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - }, - "id": 7331, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2285:25:35", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 7332, - "name": "initialContractAddresses", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7323, - "src": "2314:24:35", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 7333, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2314:31:35", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2285:60:35", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "696e697469616c5265736f7572636549447320616e6420696e697469616c436f6e7472616374416464726573736573206c656e206d69736d61746368", - "id": 7335, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2359:62:35", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_4ad26bc3c99f2850e5fe1de98475000419054e7d49a87288c0e5940e995dd510", - "typeString": "literal_string \"initialResourceIDs and initialContractAddresses len mismatch\"" - }, - "value": "initialResourceIDs and initialContractAddresses len mismatch" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_4ad26bc3c99f2850e5fe1de98475000419054e7d49a87288c0e5940e995dd510", - "typeString": "literal_string \"initialResourceIDs and initialContractAddresses len mismatch\"" - } - ], - "id": 7329, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "2277:7:35", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 7336, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2277:145:35", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 7337, - "nodeType": "ExpressionStatement", - "src": "2277:145:35" - }, - { - "expression": { - "argumentTypes": null, - "id": 7340, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 7338, - "name": "_bridgeAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8035, - "src": "2433:14:35", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 7339, - "name": "bridgeAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7317, - "src": "2450:13:35", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "2433:30:35", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 7341, - "nodeType": "ExpressionStatement", - "src": "2433:30:35" - }, - { - "body": { - "id": 7362, - "nodeType": "Block", - "src": "2530:89:35", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 7354, - "name": "initialResourceIDs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7320, - "src": "2557:18:35", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - }, - "id": 7356, - "indexExpression": { - "argumentTypes": null, - "id": 7355, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7343, - "src": "2576:1:35", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2557:21:35", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 7357, - "name": "initialContractAddresses", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7323, - "src": "2580:24:35", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 7359, - "indexExpression": { - "argumentTypes": null, - "id": 7358, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7343, - "src": "2605:1:35", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2580:27:35", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 7353, - "name": "_setResource", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8163, - "src": "2544:12:35", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", - "typeString": "function (bytes32,address)" - } - }, - "id": 7360, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2544:64:35", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 7361, - "nodeType": "ExpressionStatement", - "src": "2544:64:35" - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7349, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 7346, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7343, - "src": "2494:1:35", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 7347, - "name": "initialResourceIDs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7320, - "src": "2498:18:35", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - }, - "id": 7348, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2498:25:35", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2494:29:35", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 7363, - "initializationExpression": { - "assignments": [7343], - "declarations": [ - { - "constant": false, - "id": 7343, - "mutability": "mutable", - "name": "i", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7363, - "src": "2479:9:35", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 7342, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2479:7:35", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 7345, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 7344, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2491:1:35", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "2479:13:35" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 7351, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "2525:3:35", - "subExpression": { - "argumentTypes": null, - "id": 7350, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7343, - "src": "2525:1:35", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7352, - "nodeType": "ExpressionStatement", - "src": "2525:3:35" - }, - "nodeType": "ForStatement", - "src": "2474:145:35" - }, - { - "body": { - "id": 7381, - "nodeType": "Block", - "src": "2692:67:35", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 7376, - "name": "burnableContractAddresses", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7326, - "src": "2719:25:35", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 7378, - "indexExpression": { - "argumentTypes": null, - "id": 7377, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7365, - "src": "2745:1:35", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2719:28:35", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 7375, - "name": "_setBurnable", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8182, - "src": "2706:12:35", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", - "typeString": "function (address)" - } - }, - "id": 7379, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2706:42:35", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 7380, - "nodeType": "ExpressionStatement", - "src": "2706:42:35" - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7371, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 7368, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7365, - "src": "2649:1:35", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 7369, - "name": "burnableContractAddresses", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7326, - "src": "2653:25:35", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 7370, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2653:32:35", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2649:36:35", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 7382, - "initializationExpression": { - "assignments": [7365], - "declarations": [ - { - "constant": false, - "id": 7365, - "mutability": "mutable", - "name": "i", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7382, - "src": "2634:9:35", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 7364, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2634:7:35", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 7367, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 7366, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2646:1:35", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "2634:13:35" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 7373, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "2687:3:35", - "subExpression": { - "argumentTypes": null, - "id": 7372, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7365, - "src": "2687:1:35", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7374, - "nodeType": "ExpressionStatement", - "src": "2687:3:35" - }, - "nodeType": "ForStatement", - "src": "2629:130:35" - } - ] + "name": "array", + "nodeType": "YulIdentifier", + "src": "3521:5:66" + } + ] + } + ] + }, + "name": "abi_decode_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "3322:6:66", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "3330:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "3338:5:66", + "type": "" + } + ], + "src": "3256:385:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3729:229:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3834:22:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "3836:16:66" + }, + "nodeType": "YulFunctionCall", + "src": "3836:18:66" }, - "documentation": { - "id": 7315, - "nodeType": "StructuredDocumentation", - "src": "1123:935:35", - "text": "@param bridgeAddress Contract address of previously deployed Bridge.\n@param initialResourceIDs Resource IDs are used to identify a specific contract address.\nThese are the Resource IDs this contract will initially support.\n@param initialContractAddresses These are the addresses the {initialResourceIDs} will point to, and are the contracts that will be\ncalled to perform various deposit calls.\n@param burnableContractAddresses These addresses will be set as burnable and when {deposit} is called, the deposited token will be burned.\nWhen {executeProposal} is called, new tokens will be minted.\n@dev {initialResourceIDs} and {initialContractAddresses} must have the same length (one resourceID for every address).\nAlso, these arrays must be ordered in the way that {initialResourceIDs}[0] is the intended resourceID for {initialContractAddresses}[0]." - }, - "id": 7384, - "implemented": true, - "kind": "constructor", - "modifiers": [], - "name": "", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 7327, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 7317, - "mutability": "mutable", - "name": "bridgeAddress", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7384, - "src": "2084:21:35", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 7316, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2084:7:35", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 7320, - "mutability": "mutable", - "name": "initialResourceIDs", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7384, - "src": "2115:35:35", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[]" - }, - "typeName": { - "baseType": { - "id": 7318, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2115:7:35", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 7319, - "length": null, - "nodeType": "ArrayTypeName", - "src": "2115:9:35", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[]" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 7323, - "mutability": "mutable", - "name": "initialContractAddresses", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7384, - "src": "2160:41:35", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[]" - }, - "typeName": { - "baseType": { - "id": 7321, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2160:7:35", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 7322, - "length": null, - "nodeType": "ArrayTypeName", - "src": "2160:9:35", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 7326, - "mutability": "mutable", - "name": "burnableContractAddresses", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7384, - "src": "2211:42:35", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[]" - }, - "typeName": { - "baseType": { - "id": 7324, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2211:7:35", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 7325, - "length": null, - "nodeType": "ArrayTypeName", - "src": "2211:9:35", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2074:185:35" + "nodeType": "YulExpressionStatement", + "src": "3836:18:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "3806:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3814:18:66", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "3803:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "3803:30:66" + }, + "nodeType": "YulIf", + "src": "3800:56:66" + }, + { + "nodeType": "YulAssignment", + "src": "3866:25:66", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "3878:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3886:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "3874:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "3874:17:66" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "3866:4:66" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3928:23:66", + "value": { + "arguments": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "3940:4:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3946:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3936:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "3936:15:66" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "3928:4:66" + } + ] + } + ] + }, + "name": "array_allocation_size_t_array$_t_address_$dyn_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "3713:6:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "size", + "nodeType": "YulTypedName", + "src": "3724:4:66", + "type": "" + } + ], + "src": "3647:311:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4094:619:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4104:90:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "4186:6:66" + } + ], + "functionName": { + "name": "array_allocation_size_t_array$_t_address_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "4129:56:66" }, - "returnParameters": { - "id": 7328, - "nodeType": "ParameterList", - "parameters": [], - "src": "2267:0:35" + "nodeType": "YulFunctionCall", + "src": "4129:64:66" + } + ], + "functionName": { + "name": "allocate_memory", + "nodeType": "YulIdentifier", + "src": "4113:15:66" + }, + "nodeType": "YulFunctionCall", + "src": "4113:81:66" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "4104:5:66" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "4203:16:66", + "value": { + "name": "array", + "nodeType": "YulIdentifier", + "src": "4214:5:66" + }, + "variables": [ + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "4207:3:66", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "4236:5:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "4243:6:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4229:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "4229:21:66" + }, + "nodeType": "YulExpressionStatement", + "src": "4229:21:66" + }, + { + "nodeType": "YulAssignment", + "src": "4259:23:66", + "value": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "4270:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4277:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4266:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "4266:16:66" + }, + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "4259:3:66" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "4292:44:66", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4310:6:66" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "4322:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4330:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "4318:3:66" }, - "scope": 7607, - "src": "2063:702:35", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" + "nodeType": "YulFunctionCall", + "src": "4318:17:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4306:3:66" }, + "nodeType": "YulFunctionCall", + "src": "4306:30:66" + }, + "variables": [ { - "body": { - "id": 7400, - "nodeType": "Block", - "src": "3687:61:35", - "statements": [ - { - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 7394, - "name": "_depositRecords", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7314, - "src": "3704:15:35", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint8_$_t_mapping$_t_uint64_$_t_struct$_DepositRecord_$7308_storage_$_$", - "typeString": "mapping(uint8 => mapping(uint64 => struct ERC721Handler.DepositRecord storage ref))" - } - }, - "id": 7396, - "indexExpression": { - "argumentTypes": null, - "id": 7395, - "name": "destId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7389, - "src": "3720:6:35", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3704:23:35", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_DepositRecord_$7308_storage_$", - "typeString": "mapping(uint64 => struct ERC721Handler.DepositRecord storage ref)" - } - }, - "id": 7398, - "indexExpression": { - "argumentTypes": null, - "id": 7397, - "name": "depositNonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7387, - "src": "3728:12:35", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3704:37:35", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DepositRecord_$7308_storage", - "typeString": "struct ERC721Handler.DepositRecord storage ref" - } - }, - "functionReturnParameters": 7393, - "id": 7399, - "nodeType": "Return", - "src": "3697:44:35" - } - ] + "name": "srcEnd", + "nodeType": "YulTypedName", + "src": "4296:6:66", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4364:103:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", + "nodeType": "YulIdentifier", + "src": "4378:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "4378:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "4378:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "4351:6:66" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "4359:3:66" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "4348:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "4348:15:66" + }, + "nodeType": "YulIf", + "src": "4345:122:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4552:155:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "4567:21:66", + "value": { + "name": "src", + "nodeType": "YulIdentifier", + "src": "4585:3:66" }, - "documentation": { - "id": 7385, - "nodeType": "StructuredDocumentation", - "src": "2771:805:35", - "text": "@param depositNonce This ID will have been generated by the Bridge contract.\n@param destId ID of chain deposit will be bridged to.\n@return DepositRecord which consists of:\n- _tokenAddress Address used when {deposit} was executed.\n- _destinationChainID ChainID deposited tokens are intended to end up on.\n- _resourceID ResourceID used when {deposit} was executed.\n- _lenDestinationRecipientAddress Used to parse recipient's address from {_destinationRecipientAddress}\n- _destinationRecipientAddress Address tokens are intended to be deposited to on desitnation chain.\n- _depositer Address that initially called {deposit} in the Bridge contract.\n- _tokenID ID of ERC721.\n- _metaData Optional ERC721 metadata." - }, - "functionSelector": "ba484c09", - "id": 7401, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getDepositRecord", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 7390, - "nodeType": "ParameterList", - "parameters": [ + "variables": [ + { + "name": "elementPos", + "nodeType": "YulTypedName", + "src": "4571:10:66", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "4609:3:66" + }, + { + "arguments": [ { - "constant": false, - "id": 7387, - "mutability": "mutable", - "name": "depositNonce", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7401, - "src": "3607:19:35", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 7386, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "3607:6:35", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "value": null, - "visibility": "internal" + "name": "elementPos", + "nodeType": "YulIdentifier", + "src": "4646:10:66" }, { - "constant": false, - "id": 7389, - "mutability": "mutable", - "name": "destId", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7401, - "src": "3628:12:35", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 7388, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "3628:5:35", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" + "name": "end", + "nodeType": "YulIdentifier", + "src": "4658:3:66" } - ], - "src": "3606:35:35" + ], + "functionName": { + "name": "abi_decode_t_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "4614:31:66" + }, + "nodeType": "YulFunctionCall", + "src": "4614:48:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4602:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "4602:61:66" }, - "returnParameters": { - "id": 7393, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 7392, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7401, - "src": "3665:20:35", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DepositRecord_$7308_memory_ptr", - "typeString": "struct ERC721Handler.DepositRecord" - }, - "typeName": { - "contractScope": null, - "id": 7391, - "name": "DepositRecord", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 7308, - "src": "3665:13:35", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DepositRecord_$7308_storage_ptr", - "typeString": "struct ERC721Handler.DepositRecord" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3664:22:35" + "nodeType": "YulExpressionStatement", + "src": "4602:61:66" + }, + { + "nodeType": "YulAssignment", + "src": "4676:21:66", + "value": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "4687:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4692:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4683:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "4683:14:66" }, - "scope": 7607, - "src": "3581:167:35", - "stateMutability": "view", - "virtual": false, - "visibility": "external" + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "4676:3:66" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "4505:3:66" + }, + { + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "4510:6:66" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "4502:2:66" }, - { - "baseFunctions": [8236], - "body": { - "id": 7510, - "nodeType": "Block", - "src": "5308:2178:35", - "statements": [ - { - "assignments": [7419], - "declarations": [ - { - "constant": false, - "id": 7419, - "mutability": "mutable", - "name": "lenDestinationRecipientAddress", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7510, - "src": "5318:43:35", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 7418, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "5318:4:35", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 7420, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "5318:43:35" - }, - { - "assignments": [7422], - "declarations": [ - { - "constant": false, - "id": 7422, - "mutability": "mutable", - "name": "tokenID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7510, - "src": "5371:20:35", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 7421, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "5371:4:35", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 7423, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "5371:20:35" + "nodeType": "YulFunctionCall", + "src": "4502:15:66" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "4518:25:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4520:21:66", + "value": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "4531:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4536:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4527:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "4527:14:66" + }, + "variableNames": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "4520:3:66" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "4480:21:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "4482:17:66", + "value": { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4493:6:66" + }, + "variables": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "4486:3:66", + "type": "" + } + ] + } + ] + }, + "src": "4476:231:66" + } + ] + }, + "name": "abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "4064:6:66", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "4072:6:66", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "4080:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "4088:5:66", + "type": "" + } + ], + "src": "3981:732:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4824:297:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "4873:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulIdentifier", + "src": "4875:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "4875:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "4875:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4852:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4860:4:66", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4848:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "4848:17:66" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "4867:3:66" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "4844:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "4844:27:66" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "4837:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "4837:35:66" + }, + "nodeType": "YulIf", + "src": "4834:122:66" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "4965:27:66", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4985:6:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "4979:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "4979:13:66" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "4969:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5001:114:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5088:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5096:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5084:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "5084:17:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "5103:6:66" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "5111:3:66" + } + ], + "functionName": { + "name": "abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr_fromMemory", + "nodeType": "YulIdentifier", + "src": "5010:73:66" + }, + "nodeType": "YulFunctionCall", + "src": "5010:105:66" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "5001:5:66" + } + ] + } + ] + }, + "name": "abi_decode_t_array$_t_address_$dyn_memory_ptr_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "4802:6:66", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "4810:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "4818:5:66", + "type": "" + } + ], + "src": "4736:385:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5330:1226:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "5377:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "5379:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "5379:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "5379:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "5351:7:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5360:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "5347:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "5347:23:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5372:3:66", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "5343:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "5343:33:66" + }, + "nodeType": "YulIf", + "src": "5340:120:66" + }, + { + "nodeType": "YulBlock", + "src": "5470:128:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "5485:15:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5499:1:66", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "5489:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5514:74:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5560:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5571:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5556:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "5556:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "5580:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "5524:31:66" + }, + "nodeType": "YulFunctionCall", + "src": "5524:64:66" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "5514:6:66" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "5608:307:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "5623:39:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5647:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5658:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5643:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "5643:18:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "5637:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "5637:25:66" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "5627:6:66", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5709:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "5711:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "5711:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "5711:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5681:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5689:18:66", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "5678:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "5678:30:66" + }, + "nodeType": "YulIf", + "src": "5675:117:66" + }, + { + "nodeType": "YulAssignment", + "src": "5806:99:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5877:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5888:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5873:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "5873:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "5897:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory", + "nodeType": "YulIdentifier", + "src": "5816:56:66" + }, + "nodeType": "YulFunctionCall", + "src": "5816:89:66" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "5806:6:66" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "5925:307:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "5940:39:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5964:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5975:2:66", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5960:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "5960:18:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "5954:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "5954:25:66" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "5944:6:66", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6026:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "6028:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "6028:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "6028:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5998:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6006:18:66", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "5995:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "5995:30:66" + }, + "nodeType": "YulIf", + "src": "5992:117:66" + }, + { + "nodeType": "YulAssignment", + "src": "6123:99:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6194:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6205:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6190:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "6190:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "6214:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_array$_t_address_$dyn_memory_ptr_fromMemory", + "nodeType": "YulIdentifier", + "src": "6133:56:66" + }, + "nodeType": "YulFunctionCall", + "src": "6133:89:66" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "6123:6:66" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "6242:307:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "6257:39:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6281:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6292:2:66", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6277:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "6277:18:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "6271:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "6271:25:66" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "6261:6:66", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6343:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "6345:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "6345:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "6345:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6315:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6323:18:66", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "6312:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "6312:30:66" + }, + "nodeType": "YulIf", + "src": "6309:117:66" + }, + { + "nodeType": "YulAssignment", + "src": "6440:99:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6511:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6522:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6507:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "6507:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "6531:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_array$_t_address_$dyn_memory_ptr_fromMemory", + "nodeType": "YulIdentifier", + "src": "6450:56:66" + }, + "nodeType": "YulFunctionCall", + "src": "6450:89:66" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "6440:6:66" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_array$_t_bytes32_$dyn_memory_ptrt_array$_t_address_$dyn_memory_ptrt_array$_t_address_$dyn_memory_ptr_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "5276:9:66", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "5287:7:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "5299:6:66", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "5307:6:66", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "5315:6:66", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "5323:6:66", + "type": "" + } + ], + "src": "5127:1429:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6658:73:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "6675:3:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "6680:6:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6668:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "6668:19:66" + }, + "nodeType": "YulExpressionStatement", + "src": "6668:19:66" + }, + { + "nodeType": "YulAssignment", + "src": "6696:29:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "6715:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6720:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6711:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "6711:14:66" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "6696:11:66" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "6630:3:66", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "6635:6:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "6646:11:66", + "type": "" + } + ], + "src": "6562:169:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6843:141:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "6865:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6873:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6861:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "6861:14:66" + }, + { + "hexValue": "696e697469616c5265736f7572636549447320616e6420696e697469616c436f", + "kind": "string", + "nodeType": "YulLiteral", + "src": "6877:34:66", + "type": "", + "value": "initialResourceIDs and initialCo" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6854:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "6854:58:66" + }, + "nodeType": "YulExpressionStatement", + "src": "6854:58:66" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "6933:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6941:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6929:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "6929:15:66" + }, + { + "hexValue": "6e7472616374416464726573736573206c656e206d69736d61746368", + "kind": "string", + "nodeType": "YulLiteral", + "src": "6946:30:66", + "type": "", + "value": "ntractAddresses len mismatch" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6922:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "6922:55:66" + }, + "nodeType": "YulExpressionStatement", + "src": "6922:55:66" + } + ] + }, + "name": "store_literal_in_memory_4ad26bc3c99f2850e5fe1de98475000419054e7d49a87288c0e5940e995dd510", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "6835:6:66", + "type": "" + } + ], + "src": "6737:247:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7136:220:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7146:74:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "7212:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7217:2:66", + "type": "", + "value": "60" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "7153:58:66" + }, + "nodeType": "YulFunctionCall", + "src": "7153:67:66" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "7146:3:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "7318:3:66" + } + ], + "functionName": { + "name": "store_literal_in_memory_4ad26bc3c99f2850e5fe1de98475000419054e7d49a87288c0e5940e995dd510", + "nodeType": "YulIdentifier", + "src": "7229:88:66" + }, + "nodeType": "YulFunctionCall", + "src": "7229:93:66" + }, + "nodeType": "YulExpressionStatement", + "src": "7229:93:66" + }, + { + "nodeType": "YulAssignment", + "src": "7331:19:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "7342:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7347:2:66", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7338:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "7338:12:66" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "7331:3:66" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_4ad26bc3c99f2850e5fe1de98475000419054e7d49a87288c0e5940e995dd510_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "7124:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "7132:3:66", + "type": "" + } + ], + "src": "6990:366:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7533:248:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7543:26:66", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7555:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7566:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7551:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "7551:18:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7543:4:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7590:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7601:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7586:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "7586:17:66" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7609:4:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7615:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "7605:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "7605:20:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7579:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "7579:47:66" + }, + "nodeType": "YulExpressionStatement", + "src": "7579:47:66" + }, + { + "nodeType": "YulAssignment", + "src": "7635:139:66", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7769:4:66" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_4ad26bc3c99f2850e5fe1de98475000419054e7d49a87288c0e5940e995dd510_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "7643:124:66" + }, + "nodeType": "YulFunctionCall", + "src": "7643:131:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7635:4:66" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_4ad26bc3c99f2850e5fe1de98475000419054e7d49a87288c0e5940e995dd510__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "7513:9:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "7528:4:66", + "type": "" + } + ], + "src": "7362:419:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7815:152:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7832:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7835:77:66", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7825:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "7825:88:66" + }, + "nodeType": "YulExpressionStatement", + "src": "7825:88:66" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7929:1:66", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7932:4:66", + "type": "", + "value": "0x32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7922:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "7922:15:66" + }, + "nodeType": "YulExpressionStatement", + "src": "7922:15:66" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7953:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7956:4:66", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "7946:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "7946:15:66" + }, + "nodeType": "YulExpressionStatement", + "src": "7946:15:66" + } + ] + }, + "name": "panic_error_0x32", + "nodeType": "YulFunctionDefinition", + "src": "7787:180:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8001:152:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8018:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8021:77:66", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8011:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "8011:88:66" + }, + "nodeType": "YulExpressionStatement", + "src": "8011:88:66" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8115:1:66", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8118:4:66", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8108:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "8108:15:66" + }, + "nodeType": "YulExpressionStatement", + "src": "8108:15:66" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8139:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8142:4:66", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "8132:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "8132:15:66" + }, + "nodeType": "YulExpressionStatement", + "src": "8132:15:66" + } + ] + }, + "name": "panic_error_0x11", + "nodeType": "YulFunctionDefinition", + "src": "7973:180:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8204:32:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8214:16:66", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8225:5:66" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "8214:7:66" + } + ] + } + ] + }, + "name": "cleanup_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "8186:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "8196:7:66", + "type": "" + } + ], + "src": "8159:77:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8285:190:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8295:33:66", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8322:5:66" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "8304:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "8304:24:66" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8295:5:66" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8418:22:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "8420:16:66" + }, + "nodeType": "YulFunctionCall", + "src": "8420:18:66" + }, + "nodeType": "YulExpressionStatement", + "src": "8420:18:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8343:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8350:66:66", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "8340:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "8340:77:66" + }, + "nodeType": "YulIf", + "src": "8337:103:66" + }, + { + "nodeType": "YulAssignment", + "src": "8449:20:66", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8460:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8467:1:66", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8456:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "8456:13:66" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "8449:3:66" + } + ] + } + ] + }, + "name": "increment_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "8271:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nodeType": "YulTypedName", + "src": "8281:3:66", + "type": "" + } + ], + "src": "8242:233:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8587:117:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "8609:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8617:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8605:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "8605:14:66" + }, + { + "hexValue": "70726f766964656420636f6e7472616374206973206e6f742077686974656c69", + "kind": "string", + "nodeType": "YulLiteral", + "src": "8621:34:66", + "type": "", + "value": "provided contract is not whiteli" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8598:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "8598:58:66" + }, + "nodeType": "YulExpressionStatement", + "src": "8598:58:66" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "8677:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8685:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8673:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "8673:15:66" + }, + { + "hexValue": "73746564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "8690:6:66", + "type": "", + "value": "sted" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8666:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "8666:31:66" + }, + "nodeType": "YulExpressionStatement", + "src": "8666:31:66" + } + ] + }, + "name": "store_literal_in_memory_2daab49254b4a5228983fbc316d7992ab0064c3e34fa43dd7fbf9d5c4fe8b0da", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "8579:6:66", + "type": "" + } + ], + "src": "8481:223:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8856:220:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8866:74:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "8932:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8937:2:66", + "type": "", + "value": "36" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "8873:58:66" + }, + "nodeType": "YulFunctionCall", + "src": "8873:67:66" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "8866:3:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "9038:3:66" + } + ], + "functionName": { + "name": "store_literal_in_memory_2daab49254b4a5228983fbc316d7992ab0064c3e34fa43dd7fbf9d5c4fe8b0da", + "nodeType": "YulIdentifier", + "src": "8949:88:66" + }, + "nodeType": "YulFunctionCall", + "src": "8949:93:66" + }, + "nodeType": "YulExpressionStatement", + "src": "8949:93:66" + }, + { + "nodeType": "YulAssignment", + "src": "9051:19:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "9062:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9067:2:66", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9058:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "9058:12:66" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "9051:3:66" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_2daab49254b4a5228983fbc316d7992ab0064c3e34fa43dd7fbf9d5c4fe8b0da_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "8844:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "8852:3:66", + "type": "" + } + ], + "src": "8710:366:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9253:248:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "9263:26:66", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9275:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9286:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9271:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "9271:18:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "9263:4:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9310:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9321:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9306:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "9306:17:66" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "9329:4:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9335:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "9325:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "9325:20:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9299:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "9299:47:66" + }, + "nodeType": "YulExpressionStatement", + "src": "9299:47:66" + }, + { + "nodeType": "YulAssignment", + "src": "9355:139:66", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "9489:4:66" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_2daab49254b4a5228983fbc316d7992ab0064c3e34fa43dd7fbf9d5c4fe8b0da_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "9363:124:66" + }, + "nodeType": "YulFunctionCall", + "src": "9363:131:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "9355:4:66" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_2daab49254b4a5228983fbc316d7992ab0064c3e34fa43dd7fbf9d5c4fe8b0da__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "9233:9:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "9248:4:66", + "type": "" + } + ], + "src": "9082:419:66" + } + ] + }, + "contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_address(value)\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_array$_t_bytes32_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n revert(0, 0)\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_bytes32(value) {\n if iszero(eq(value, cleanup_t_bytes32(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes32_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_bytes32(value)\n }\n\n // bytes32[]\n function abi_decode_available_length_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_bytes32_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x20))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x20) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_bytes32_fromMemory(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // bytes32[]\n function abi_decode_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := mload(offset)\n array := abi_decode_available_length_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory(add(offset, 0x20), length, end)\n }\n\n function array_allocation_size_t_array$_t_address_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n // address[]\n function abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr_fromMemory(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_address_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x20))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x20) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_address_fromMemory(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // address[]\n function abi_decode_t_array$_t_address_$dyn_memory_ptr_fromMemory(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := mload(offset)\n array := abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr_fromMemory(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_addresst_array$_t_bytes32_$dyn_memory_ptrt_array$_t_address_$dyn_memory_ptrt_array$_t_address_$dyn_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3 {\n if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := mload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value1 := abi_decode_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := mload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value2 := abi_decode_t_array$_t_address_$dyn_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := mload(add(headStart, 96))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value3 := abi_decode_t_array$_t_address_$dyn_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function store_literal_in_memory_4ad26bc3c99f2850e5fe1de98475000419054e7d49a87288c0e5940e995dd510(memPtr) {\n\n mstore(add(memPtr, 0), \"initialResourceIDs and initialCo\")\n\n mstore(add(memPtr, 32), \"ntractAddresses len mismatch\")\n\n }\n\n function abi_encode_t_stringliteral_4ad26bc3c99f2850e5fe1de98475000419054e7d49a87288c0e5940e995dd510_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 60)\n store_literal_in_memory_4ad26bc3c99f2850e5fe1de98475000419054e7d49a87288c0e5940e995dd510(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_4ad26bc3c99f2850e5fe1de98475000419054e7d49a87288c0e5940e995dd510__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_4ad26bc3c99f2850e5fe1de98475000419054e7d49a87288c0e5940e995dd510_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n\n function store_literal_in_memory_2daab49254b4a5228983fbc316d7992ab0064c3e34fa43dd7fbf9d5c4fe8b0da(memPtr) {\n\n mstore(add(memPtr, 0), \"provided contract is not whiteli\")\n\n mstore(add(memPtr, 32), \"sted\")\n\n }\n\n function abi_encode_t_stringliteral_2daab49254b4a5228983fbc316d7992ab0064c3e34fa43dd7fbf9d5c4fe8b0da_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 36)\n store_literal_in_memory_2daab49254b4a5228983fbc316d7992ab0064c3e34fa43dd7fbf9d5c4fe8b0da(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_2daab49254b4a5228983fbc316d7992ab0064c3e34fa43dd7fbf9d5c4fe8b0da__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_2daab49254b4a5228983fbc316d7992ab0064c3e34fa43dd7fbf9d5c4fe8b0da_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n}\n", + "id": 66, + "language": "Yul", + "name": "#utility.yul" + } + ], + "deployedGeneratedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:27218:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "47:35:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "57:19:66", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "73:2:66", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "67:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "67:9:66" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "57:6:66" + } + ] + } + ] + }, + "name": "allocate_unbounded", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "40:6:66", + "type": "" + } + ], + "src": "7:75:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "177:28:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "194:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "197:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "187:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "187:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "187:12:66" + } + ] + }, + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulFunctionDefinition", + "src": "88:117:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "300:28:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "317:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "320:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "310:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "310:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "310:12:66" + } + ] + }, + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulFunctionDefinition", + "src": "211:117:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "379:81:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "389:65:66", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "404:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "411:42:66", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "400:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "400:54:66" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "389:7:66" + } + ] + } + ] + }, + "name": "cleanup_t_uint160", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "361:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "371:7:66", + "type": "" + } + ], + "src": "334:126:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "511:51:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "521:35:66", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "550:5:66" + } + ], + "functionName": { + "name": "cleanup_t_uint160", + "nodeType": "YulIdentifier", + "src": "532:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "532:24:66" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "521:7:66" + } + ] + } + ] + }, + "name": "cleanup_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "493:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "503:7:66", + "type": "" + } + ], + "src": "466:96:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "611:79:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "668:16:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "677:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "680:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "670:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "670:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "670:12:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "634:5:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "659:5:66" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "641:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "641:24:66" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "631:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "631:35:66" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "624:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "624:43:66" + }, + "nodeType": "YulIf", + "src": "621:63:66" + } + ] + }, + "name": "validator_revert_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "604:5:66", + "type": "" + } + ], + "src": "568:122:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "748:87:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "758:29:66", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "780:6:66" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "767:12:66" + }, + "nodeType": "YulFunctionCall", + "src": "767:20:66" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "758:5:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "823:5:66" + } + ], + "functionName": { + "name": "validator_revert_t_address", + "nodeType": "YulIdentifier", + "src": "796:26:66" + }, + "nodeType": "YulFunctionCall", + "src": "796:33:66" + }, + "nodeType": "YulExpressionStatement", + "src": "796:33:66" + } + ] + }, + "name": "abi_decode_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "726:6:66", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "734:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "742:5:66", + "type": "" + } + ], + "src": "696:139:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "907:263:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "953:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "955:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "955:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "955:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "928:7:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "937:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "924:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "924:23:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "949:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "920:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "920:32:66" + }, + "nodeType": "YulIf", + "src": "917:119:66" + }, + { + "nodeType": "YulBlock", + "src": "1046:117:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "1061:15:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1075:1:66", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1065:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1090:63:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1125:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1136:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1121:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "1121:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1145:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "1100:20:66" + }, + "nodeType": "YulFunctionCall", + "src": "1100:53:66" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1090:6:66" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "877:9:66", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "888:7:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "900:6:66", + "type": "" + } + ], + "src": "841:329:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1221:32:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1231:16:66", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1242:5:66" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "1231:7:66" + } + ] + } + ] + }, + "name": "cleanup_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1203:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "1213:7:66", + "type": "" + } + ], + "src": "1176:77:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1302:79:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1359:16:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1368:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1371:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1361:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "1361:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "1361:12:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1325:5:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1350:5:66" + } + ], + "functionName": { + "name": "cleanup_t_bytes32", + "nodeType": "YulIdentifier", + "src": "1332:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "1332:24:66" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "1322:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "1322:35:66" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1315:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "1315:43:66" + }, + "nodeType": "YulIf", + "src": "1312:63:66" + } + ] + }, + "name": "validator_revert_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1295:5:66", + "type": "" + } + ], + "src": "1259:122:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1439:87:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1449:29:66", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1471:6:66" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1458:12:66" + }, + "nodeType": "YulFunctionCall", + "src": "1458:20:66" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1449:5:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1514:5:66" + } + ], + "functionName": { + "name": "validator_revert_t_bytes32", + "nodeType": "YulIdentifier", + "src": "1487:26:66" + }, + "nodeType": "YulFunctionCall", + "src": "1487:33:66" + }, + "nodeType": "YulExpressionStatement", + "src": "1487:33:66" + } + ] + }, + "name": "abi_decode_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1417:6:66", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "1425:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1433:5:66", + "type": "" + } + ], + "src": "1387:139:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1598:263:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1644:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "1646:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "1646:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "1646:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1619:7:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1628:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1615:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "1615:23:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1640:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1611:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "1611:32:66" + }, + "nodeType": "YulIf", + "src": "1608:119:66" + }, + { + "nodeType": "YulBlock", + "src": "1737:117:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "1752:15:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1766:1:66", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1756:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1781:63:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1816:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1827:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1812:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "1812:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1836:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_bytes32", + "nodeType": "YulIdentifier", + "src": "1791:20:66" + }, + "nodeType": "YulFunctionCall", + "src": "1791:53:66" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1781:6:66" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1568:9:66", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1579:7:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1591:6:66", + "type": "" + } + ], + "src": "1532:329:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1932:53:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "1949:3:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1972:5:66" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "1954:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "1954:24:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1942:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "1942:37:66" + }, + "nodeType": "YulExpressionStatement", + "src": "1942:37:66" + } + ] + }, + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1920:5:66", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "1927:3:66", + "type": "" + } + ], + "src": "1867:118:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2089:124:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2099:26:66", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2111:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2122:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2107:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "2107:18:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "2099:4:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2179:6:66" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2192:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2203:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2188:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "2188:17:66" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "2135:43:66" + }, + "nodeType": "YulFunctionCall", + "src": "2135:71:66" + }, + "nodeType": "YulExpressionStatement", + "src": "2135:71:66" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2061:9:66", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2073:6:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "2084:4:66", + "type": "" + } + ], + "src": "1991:222:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2262:43:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2272:27:66", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2287:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2294:4:66", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "2283:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "2283:16:66" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "2272:7:66" + } + ] + } + ] + }, + "name": "cleanup_t_uint8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2244:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "2254:7:66", + "type": "" + } + ], + "src": "2219:86:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2352:77:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2407:16:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2416:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2419:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2409:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "2409:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "2409:12:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2375:5:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2398:5:66" + } + ], + "functionName": { + "name": "cleanup_t_uint8", + "nodeType": "YulIdentifier", + "src": "2382:15:66" + }, + "nodeType": "YulFunctionCall", + "src": "2382:22:66" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "2372:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "2372:33:66" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "2365:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "2365:41:66" + }, + "nodeType": "YulIf", + "src": "2362:61:66" + } + ] + }, + "name": "validator_revert_t_uint8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2345:5:66", + "type": "" + } + ], + "src": "2311:118:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2485:85:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2495:29:66", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2517:6:66" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "2504:12:66" + }, + "nodeType": "YulFunctionCall", + "src": "2504:20:66" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2495:5:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2558:5:66" + } + ], + "functionName": { + "name": "validator_revert_t_uint8", + "nodeType": "YulIdentifier", + "src": "2533:24:66" + }, + "nodeType": "YulFunctionCall", + "src": "2533:31:66" + }, + "nodeType": "YulExpressionStatement", + "src": "2533:31:66" + } + ] + }, + "name": "abi_decode_t_uint8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "2463:6:66", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "2471:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2479:5:66", + "type": "" + } + ], + "src": "2435:135:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2620:57:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2630:41:66", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2645:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2652:18:66", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "2641:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "2641:30:66" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "2630:7:66" + } + ] + } + ] + }, + "name": "cleanup_t_uint64", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2602:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "2612:7:66", + "type": "" + } + ], + "src": "2576:101:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2725:78:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2781:16:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2790:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2793:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2783:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "2783:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "2783:12:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2748:5:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2772:5:66" + } + ], + "functionName": { + "name": "cleanup_t_uint64", + "nodeType": "YulIdentifier", + "src": "2755:16:66" + }, + "nodeType": "YulFunctionCall", + "src": "2755:23:66" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "2745:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "2745:34:66" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "2738:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "2738:42:66" + }, + "nodeType": "YulIf", + "src": "2735:62:66" + } + ] + }, + "name": "validator_revert_t_uint64", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2718:5:66", + "type": "" + } + ], + "src": "2683:120:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2860:86:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2870:29:66", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2892:6:66" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "2879:12:66" + }, + "nodeType": "YulFunctionCall", + "src": "2879:20:66" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2870:5:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2934:5:66" + } + ], + "functionName": { + "name": "validator_revert_t_uint64", + "nodeType": "YulIdentifier", + "src": "2908:25:66" + }, + "nodeType": "YulFunctionCall", + "src": "2908:32:66" + }, + "nodeType": "YulExpressionStatement", + "src": "2908:32:66" + } + ] + }, + "name": "abi_decode_t_uint64", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "2838:6:66", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "2846:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2854:5:66", + "type": "" + } + ], + "src": "2809:137:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3041:28:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3058:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3061:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3051:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "3051:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "3051:12:66" + } + ] + }, + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulFunctionDefinition", + "src": "2952:117:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3164:28:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3181:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3184:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3174:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "3174:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "3174:12:66" + } + ] + }, + "name": "revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490", + "nodeType": "YulFunctionDefinition", + "src": "3075:117:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3287:28:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3304:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3307:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3297:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "3297:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "3297:12:66" + } + ] + }, + "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", + "nodeType": "YulFunctionDefinition", + "src": "3198:117:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3408:478:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3457:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulIdentifier", + "src": "3459:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "3459:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "3459:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3436:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3444:4:66", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3432:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "3432:17:66" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "3451:3:66" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "3428:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "3428:27:66" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3421:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "3421:35:66" + }, + "nodeType": "YulIf", + "src": "3418:122:66" + }, + { + "nodeType": "YulAssignment", + "src": "3549:30:66", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3572:6:66" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "3559:12:66" + }, + "nodeType": "YulFunctionCall", + "src": "3559:20:66" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "3549:6:66" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3622:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490", + "nodeType": "YulIdentifier", + "src": "3624:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "3624:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "3624:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "3594:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3602:18:66", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "3591:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "3591:30:66" + }, + "nodeType": "YulIf", + "src": "3588:117:66" + }, + { + "nodeType": "YulAssignment", + "src": "3714:29:66", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3730:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3738:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3726:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "3726:17:66" + }, + "variableNames": [ + { + "name": "arrayPos", + "nodeType": "YulIdentifier", + "src": "3714:8:66" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3797:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", + "nodeType": "YulIdentifier", + "src": "3799:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "3799:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "3799:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "arrayPos", + "nodeType": "YulIdentifier", + "src": "3762:8:66" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "3776:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3784:4:66", + "type": "", + "value": "0x01" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "3772:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "3772:17:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3758:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "3758:32:66" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "3792:3:66" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "3755:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "3755:41:66" + }, + "nodeType": "YulIf", + "src": "3752:128:66" + } + ] + }, + "name": "abi_decode_t_bytes_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "3375:6:66", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "3383:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "arrayPos", + "nodeType": "YulTypedName", + "src": "3391:8:66", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "3401:6:66", + "type": "" + } + ], + "src": "3334:552:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4042:953:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "4089:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "4091:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "4091:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "4091:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4063:7:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4072:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "4059:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "4059:23:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4084:3:66", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "4055:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "4055:33:66" + }, + "nodeType": "YulIf", + "src": "4052:120:66" + }, + { + "nodeType": "YulBlock", + "src": "4182:117:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "4197:15:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4211:1:66", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "4201:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4226:63:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4261:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4272:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4257:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "4257:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4281:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_bytes32", + "nodeType": "YulIdentifier", + "src": "4236:20:66" + }, + "nodeType": "YulFunctionCall", + "src": "4236:53:66" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "4226:6:66" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "4309:116:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "4324:16:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4338:2:66", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "4328:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4354:61:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4387:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4398:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4383:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "4383:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4407:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_uint8", + "nodeType": "YulIdentifier", + "src": "4364:18:66" + }, + "nodeType": "YulFunctionCall", + "src": "4364:51:66" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "4354:6:66" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "4435:117:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "4450:16:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4464:2:66", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "4454:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4480:62:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4514:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4525:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4510:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "4510:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4534:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_uint64", + "nodeType": "YulIdentifier", + "src": "4490:19:66" + }, + "nodeType": "YulFunctionCall", + "src": "4490:52:66" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "4480:6:66" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "4562:118:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "4577:16:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4591:2:66", + "type": "", + "value": "96" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "4581:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4607:63:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4642:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4653:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4638:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "4638:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4662:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "4617:20:66" + }, + "nodeType": "YulFunctionCall", + "src": "4617:53:66" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "4607:6:66" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "4690:298:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "4705:47:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4736:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4747:3:66", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4732:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "4732:19:66" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4719:12:66" + }, + "nodeType": "YulFunctionCall", + "src": "4719:33:66" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "4709:6:66", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4799:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "4801:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "4801:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "4801:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4771:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4779:18:66", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "4768:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "4768:30:66" + }, + "nodeType": "YulIf", + "src": "4765:117:66" + }, + { + "nodeType": "YulAssignment", + "src": "4896:82:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4950:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4961:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4946:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "4946:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4970:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_bytes_calldata_ptr", + "nodeType": "YulIdentifier", + "src": "4914:31:66" + }, + "nodeType": "YulFunctionCall", + "src": "4914:64:66" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "4896:6:66" + }, + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "4904:6:66" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_uint8t_uint64t_addresst_bytes_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3972:9:66", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "3983:7:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "3995:6:66", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "4003:6:66", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "4011:6:66", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "4019:6:66", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "4027:6:66", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "4035:6:66", + "type": "" + } + ], + "src": "3892:1103:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5081:388:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "5127:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "5129:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "5129:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "5129:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "5102:7:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5111:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "5098:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "5098:23:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5123:2:66", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "5094:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "5094:32:66" + }, + "nodeType": "YulIf", + "src": "5091:119:66" + }, + { + "nodeType": "YulBlock", + "src": "5220:115:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "5235:15:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5249:1:66", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "5239:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5264:61:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5297:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5308:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5293:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "5293:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "5317:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_uint8", + "nodeType": "YulIdentifier", + "src": "5274:18:66" + }, + "nodeType": "YulFunctionCall", + "src": "5274:51:66" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "5264:6:66" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "5345:117:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "5360:16:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5374:2:66", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "5364:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5390:62:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5424:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5435:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5420:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "5420:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "5444:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_uint64", + "nodeType": "YulIdentifier", + "src": "5400:19:66" + }, + "nodeType": "YulFunctionCall", + "src": "5400:52:66" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "5390:6:66" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint8t_uint64", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "5043:9:66", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "5054:7:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "5066:6:66", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "5074:6:66", + "type": "" + } + ], + "src": "5001:468:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5536:51:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "5553:3:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5574:5:66" + } + ], + "functionName": { + "name": "cleanup_t_uint8", + "nodeType": "YulIdentifier", + "src": "5558:15:66" + }, + "nodeType": "YulFunctionCall", + "src": "5558:22:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5546:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "5546:35:66" + }, + "nodeType": "YulExpressionStatement", + "src": "5546:35:66" + } + ] + }, + "name": "abi_encode_t_uint8_to_t_uint8_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "5524:5:66", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "5531:3:66", + "type": "" + } + ], + "src": "5475:112:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5658:53:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "5675:3:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5698:5:66" + } + ], + "functionName": { + "name": "cleanup_t_bytes32", + "nodeType": "YulIdentifier", + "src": "5680:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "5680:24:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5668:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "5668:37:66" + }, + "nodeType": "YulExpressionStatement", + "src": "5668:37:66" + } + ] + }, + "name": "abi_encode_t_bytes32_to_t_bytes32_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "5646:5:66", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "5653:3:66", + "type": "" + } + ], + "src": "5593:118:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5775:40:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5786:22:66", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5802:5:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "5796:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "5796:12:66" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "5786:6:66" + } + ] + } + ] + }, + "name": "array_length_t_bytes_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "5758:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "5768:6:66", + "type": "" + } + ], + "src": "5717:98:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5916:73:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "5933:3:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "5938:6:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5926:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "5926:19:66" + }, + "nodeType": "YulExpressionStatement", + "src": "5926:19:66" + }, + { + "nodeType": "YulAssignment", + "src": "5954:29:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "5973:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5978:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5969:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "5969:14:66" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "5954:11:66" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "5888:3:66", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "5893:6:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "5904:11:66", + "type": "" + } + ], + "src": "5821:168:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6057:184:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "6067:10:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6076:1:66", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "6071:1:66", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6136:63:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "6161:3:66" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "6166:1:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6157:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "6157:11:66" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "6180:3:66" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "6185:1:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6176:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "6176:11:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "6170:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "6170:18:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6150:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "6150:39:66" + }, + "nodeType": "YulExpressionStatement", + "src": "6150:39:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "6097:1:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "6100:6:66" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "6094:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "6094:13:66" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "6108:19:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6110:15:66", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "6119:1:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6122:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6115:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "6115:10:66" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "6110:1:66" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "6090:3:66", + "statements": [] + }, + "src": "6086:113:66" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "6219:3:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "6224:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6215:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "6215:16:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6233:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6208:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "6208:27:66" + }, + "nodeType": "YulExpressionStatement", + "src": "6208:27:66" + } + ] + }, + "name": "copy_memory_to_memory_with_cleanup", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "6039:3:66", + "type": "" + }, + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "6044:3:66", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "6049:6:66", + "type": "" + } + ], + "src": "5995:246:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6295:54:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6305:38:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "6323:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6330:2:66", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6319:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "6319:14:66" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6339:2:66", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "6335:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "6335:7:66" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "6315:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "6315:28:66" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "6305:6:66" + } + ] + } + ] + }, + "name": "round_up_to_mul_of_32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "6278:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "result", + "nodeType": "YulTypedName", + "src": "6288:6:66", + "type": "" + } + ], + "src": "6247:102:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6445:283:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "6455:52:66", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "6501:5:66" + } + ], + "functionName": { + "name": "array_length_t_bytes_memory_ptr", + "nodeType": "YulIdentifier", + "src": "6469:31:66" + }, + "nodeType": "YulFunctionCall", + "src": "6469:38:66" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "6459:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "6516:77:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "6581:3:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "6586:6:66" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "6523:57:66" + }, + "nodeType": "YulFunctionCall", + "src": "6523:70:66" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "6516:3:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "6641:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6648:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6637:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "6637:16:66" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "6655:3:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "6660:6:66" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nodeType": "YulIdentifier", + "src": "6602:34:66" + }, + "nodeType": "YulFunctionCall", + "src": "6602:65:66" + }, + "nodeType": "YulExpressionStatement", + "src": "6602:65:66" + }, + { + "nodeType": "YulAssignment", + "src": "6676:46:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "6687:3:66" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "6714:6:66" + } + ], + "functionName": { + "name": "round_up_to_mul_of_32", + "nodeType": "YulIdentifier", + "src": "6692:21:66" + }, + "nodeType": "YulFunctionCall", + "src": "6692:29:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6683:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "6683:39:66" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "6676:3:66" + } + ] + } + ] + }, + "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "6426:5:66", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "6433:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "6441:3:66", + "type": "" + } + ], + "src": "6355:373:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6779:32:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6789:16:66", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "6800:5:66" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "6789:7:66" + } + ] + } + ] + }, + "name": "cleanup_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "6761:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "6771:7:66", + "type": "" + } + ], + "src": "6734:77:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6882:53:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "6899:3:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "6922:5:66" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "6904:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "6904:24:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6892:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "6892:37:66" + }, + "nodeType": "YulExpressionStatement", + "src": "6892:37:66" + } + ] + }, + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "6870:5:66", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "6877:3:66", + "type": "" + } + ], + "src": "6817:118:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7263:833:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7273:27:66", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7285:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7296:3:66", + "type": "", + "value": "256" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7281:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "7281:19:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7273:4:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "7354:6:66" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7367:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7378:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7363:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "7363:17:66" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "7310:43:66" + }, + "nodeType": "YulFunctionCall", + "src": "7310:71:66" + }, + "nodeType": "YulExpressionStatement", + "src": "7310:71:66" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "7431:6:66" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7444:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7455:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7440:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "7440:18:66" + } + ], + "functionName": { + "name": "abi_encode_t_uint8_to_t_uint8_fromStack", + "nodeType": "YulIdentifier", + "src": "7391:39:66" + }, + "nodeType": "YulFunctionCall", + "src": "7391:68:66" + }, + "nodeType": "YulExpressionStatement", + "src": "7391:68:66" + }, + { + "expression": { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "7509:6:66" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7522:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7533:2:66", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7518:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "7518:18:66" + } + ], + "functionName": { + "name": "abi_encode_t_uint8_to_t_uint8_fromStack", + "nodeType": "YulIdentifier", + "src": "7469:39:66" + }, + "nodeType": "YulFunctionCall", + "src": "7469:68:66" + }, + "nodeType": "YulExpressionStatement", + "src": "7469:68:66" + }, + { + "expression": { + "arguments": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "7591:6:66" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7604:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7615:2:66", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7600:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "7600:18:66" + } + ], + "functionName": { + "name": "abi_encode_t_bytes32_to_t_bytes32_fromStack", + "nodeType": "YulIdentifier", + "src": "7547:43:66" + }, + "nodeType": "YulFunctionCall", + "src": "7547:72:66" + }, + "nodeType": "YulExpressionStatement", + "src": "7547:72:66" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7640:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7651:3:66", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7636:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "7636:19:66" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7661:4:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7667:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "7657:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "7657:20:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7629:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "7629:49:66" + }, + "nodeType": "YulExpressionStatement", + "src": "7629:49:66" + }, + { + "nodeType": "YulAssignment", + "src": "7687:84:66", + "value": { + "arguments": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "7757:6:66" + }, + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7766:4:66" + } + ], + "functionName": { + "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "7695:61:66" + }, + "nodeType": "YulFunctionCall", + "src": "7695:76:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7687:4:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "7825:6:66" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7838:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7849:3:66", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7834:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "7834:19:66" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "7781:43:66" + }, + "nodeType": "YulFunctionCall", + "src": "7781:73:66" + }, + "nodeType": "YulExpressionStatement", + "src": "7781:73:66" + }, + { + "expression": { + "arguments": [ + { + "name": "value6", + "nodeType": "YulIdentifier", + "src": "7908:6:66" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7921:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7932:3:66", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7917:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "7917:19:66" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "7864:43:66" + }, + "nodeType": "YulFunctionCall", + "src": "7864:73:66" + }, + "nodeType": "YulExpressionStatement", + "src": "7864:73:66" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7958:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7969:3:66", + "type": "", + "value": "224" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7954:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "7954:19:66" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7979:4:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7985:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "7975:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "7975:20:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7947:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "7947:49:66" + }, + "nodeType": "YulExpressionStatement", + "src": "7947:49:66" + }, + { + "nodeType": "YulAssignment", + "src": "8005:84:66", + "value": { + "arguments": [ + { + "name": "value7", + "nodeType": "YulIdentifier", + "src": "8075:6:66" + }, + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "8084:4:66" + } + ], + "functionName": { + "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "8013:61:66" + }, + "nodeType": "YulFunctionCall", + "src": "8013:76:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "8005:4:66" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_address_t_uint8_t_uint8_t_bytes32_t_bytes_memory_ptr_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_uint8_t_uint8_t_bytes32_t_bytes_memory_ptr_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "7179:9:66", + "type": "" + }, + { + "name": "value7", + "nodeType": "YulTypedName", + "src": "7191:6:66", + "type": "" + }, + { + "name": "value6", + "nodeType": "YulTypedName", + "src": "7199:6:66", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "7207:6:66", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "7215:6:66", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "7223:6:66", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "7231:6:66", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "7239:6:66", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "7247:6:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "7258:4:66", + "type": "" + } + ], + "src": "6941:1155:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8144:48:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8154:32:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8179:5:66" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "8172:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "8172:13:66" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "8165:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "8165:21:66" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "8154:7:66" + } + ] + } + ] + }, + "name": "cleanup_t_bool", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "8126:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "8136:7:66", + "type": "" + } + ], + "src": "8102:90:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8257:50:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "8274:3:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8294:5:66" + } + ], + "functionName": { + "name": "cleanup_t_bool", + "nodeType": "YulIdentifier", + "src": "8279:14:66" + }, + "nodeType": "YulFunctionCall", + "src": "8279:21:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8267:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "8267:34:66" + }, + "nodeType": "YulExpressionStatement", + "src": "8267:34:66" + } + ] + }, + "name": "abi_encode_t_bool_to_t_bool_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "8245:5:66", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "8252:3:66", + "type": "" + } + ], + "src": "8198:109:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8405:118:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8415:26:66", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8427:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8438:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8423:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "8423:18:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "8415:4:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "8489:6:66" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8502:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8513:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8498:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "8498:17:66" + } + ], + "functionName": { + "name": "abi_encode_t_bool_to_t_bool_fromStack", + "nodeType": "YulIdentifier", + "src": "8451:37:66" + }, + "nodeType": "YulFunctionCall", + "src": "8451:65:66" + }, + "nodeType": "YulExpressionStatement", + "src": "8451:65:66" + } + ] + }, + "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "8377:9:66", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "8389:6:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "8400:4:66", + "type": "" + } + ], + "src": "8313:210:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8572:79:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "8629:16:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8638:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8641:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "8631:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "8631:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "8631:12:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8595:5:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8620:5:66" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "8602:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "8602:24:66" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "8592:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "8592:35:66" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "8585:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "8585:43:66" + }, + "nodeType": "YulIf", + "src": "8582:63:66" + } + ] + }, + "name": "validator_revert_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "8565:5:66", + "type": "" + } + ], + "src": "8529:122:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8709:87:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8719:29:66", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "8741:6:66" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "8728:12:66" + }, + "nodeType": "YulFunctionCall", + "src": "8728:20:66" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8719:5:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8784:5:66" + } + ], + "functionName": { + "name": "validator_revert_t_uint256", + "nodeType": "YulIdentifier", + "src": "8757:26:66" + }, + "nodeType": "YulFunctionCall", + "src": "8757:33:66" + }, + "nodeType": "YulExpressionStatement", + "src": "8757:33:66" + } + ] + }, + "name": "abi_decode_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "8687:6:66", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "8695:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "8703:5:66", + "type": "" + } + ], + "src": "8657:139:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8902:519:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "8948:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "8950:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "8950:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "8950:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "8923:7:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8932:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "8919:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "8919:23:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8944:2:66", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "8915:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "8915:32:66" + }, + "nodeType": "YulIf", + "src": "8912:119:66" + }, + { + "nodeType": "YulBlock", + "src": "9041:117:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "9056:15:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9070:1:66", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "9060:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "9085:63:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9120:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "9131:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9116:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "9116:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "9140:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "9095:20:66" + }, + "nodeType": "YulFunctionCall", + "src": "9095:53:66" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "9085:6:66" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "9168:118:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "9183:16:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9197:2:66", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "9187:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "9213:63:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9248:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "9259:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9244:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "9244:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "9268:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "9223:20:66" + }, + "nodeType": "YulFunctionCall", + "src": "9223:53:66" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "9213:6:66" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "9296:118:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "9311:16:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9325:2:66", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "9315:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "9341:63:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9376:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "9387:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9372:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "9372:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "9396:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "9351:20:66" + }, + "nodeType": "YulFunctionCall", + "src": "9351:53:66" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "9341:6:66" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "8856:9:66", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "8867:7:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "8879:6:66", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "8887:6:66", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "8895:6:66", + "type": "" + } + ], + "src": "8802:619:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9510:391:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "9556:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "9558:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "9558:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "9558:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "9531:7:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9540:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "9527:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "9527:23:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9552:2:66", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "9523:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "9523:32:66" + }, + "nodeType": "YulIf", + "src": "9520:119:66" + }, + { + "nodeType": "YulBlock", + "src": "9649:117:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "9664:15:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9678:1:66", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "9668:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "9693:63:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9728:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "9739:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9724:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "9724:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "9748:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_bytes32", + "nodeType": "YulIdentifier", + "src": "9703:20:66" + }, + "nodeType": "YulFunctionCall", + "src": "9703:53:66" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "9693:6:66" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "9776:118:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "9791:16:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9805:2:66", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "9795:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "9821:63:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9856:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "9867:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9852:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "9852:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "9876:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "9831:20:66" + }, + "nodeType": "YulFunctionCall", + "src": "9831:53:66" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "9821:6:66" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "9472:9:66", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "9483:7:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "9495:6:66", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "9503:6:66", + "type": "" + } + ], + "src": "9427:474:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9987:388:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "10033:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "10035:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "10035:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "10035:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "10008:7:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10017:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "10004:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "10004:23:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10029:2:66", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "10000:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "10000:32:66" + }, + "nodeType": "YulIf", + "src": "9997:119:66" + }, + { + "nodeType": "YulBlock", + "src": "10126:116:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "10141:15:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10155:1:66", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "10145:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10170:62:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10204:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "10215:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10200:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "10200:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "10224:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_uint64", + "nodeType": "YulIdentifier", + "src": "10180:19:66" + }, + "nodeType": "YulFunctionCall", + "src": "10180:52:66" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "10170:6:66" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "10252:116:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "10267:16:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10281:2:66", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "10271:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10297:61:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10330:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "10341:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10326:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "10326:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "10350:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_uint8", + "nodeType": "YulIdentifier", + "src": "10307:18:66" + }, + "nodeType": "YulFunctionCall", + "src": "10307:51:66" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "10297:6:66" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint64t_uint8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "9949:9:66", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "9960:7:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "9972:6:66", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "9980:6:66", + "type": "" + } + ], + "src": "9907:468:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10436:53:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "10453:3:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "10476:5:66" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "10458:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "10458:24:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10446:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "10446:37:66" + }, + "nodeType": "YulExpressionStatement", + "src": "10446:37:66" + } + ] + }, + "name": "abi_encode_t_address_to_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "10424:5:66", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "10431:3:66", + "type": "" + } + ], + "src": "10381:108:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10546:51:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "10563:3:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "10584:5:66" + } + ], + "functionName": { + "name": "cleanup_t_uint8", + "nodeType": "YulIdentifier", + "src": "10568:15:66" + }, + "nodeType": "YulFunctionCall", + "src": "10568:22:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10556:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "10556:35:66" + }, + "nodeType": "YulExpressionStatement", + "src": "10556:35:66" + } + ] + }, + "name": "abi_encode_t_uint8_to_t_uint8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "10534:5:66", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "10541:3:66", + "type": "" + } + ], + "src": "10495:102:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10658:53:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "10675:3:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "10698:5:66" + } + ], + "functionName": { + "name": "cleanup_t_bytes32", + "nodeType": "YulIdentifier", + "src": "10680:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "10680:24:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10668:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "10668:37:66" + }, + "nodeType": "YulExpressionStatement", + "src": "10668:37:66" + } + ] + }, + "name": "abi_encode_t_bytes32_to_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "10646:5:66", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "10653:3:66", + "type": "" + } + ], + "src": "10603:108:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10802:73:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "10819:3:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "10824:6:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10812:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "10812:19:66" + }, + "nodeType": "YulExpressionStatement", + "src": "10812:19:66" + }, + { + "nodeType": "YulAssignment", + "src": "10840:29:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "10859:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10864:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10855:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "10855:14:66" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "10840:11:66" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_bytes_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "10774:3:66", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "10779:6:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "10790:11:66", + "type": "" + } + ], + "src": "10717:158:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10961:273:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "10971:52:66", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "11017:5:66" + } + ], + "functionName": { + "name": "array_length_t_bytes_memory_ptr", + "nodeType": "YulIdentifier", + "src": "10985:31:66" + }, + "nodeType": "YulFunctionCall", + "src": "10985:38:66" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "10975:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11032:67:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11087:3:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "11092:6:66" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_bytes_memory_ptr", + "nodeType": "YulIdentifier", + "src": "11039:47:66" + }, + "nodeType": "YulFunctionCall", + "src": "11039:60:66" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11032:3:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "11147:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11154:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11143:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "11143:16:66" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11161:3:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "11166:6:66" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nodeType": "YulIdentifier", + "src": "11108:34:66" + }, + "nodeType": "YulFunctionCall", + "src": "11108:65:66" + }, + "nodeType": "YulExpressionStatement", + "src": "11108:65:66" + }, + { + "nodeType": "YulAssignment", + "src": "11182:46:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11193:3:66" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "11220:6:66" + } + ], + "functionName": { + "name": "round_up_to_mul_of_32", + "nodeType": "YulIdentifier", + "src": "11198:21:66" + }, + "nodeType": "YulFunctionCall", + "src": "11198:29:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11189:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "11189:39:66" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "11182:3:66" + } + ] + } + ] + }, + "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "10942:5:66", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "10949:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "10957:3:66", + "type": "" + } + ], + "src": "10881:353:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11295:53:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11312:3:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "11335:5:66" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "11317:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "11317:24:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11305:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "11305:37:66" + }, + "nodeType": "YulExpressionStatement", + "src": "11305:37:66" + } + ] + }, + "name": "abi_encode_t_uint256_to_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "11283:5:66", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "11290:3:66", + "type": "" + } + ], + "src": "11240:108:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11570:1684:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "11580:28:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11596:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11601:6:66", + "type": "", + "value": "0x0100" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11592:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "11592:16:66" + }, + "variables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "11584:4:66", + "type": "" + } + ] + }, + { + "nodeType": "YulBlock", + "src": "11618:173:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "11662:43:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "11692:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11699:4:66", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11688:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "11688:16:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "11682:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "11682:23:66" + }, + "variables": [ + { + "name": "memberValue0", + "nodeType": "YulTypedName", + "src": "11666:12:66", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "memberValue0", + "nodeType": "YulIdentifier", + "src": "11752:12:66" + }, + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11770:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11775:4:66", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11766:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "11766:14:66" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address", + "nodeType": "YulIdentifier", + "src": "11718:33:66" + }, + "nodeType": "YulFunctionCall", + "src": "11718:63:66" + }, + "nodeType": "YulExpressionStatement", + "src": "11718:63:66" + } + ] + }, + { + "nodeType": "YulBlock", + "src": "11801:187:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "11863:43:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "11893:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11900:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11889:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "11889:16:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "11883:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "11883:23:66" + }, + "variables": [ + { + "name": "memberValue0", + "nodeType": "YulTypedName", + "src": "11867:12:66", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "memberValue0", + "nodeType": "YulIdentifier", + "src": "11949:12:66" + }, + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11967:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11972:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11963:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "11963:14:66" + } + ], + "functionName": { + "name": "abi_encode_t_uint8_to_t_uint8", + "nodeType": "YulIdentifier", + "src": "11919:29:66" + }, + "nodeType": "YulFunctionCall", + "src": "11919:59:66" + }, + "nodeType": "YulExpressionStatement", + "src": "11919:59:66" + } + ] + }, + { + "nodeType": "YulBlock", + "src": "11998:175:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "12048:43:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "12078:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12085:4:66", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12074:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "12074:16:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "12068:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "12068:23:66" + }, + "variables": [ + { + "name": "memberValue0", + "nodeType": "YulTypedName", + "src": "12052:12:66", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "memberValue0", + "nodeType": "YulIdentifier", + "src": "12134:12:66" + }, + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "12152:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12157:4:66", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12148:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "12148:14:66" + } + ], + "functionName": { + "name": "abi_encode_t_uint8_to_t_uint8", + "nodeType": "YulIdentifier", + "src": "12104:29:66" + }, + "nodeType": "YulFunctionCall", + "src": "12104:59:66" + }, + "nodeType": "YulExpressionStatement", + "src": "12104:59:66" + } + ] + }, + { + "nodeType": "YulBlock", + "src": "12183:171:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "12225:43:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "12255:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12262:4:66", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12251:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "12251:16:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "12245:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "12245:23:66" + }, + "variables": [ + { + "name": "memberValue0", + "nodeType": "YulTypedName", + "src": "12229:12:66", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "memberValue0", + "nodeType": "YulIdentifier", + "src": "12315:12:66" + }, + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "12333:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12338:4:66", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12329:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "12329:14:66" + } + ], + "functionName": { + "name": "abi_encode_t_bytes32_to_t_bytes32", + "nodeType": "YulIdentifier", + "src": "12281:33:66" + }, + "nodeType": "YulFunctionCall", + "src": "12281:63:66" + }, + "nodeType": "YulExpressionStatement", + "src": "12281:63:66" + } + ] + }, + { + "nodeType": "YulBlock", + "src": "12364:257:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "12423:43:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "12453:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12460:4:66", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12449:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "12449:16:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "12443:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "12443:23:66" + }, + "variables": [ + { + "name": "memberValue0", + "nodeType": "YulTypedName", + "src": "12427:12:66", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "12491:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12496:4:66", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12487:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "12487:14:66" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "12507:4:66" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "12513:3:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "12503:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "12503:14:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12480:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "12480:38:66" + }, + "nodeType": "YulExpressionStatement", + "src": "12480:38:66" + }, + { + "nodeType": "YulAssignment", + "src": "12531:79:66", + "value": { + "arguments": [ + { + "name": "memberValue0", + "nodeType": "YulIdentifier", + "src": "12591:12:66" + }, + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "12605:4:66" + } + ], + "functionName": { + "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr", + "nodeType": "YulIdentifier", + "src": "12539:51:66" + }, + "nodeType": "YulFunctionCall", + "src": "12539:71:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "12531:4:66" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "12631:170:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "12672:43:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "12702:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12709:4:66", + "type": "", + "value": "0xa0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12698:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "12698:16:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "12692:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "12692:23:66" + }, + "variables": [ + { + "name": "memberValue0", + "nodeType": "YulTypedName", + "src": "12676:12:66", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "memberValue0", + "nodeType": "YulIdentifier", + "src": "12762:12:66" + }, + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "12780:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12785:4:66", + "type": "", + "value": "0xa0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12776:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "12776:14:66" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address", + "nodeType": "YulIdentifier", + "src": "12728:33:66" + }, + "nodeType": "YulFunctionCall", + "src": "12728:63:66" + }, + "nodeType": "YulExpressionStatement", + "src": "12728:63:66" + } + ] + }, + { + "nodeType": "YulBlock", + "src": "12811:168:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "12850:43:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "12880:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12887:4:66", + "type": "", + "value": "0xc0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12876:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "12876:16:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "12870:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "12870:23:66" + }, + "variables": [ + { + "name": "memberValue0", + "nodeType": "YulTypedName", + "src": "12854:12:66", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "memberValue0", + "nodeType": "YulIdentifier", + "src": "12940:12:66" + }, + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "12958:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12963:4:66", + "type": "", + "value": "0xc0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12954:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "12954:14:66" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256", + "nodeType": "YulIdentifier", + "src": "12906:33:66" + }, + "nodeType": "YulFunctionCall", + "src": "12906:63:66" + }, + "nodeType": "YulExpressionStatement", + "src": "12906:63:66" + } + ] + }, + { + "nodeType": "YulBlock", + "src": "12989:238:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "13029:43:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "13059:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13066:4:66", + "type": "", + "value": "0xe0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13055:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "13055:16:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "13049:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "13049:23:66" + }, + "variables": [ + { + "name": "memberValue0", + "nodeType": "YulTypedName", + "src": "13033:12:66", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "13097:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13102:4:66", + "type": "", + "value": "0xe0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13093:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "13093:14:66" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "13113:4:66" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "13119:3:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "13109:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "13109:14:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13086:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "13086:38:66" + }, + "nodeType": "YulExpressionStatement", + "src": "13086:38:66" + }, + { + "nodeType": "YulAssignment", + "src": "13137:79:66", + "value": { + "arguments": [ + { + "name": "memberValue0", + "nodeType": "YulIdentifier", + "src": "13197:12:66" + }, + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "13211:4:66" + } + ], + "functionName": { + "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr", + "nodeType": "YulIdentifier", + "src": "13145:51:66" + }, + "nodeType": "YulFunctionCall", + "src": "13145:71:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "13137:4:66" + } + ] + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "13237:11:66", + "value": { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "13244:4:66" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "13237:3:66" + } + ] + } + ] + }, + "name": "abi_encode_t_struct$_DepositRecord_$2360_memory_ptr_to_t_struct$_DepositRecord_$2360_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "11549:5:66", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "11556:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "11565:3:66", + "type": "" + } + ], + "src": "11434:1820:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13420:237:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "13430:26:66", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13442:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13453:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13438:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "13438:18:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "13430:4:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13477:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13488:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13473:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "13473:17:66" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "13496:4:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13502:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "13492:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "13492:20:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13466:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "13466:47:66" + }, + "nodeType": "YulExpressionStatement", + "src": "13466:47:66" + }, + { + "nodeType": "YulAssignment", + "src": "13522:128:66", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "13636:6:66" + }, + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "13645:4:66" + } + ], + "functionName": { + "name": "abi_encode_t_struct$_DepositRecord_$2360_memory_ptr_to_t_struct$_DepositRecord_$2360_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "13530:105:66" + }, + "nodeType": "YulFunctionCall", + "src": "13530:120:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "13522:4:66" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_struct$_DepositRecord_$2360_memory_ptr__to_t_struct$_DepositRecord_$2360_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "13392:9:66", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "13404:6:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "13415:4:66", + "type": "" + } + ], + "src": "13260:397:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13761:124:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "13771:26:66", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13783:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13794:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13779:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "13779:18:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "13771:4:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "13851:6:66" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13864:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13875:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13860:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "13860:17:66" + } + ], + "functionName": { + "name": "abi_encode_t_bytes32_to_t_bytes32_fromStack", + "nodeType": "YulIdentifier", + "src": "13807:43:66" + }, + "nodeType": "YulFunctionCall", + "src": "13807:71:66" + }, + "nodeType": "YulExpressionStatement", + "src": "13807:71:66" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "13733:9:66", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "13745:6:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "13756:4:66", + "type": "" + } + ], + "src": "13663:222:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13993:570:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "14039:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "14041:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "14041:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "14041:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "14014:7:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14023:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "14010:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "14010:23:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14035:2:66", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "14006:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "14006:32:66" + }, + "nodeType": "YulIf", + "src": "14003:119:66" + }, + { + "nodeType": "YulBlock", + "src": "14132:117:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "14147:15:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14161:1:66", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "14151:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "14176:63:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14211:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "14222:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14207:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "14207:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "14231:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_bytes32", + "nodeType": "YulIdentifier", + "src": "14186:20:66" + }, + "nodeType": "YulFunctionCall", + "src": "14186:53:66" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "14176:6:66" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "14259:297:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "14274:46:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14305:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14316:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14301:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "14301:18:66" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "14288:12:66" + }, + "nodeType": "YulFunctionCall", + "src": "14288:32:66" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "14278:6:66", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14367:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "14369:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "14369:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "14369:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "14339:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14347:18:66", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "14336:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "14336:30:66" + }, + "nodeType": "YulIf", + "src": "14333:117:66" + }, + { + "nodeType": "YulAssignment", + "src": "14464:82:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14518:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "14529:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14514:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "14514:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "14538:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_bytes_calldata_ptr", + "nodeType": "YulIdentifier", + "src": "14482:31:66" + }, + "nodeType": "YulFunctionCall", + "src": "14482:64:66" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "14464:6:66" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "14472:6:66" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_bytes_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "13947:9:66", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "13958:7:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "13970:6:66", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "13978:6:66", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "13986:6:66", + "type": "" + } + ], + "src": "13891:672:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14665:73:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14682:3:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "14687:6:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14675:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "14675:19:66" + }, + "nodeType": "YulExpressionStatement", + "src": "14675:19:66" + }, + { + "nodeType": "YulAssignment", + "src": "14703:29:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14722:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14727:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14718:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "14718:14:66" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "14703:11:66" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "14637:3:66", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "14642:6:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "14653:11:66", + "type": "" + } + ], + "src": "14569:169:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14850:121:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "14872:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14880:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14868:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "14868:14:66" + }, + { + "hexValue": "70726f766964656420746f6b656e41646472657373206973206e6f7420776869", + "kind": "string", + "nodeType": "YulLiteral", + "src": "14884:34:66", + "type": "", + "value": "provided tokenAddress is not whi" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14861:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "14861:58:66" + }, + "nodeType": "YulExpressionStatement", + "src": "14861:58:66" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "14940:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14948:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14936:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "14936:15:66" + }, + { + "hexValue": "74656c6973746564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "14953:10:66", + "type": "", + "value": "telisted" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14929:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "14929:35:66" + }, + "nodeType": "YulExpressionStatement", + "src": "14929:35:66" + } + ] + }, + "name": "store_literal_in_memory_d6f36190bb0602e32e72016fc9d55735c428c14ee06e9999974578d6c009c7ad", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "14842:6:66", + "type": "" + } + ], + "src": "14744:227:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15123:220:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "15133:74:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "15199:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15204:2:66", + "type": "", + "value": "40" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "15140:58:66" + }, + "nodeType": "YulFunctionCall", + "src": "15140:67:66" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "15133:3:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "15305:3:66" + } + ], + "functionName": { + "name": "store_literal_in_memory_d6f36190bb0602e32e72016fc9d55735c428c14ee06e9999974578d6c009c7ad", + "nodeType": "YulIdentifier", + "src": "15216:88:66" + }, + "nodeType": "YulFunctionCall", + "src": "15216:93:66" + }, + "nodeType": "YulExpressionStatement", + "src": "15216:93:66" + }, + { + "nodeType": "YulAssignment", + "src": "15318:19:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "15329:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15334:2:66", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15325:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "15325:12:66" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "15318:3:66" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_d6f36190bb0602e32e72016fc9d55735c428c14ee06e9999974578d6c009c7ad_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "15111:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "15119:3:66", + "type": "" + } + ], + "src": "14977:366:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15520:248:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "15530:26:66", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15542:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15553:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15538:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "15538:18:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "15530:4:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15577:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15588:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15573:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "15573:17:66" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "15596:4:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15602:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "15592:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "15592:20:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "15566:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "15566:47:66" + }, + "nodeType": "YulExpressionStatement", + "src": "15566:47:66" + }, + { + "nodeType": "YulAssignment", + "src": "15622:139:66", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "15756:4:66" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_d6f36190bb0602e32e72016fc9d55735c428c14ee06e9999974578d6c009c7ad_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "15630:124:66" + }, + "nodeType": "YulFunctionCall", + "src": "15630:131:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "15622:4:66" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_d6f36190bb0602e32e72016fc9d55735c428c14ee06e9999974578d6c009c7ad__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "15500:9:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "15515:4:66", + "type": "" + } + ], + "src": "15349:419:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15872:124:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "15882:26:66", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15894:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15905:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15890:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "15890:18:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "15882:4:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "15962:6:66" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15975:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15986:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15971:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "15971:17:66" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "15918:43:66" + }, + "nodeType": "YulFunctionCall", + "src": "15918:71:66" + }, + "nodeType": "YulExpressionStatement", + "src": "15918:71:66" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "15844:9:66", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "15856:6:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "15867:4:66", + "type": "" + } + ], + "src": "15774:222:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16091:28:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16108:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16111:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "16101:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "16101:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "16101:12:66" + } + ] + }, + "name": "revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae", + "nodeType": "YulFunctionDefinition", + "src": "16002:117:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16153:152:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16170:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16173:77:66", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16163:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "16163:88:66" + }, + "nodeType": "YulExpressionStatement", + "src": "16163:88:66" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16267:1:66", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16270:4:66", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16260:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "16260:15:66" + }, + "nodeType": "YulExpressionStatement", + "src": "16260:15:66" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16291:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16294:4:66", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "16284:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "16284:15:66" + }, + "nodeType": "YulExpressionStatement", + "src": "16284:15:66" + } + ] + }, + "name": "panic_error_0x41", + "nodeType": "YulFunctionDefinition", + "src": "16125:180:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16354:238:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "16364:58:66", + "value": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "16386:6:66" + }, + { + "arguments": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "16416:4:66" + } + ], + "functionName": { + "name": "round_up_to_mul_of_32", + "nodeType": "YulIdentifier", + "src": "16394:21:66" + }, + "nodeType": "YulFunctionCall", + "src": "16394:27:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16382:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "16382:40:66" + }, + "variables": [ + { + "name": "newFreePtr", + "nodeType": "YulTypedName", + "src": "16368:10:66", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16533:22:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "16535:16:66" + }, + "nodeType": "YulFunctionCall", + "src": "16535:18:66" + }, + "nodeType": "YulExpressionStatement", + "src": "16535:18:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "16476:10:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16488:18:66", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "16473:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "16473:34:66" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "16512:10:66" + }, + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "16524:6:66" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "16509:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "16509:22:66" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "16470:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "16470:62:66" + }, + "nodeType": "YulIf", + "src": "16467:88:66" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16571:2:66", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "16575:10:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16564:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "16564:22:66" + }, + "nodeType": "YulExpressionStatement", + "src": "16564:22:66" + } + ] + }, + "name": "finalize_allocation", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "16340:6:66", + "type": "" + }, + { + "name": "size", + "nodeType": "YulTypedName", + "src": "16348:4:66", + "type": "" + } + ], + "src": "16311:281:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16639:88:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "16649:30:66", + "value": { + "arguments": [], + "functionName": { + "name": "allocate_unbounded", + "nodeType": "YulIdentifier", + "src": "16659:18:66" + }, + "nodeType": "YulFunctionCall", + "src": "16659:20:66" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "16649:6:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "16708:6:66" + }, + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "16716:4:66" + } + ], + "functionName": { + "name": "finalize_allocation", + "nodeType": "YulIdentifier", + "src": "16688:19:66" + }, + "nodeType": "YulFunctionCall", + "src": "16688:33:66" + }, + "nodeType": "YulExpressionStatement", + "src": "16688:33:66" + } + ] + }, + "name": "allocate_memory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "size", + "nodeType": "YulTypedName", + "src": "16623:4:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "16632:6:66", + "type": "" + } + ], + "src": "16598:129:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16800:241:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "16905:22:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "16907:16:66" + }, + "nodeType": "YulFunctionCall", + "src": "16907:18:66" + }, + "nodeType": "YulExpressionStatement", + "src": "16907:18:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "16877:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16885:18:66", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "16874:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "16874:30:66" + }, + "nodeType": "YulIf", + "src": "16871:56:66" + }, + { + "nodeType": "YulAssignment", + "src": "16937:37:66", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "16967:6:66" + } + ], + "functionName": { + "name": "round_up_to_mul_of_32", + "nodeType": "YulIdentifier", + "src": "16945:21:66" + }, + "nodeType": "YulFunctionCall", + "src": "16945:29:66" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "16937:4:66" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "17011:23:66", + "value": { + "arguments": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "17023:4:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17029:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17019:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "17019:15:66" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "17011:4:66" + } + ] + } + ] + }, + "name": "array_allocation_size_t_string_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "16784:6:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "size", + "nodeType": "YulTypedName", + "src": "16795:4:66", + "type": "" + } + ], + "src": "16733:308:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17142:339:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "17152:75:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "17219:6:66" + } + ], + "functionName": { + "name": "array_allocation_size_t_string_memory_ptr", + "nodeType": "YulIdentifier", + "src": "17177:41:66" + }, + "nodeType": "YulFunctionCall", + "src": "17177:49:66" + } + ], + "functionName": { + "name": "allocate_memory", + "nodeType": "YulIdentifier", + "src": "17161:15:66" + }, + "nodeType": "YulFunctionCall", + "src": "17161:66:66" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "17152:5:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "17243:5:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "17250:6:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "17236:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "17236:21:66" + }, + "nodeType": "YulExpressionStatement", + "src": "17236:21:66" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "17266:27:66", + "value": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "17281:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17288:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17277:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "17277:16:66" + }, + "variables": [ + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "17270:3:66", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17331:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae", + "nodeType": "YulIdentifier", + "src": "17333:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "17333:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "17333:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "17312:3:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "17317:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17308:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "17308:16:66" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "17326:3:66" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "17305:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "17305:25:66" + }, + "nodeType": "YulIf", + "src": "17302:112:66" + }, + { + "expression": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "17458:3:66" + }, + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "17463:3:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "17468:6:66" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nodeType": "YulIdentifier", + "src": "17423:34:66" + }, + "nodeType": "YulFunctionCall", + "src": "17423:52:66" + }, + "nodeType": "YulExpressionStatement", + "src": "17423:52:66" + } + ] + }, + "name": "abi_decode_available_length_t_string_memory_ptr_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "17115:3:66", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "17120:6:66", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "17128:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "17136:5:66", + "type": "" + } + ], + "src": "17047:434:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17574:282:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "17623:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulIdentifier", + "src": "17625:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "17625:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "17625:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "17602:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17610:4:66", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17598:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "17598:17:66" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "17617:3:66" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "17594:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "17594:27:66" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "17587:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "17587:35:66" + }, + "nodeType": "YulIf", + "src": "17584:122:66" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "17715:27:66", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "17735:6:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "17729:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "17729:13:66" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "17719:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "17751:99:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "17823:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17831:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17819:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "17819:17:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "17838:6:66" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "17846:3:66" + } + ], + "functionName": { + "name": "abi_decode_available_length_t_string_memory_ptr_fromMemory", + "nodeType": "YulIdentifier", + "src": "17760:58:66" + }, + "nodeType": "YulFunctionCall", + "src": "17760:90:66" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "17751:5:66" + } + ] + } + ] + }, + "name": "abi_decode_t_string_memory_ptr_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "17552:6:66", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "17560:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "17568:5:66", + "type": "" + } + ], + "src": "17501:355:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17949:437:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "17995:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "17997:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "17997:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "17997:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "17970:7:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17979:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "17966:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "17966:23:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17991:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "17962:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "17962:32:66" + }, + "nodeType": "YulIf", + "src": "17959:119:66" + }, + { + "nodeType": "YulBlock", + "src": "18088:291:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "18103:38:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18127:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18138:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18123:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "18123:17:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "18117:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "18117:24:66" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "18107:6:66", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18188:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "18190:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "18190:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "18190:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "18160:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18168:18:66", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "18157:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "18157:30:66" + }, + "nodeType": "YulIf", + "src": "18154:117:66" + }, + { + "nodeType": "YulAssignment", + "src": "18285:84:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18341:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "18352:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18337:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "18337:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "18361:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_string_memory_ptr_fromMemory", + "nodeType": "YulIdentifier", + "src": "18295:41:66" + }, + "nodeType": "YulFunctionCall", + "src": "18295:74:66" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "18285:6:66" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_string_memory_ptr_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "17919:9:66", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "17930:7:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "17942:6:66", + "type": "" + } + ], + "src": "17862:524:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18420:152:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18437:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18440:77:66", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18430:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "18430:88:66" + }, + "nodeType": "YulExpressionStatement", + "src": "18430:88:66" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18534:1:66", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18537:4:66", + "type": "", + "value": "0x22" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18527:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "18527:15:66" + }, + "nodeType": "YulExpressionStatement", + "src": "18527:15:66" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18558:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18561:4:66", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "18551:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "18551:15:66" + }, + "nodeType": "YulExpressionStatement", + "src": "18551:15:66" + } + ] + }, + "name": "panic_error_0x22", + "nodeType": "YulFunctionDefinition", + "src": "18392:180:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18629:269:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "18639:22:66", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "18653:4:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18659:1:66", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "18649:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "18649:12:66" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "18639:6:66" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "18670:38:66", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "18700:4:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18706:1:66", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "18696:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "18696:12:66" + }, + "variables": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulTypedName", + "src": "18674:18:66", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18747:51:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "18761:27:66", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "18775:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18783:4:66", + "type": "", + "value": "0x7f" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "18771:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "18771:17:66" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "18761:6:66" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "18727:18:66" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "18720:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "18720:26:66" + }, + "nodeType": "YulIf", + "src": "18717:81:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18850:42:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x22", + "nodeType": "YulIdentifier", + "src": "18864:16:66" + }, + "nodeType": "YulFunctionCall", + "src": "18864:18:66" + }, + "nodeType": "YulExpressionStatement", + "src": "18864:18:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "18814:18:66" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "18837:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18845:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "18834:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "18834:14:66" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "18811:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "18811:38:66" + }, + "nodeType": "YulIf", + "src": "18808:84:66" + } + ] + }, + "name": "extract_byte_array_length", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nodeType": "YulTypedName", + "src": "18613:4:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "18622:6:66", + "type": "" + } + ], + "src": "18578:320:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18957:87:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "18967:11:66", + "value": { + "name": "ptr", + "nodeType": "YulIdentifier", + "src": "18975:3:66" + }, + "variableNames": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "18967:4:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18995:1:66", + "type": "", + "value": "0" + }, + { + "name": "ptr", + "nodeType": "YulIdentifier", + "src": "18998:3:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18988:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "18988:14:66" + }, + "nodeType": "YulExpressionStatement", + "src": "18988:14:66" + }, + { + "nodeType": "YulAssignment", + "src": "19011:26:66", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19029:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19032:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "keccak256", + "nodeType": "YulIdentifier", + "src": "19019:9:66" + }, + "nodeType": "YulFunctionCall", + "src": "19019:18:66" + }, + "variableNames": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "19011:4:66" + } + ] + } + ] + }, + "name": "array_dataslot_t_bytes_storage", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "ptr", + "nodeType": "YulTypedName", + "src": "18944:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "data", + "nodeType": "YulTypedName", + "src": "18952:4:66", + "type": "" + } + ], + "src": "18904:140:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19094:49:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "19104:33:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "19122:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19129:2:66", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19118:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "19118:14:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19134:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "19114:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "19114:23:66" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "19104:6:66" + } + ] + } + ] + }, + "name": "divide_by_32_ceil", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "19077:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "result", + "nodeType": "YulTypedName", + "src": "19087:6:66", + "type": "" + } + ], + "src": "19050:93:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19202:54:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "19212:37:66", + "value": { + "arguments": [ + { + "name": "bits", + "nodeType": "YulIdentifier", + "src": "19237:4:66" + }, + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "19243:5:66" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "19233:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "19233:16:66" + }, + "variableNames": [ + { + "name": "newValue", + "nodeType": "YulIdentifier", + "src": "19212:8:66" + } + ] + } + ] + }, + "name": "shift_left_dynamic", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "bits", + "nodeType": "YulTypedName", + "src": "19177:4:66", + "type": "" + }, + { + "name": "value", + "nodeType": "YulTypedName", + "src": "19183:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "newValue", + "nodeType": "YulTypedName", + "src": "19193:8:66", + "type": "" + } + ], + "src": "19149:107:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19338:317:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "19348:35:66", + "value": { + "arguments": [ + { + "name": "shiftBytes", + "nodeType": "YulIdentifier", + "src": "19369:10:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19381:1:66", + "type": "", + "value": "8" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "19365:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "19365:18:66" + }, + "variables": [ + { + "name": "shiftBits", + "nodeType": "YulTypedName", + "src": "19352:9:66", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "19392:109:66", + "value": { + "arguments": [ + { + "name": "shiftBits", + "nodeType": "YulIdentifier", + "src": "19423:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19434:66:66", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "shift_left_dynamic", + "nodeType": "YulIdentifier", + "src": "19404:18:66" + }, + "nodeType": "YulFunctionCall", + "src": "19404:97:66" + }, + "variables": [ + { + "name": "mask", + "nodeType": "YulTypedName", + "src": "19396:4:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "19510:51:66", + "value": { + "arguments": [ + { + "name": "shiftBits", + "nodeType": "YulIdentifier", + "src": "19541:9:66" + }, + { + "name": "toInsert", + "nodeType": "YulIdentifier", + "src": "19552:8:66" + } + ], + "functionName": { + "name": "shift_left_dynamic", + "nodeType": "YulIdentifier", + "src": "19522:18:66" + }, + "nodeType": "YulFunctionCall", + "src": "19522:39:66" + }, + "variableNames": [ + { + "name": "toInsert", + "nodeType": "YulIdentifier", + "src": "19510:8:66" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "19570:30:66", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "19583:5:66" + }, + { + "arguments": [ + { + "name": "mask", + "nodeType": "YulIdentifier", + "src": "19594:4:66" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "19590:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "19590:9:66" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "19579:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "19579:21:66" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "19570:5:66" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "19609:40:66", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "19622:5:66" + }, + { + "arguments": [ + { + "name": "toInsert", + "nodeType": "YulIdentifier", + "src": "19633:8:66" + }, + { + "name": "mask", + "nodeType": "YulIdentifier", + "src": "19643:4:66" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "19629:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "19629:19:66" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "19619:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "19619:30:66" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "19609:6:66" + } + ] + } + ] + }, + "name": "update_byte_slice_dynamic32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "19299:5:66", + "type": "" + }, + { + "name": "shiftBytes", + "nodeType": "YulTypedName", + "src": "19306:10:66", + "type": "" + }, + { + "name": "toInsert", + "nodeType": "YulTypedName", + "src": "19318:8:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "result", + "nodeType": "YulTypedName", + "src": "19331:6:66", + "type": "" + } + ], + "src": "19262:393:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19693:28:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "19703:12:66", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "19710:5:66" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "19703:3:66" + } + ] + } + ] + }, + "name": "identity", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "19679:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nodeType": "YulTypedName", + "src": "19689:3:66", + "type": "" + } + ], + "src": "19661:60:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19787:82:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "19797:66:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "19855:5:66" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "19837:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "19837:24:66" + } + ], + "functionName": { + "name": "identity", + "nodeType": "YulIdentifier", + "src": "19828:8:66" + }, + "nodeType": "YulFunctionCall", + "src": "19828:34:66" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "19810:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "19810:53:66" + }, + "variableNames": [ + { + "name": "converted", + "nodeType": "YulIdentifier", + "src": "19797:9:66" + } + ] + } + ] + }, + "name": "convert_t_uint256_to_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "19767:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "converted", + "nodeType": "YulTypedName", + "src": "19777:9:66", + "type": "" + } + ], + "src": "19727:142:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19922:28:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "19932:12:66", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "19939:5:66" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "19932:3:66" + } + ] + } + ] + }, + "name": "prepare_store_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "19908:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nodeType": "YulTypedName", + "src": "19918:3:66", + "type": "" + } + ], + "src": "19875:75:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20032:193:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "20042:63:66", + "value": { + "arguments": [ + { + "name": "value_0", + "nodeType": "YulIdentifier", + "src": "20097:7:66" + } + ], + "functionName": { + "name": "convert_t_uint256_to_t_uint256", + "nodeType": "YulIdentifier", + "src": "20066:30:66" + }, + "nodeType": "YulFunctionCall", + "src": "20066:39:66" + }, + "variables": [ + { + "name": "convertedValue_0", + "nodeType": "YulTypedName", + "src": "20046:16:66", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "20121:4:66" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "20161:4:66" + } + ], + "functionName": { + "name": "sload", + "nodeType": "YulIdentifier", + "src": "20155:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "20155:11:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "20168:6:66" + }, + { + "arguments": [ + { + "name": "convertedValue_0", + "nodeType": "YulIdentifier", + "src": "20200:16:66" + } + ], + "functionName": { + "name": "prepare_store_t_uint256", + "nodeType": "YulIdentifier", + "src": "20176:23:66" + }, + "nodeType": "YulFunctionCall", + "src": "20176:41:66" + } + ], + "functionName": { + "name": "update_byte_slice_dynamic32", + "nodeType": "YulIdentifier", + "src": "20127:27:66" + }, + "nodeType": "YulFunctionCall", + "src": "20127:91:66" + } + ], + "functionName": { + "name": "sstore", + "nodeType": "YulIdentifier", + "src": "20114:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "20114:105:66" + }, + "nodeType": "YulExpressionStatement", + "src": "20114:105:66" + } + ] + }, + "name": "update_storage_value_t_uint256_to_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "slot", + "nodeType": "YulTypedName", + "src": "20009:4:66", + "type": "" + }, + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "20015:6:66", + "type": "" + }, + { + "name": "value_0", + "nodeType": "YulTypedName", + "src": "20023:7:66", + "type": "" + } + ], + "src": "19956:269:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20280:24:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "20290:8:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20297:1:66", + "type": "", + "value": "0" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "20290:3:66" + } + ] + } + ] + }, + "name": "zero_value_for_split_t_uint256", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "ret", + "nodeType": "YulTypedName", + "src": "20276:3:66", + "type": "" + } + ], + "src": "20231:73:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20363:136:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "20373:46:66", + "value": { + "arguments": [], + "functionName": { + "name": "zero_value_for_split_t_uint256", + "nodeType": "YulIdentifier", + "src": "20387:30:66" + }, + "nodeType": "YulFunctionCall", + "src": "20387:32:66" + }, + "variables": [ + { + "name": "zero_0", + "nodeType": "YulTypedName", + "src": "20377:6:66", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "20472:4:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "20478:6:66" + }, + { + "name": "zero_0", + "nodeType": "YulIdentifier", + "src": "20486:6:66" + } + ], + "functionName": { + "name": "update_storage_value_t_uint256_to_t_uint256", + "nodeType": "YulIdentifier", + "src": "20428:43:66" + }, + "nodeType": "YulFunctionCall", + "src": "20428:65:66" + }, + "nodeType": "YulExpressionStatement", + "src": "20428:65:66" + } + ] + }, + "name": "storage_set_to_zero_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "slot", + "nodeType": "YulTypedName", + "src": "20349:4:66", + "type": "" + }, + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "20355:6:66", + "type": "" + } + ], + "src": "20310:189:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20555:136:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "20622:63:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "start", + "nodeType": "YulIdentifier", + "src": "20666:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20673:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "storage_set_to_zero_t_uint256", + "nodeType": "YulIdentifier", + "src": "20636:29:66" + }, + "nodeType": "YulFunctionCall", + "src": "20636:39:66" + }, + "nodeType": "YulExpressionStatement", + "src": "20636:39:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "start", + "nodeType": "YulIdentifier", + "src": "20575:5:66" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "20582:3:66" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "20572:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "20572:14:66" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "20587:26:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "20589:22:66", + "value": { + "arguments": [ + { + "name": "start", + "nodeType": "YulIdentifier", + "src": "20602:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20609:1:66", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20598:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "20598:13:66" + }, + "variableNames": [ + { + "name": "start", + "nodeType": "YulIdentifier", + "src": "20589:5:66" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "20569:2:66", + "statements": [] + }, + "src": "20565:120:66" + } + ] + }, + "name": "clear_storage_range_t_bytes1", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "start", + "nodeType": "YulTypedName", + "src": "20543:5:66", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "20550:3:66", + "type": "" + } + ], + "src": "20505:186:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20775:463:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "20801:430:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "20815:53:66", + "value": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "20862:5:66" + } + ], + "functionName": { + "name": "array_dataslot_t_bytes_storage", + "nodeType": "YulIdentifier", + "src": "20831:30:66" + }, + "nodeType": "YulFunctionCall", + "src": "20831:37:66" + }, + "variables": [ + { + "name": "dataArea", + "nodeType": "YulTypedName", + "src": "20819:8:66", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "20881:63:66", + "value": { + "arguments": [ + { + "name": "dataArea", + "nodeType": "YulIdentifier", + "src": "20904:8:66" + }, + { + "arguments": [ + { + "name": "startIndex", + "nodeType": "YulIdentifier", + "src": "20932:10:66" + } + ], + "functionName": { + "name": "divide_by_32_ceil", + "nodeType": "YulIdentifier", + "src": "20914:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "20914:29:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20900:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "20900:44:66" + }, + "variables": [ + { + "name": "deleteStart", + "nodeType": "YulTypedName", + "src": "20885:11:66", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "21101:27:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "21103:23:66", + "value": { + "name": "dataArea", + "nodeType": "YulIdentifier", + "src": "21118:8:66" + }, + "variableNames": [ + { + "name": "deleteStart", + "nodeType": "YulIdentifier", + "src": "21103:11:66" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "startIndex", + "nodeType": "YulIdentifier", + "src": "21085:10:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21097:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "21082:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "21082:18:66" + }, + "nodeType": "YulIf", + "src": "21079:49:66" + }, + { + "expression": { + "arguments": [ + { + "name": "deleteStart", + "nodeType": "YulIdentifier", + "src": "21170:11:66" + }, + { + "arguments": [ + { + "name": "dataArea", + "nodeType": "YulIdentifier", + "src": "21187:8:66" }, { - "assignments": [7425], - "declarations": [ - { - "constant": false, - "id": 7425, - "mutability": "mutable", - "name": "destinationRecipientAddress", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7510, - "src": "5401:40:35", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 7424, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "5401:5:35", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } + "arguments": [ + { + "name": "len", + "nodeType": "YulIdentifier", + "src": "21215:3:66" + } + ], + "functionName": { + "name": "divide_by_32_ceil", + "nodeType": "YulIdentifier", + "src": "21197:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "21197:22:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21183:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "21183:37:66" + } + ], + "functionName": { + "name": "clear_storage_range_t_bytes1", + "nodeType": "YulIdentifier", + "src": "21141:28:66" + }, + "nodeType": "YulFunctionCall", + "src": "21141:80:66" + }, + "nodeType": "YulExpressionStatement", + "src": "21141:80:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "len", + "nodeType": "YulIdentifier", + "src": "20792:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20797:2:66", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "20789:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "20789:11:66" + }, + "nodeType": "YulIf", + "src": "20786:445:66" + } + ] + }, + "name": "clean_up_bytearray_end_slots_t_bytes_storage", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "20751:5:66", + "type": "" + }, + { + "name": "len", + "nodeType": "YulTypedName", + "src": "20758:3:66", + "type": "" + }, + { + "name": "startIndex", + "nodeType": "YulTypedName", + "src": "20763:10:66", + "type": "" + } + ], + "src": "20697:541:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "21307:54:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "21317:37:66", + "value": { + "arguments": [ + { + "name": "bits", + "nodeType": "YulIdentifier", + "src": "21342:4:66" + }, + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "21348:5:66" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "21338:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "21338:16:66" + }, + "variableNames": [ + { + "name": "newValue", + "nodeType": "YulIdentifier", + "src": "21317:8:66" + } + ] + } + ] + }, + "name": "shift_right_unsigned_dynamic", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "bits", + "nodeType": "YulTypedName", + "src": "21282:4:66", + "type": "" + }, + { + "name": "value", + "nodeType": "YulTypedName", + "src": "21288:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "newValue", + "nodeType": "YulTypedName", + "src": "21298:8:66", + "type": "" + } + ], + "src": "21244:117:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "21418:118:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "21428:68:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21477:1:66", + "type": "", + "value": "8" + }, + { + "name": "bytes", + "nodeType": "YulIdentifier", + "src": "21480:5:66" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "21473:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "21473:13:66" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21492:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "21488:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "21488:6:66" + } + ], + "functionName": { + "name": "shift_right_unsigned_dynamic", + "nodeType": "YulIdentifier", + "src": "21444:28:66" + }, + "nodeType": "YulFunctionCall", + "src": "21444:51:66" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "21440:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "21440:56:66" + }, + "variables": [ + { + "name": "mask", + "nodeType": "YulTypedName", + "src": "21432:4:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "21505:25:66", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "21519:4:66" + }, + { + "name": "mask", + "nodeType": "YulIdentifier", + "src": "21525:4:66" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "21515:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "21515:15:66" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "21505:6:66" + } + ] + } + ] + }, + "name": "mask_bytes_dynamic", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nodeType": "YulTypedName", + "src": "21395:4:66", + "type": "" + }, + { + "name": "bytes", + "nodeType": "YulTypedName", + "src": "21401:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "result", + "nodeType": "YulTypedName", + "src": "21411:6:66", + "type": "" + } + ], + "src": "21367:169:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "21622:214:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "21755:37:66", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "21782:4:66" + }, + { + "name": "len", + "nodeType": "YulIdentifier", + "src": "21788:3:66" + } + ], + "functionName": { + "name": "mask_bytes_dynamic", + "nodeType": "YulIdentifier", + "src": "21763:18:66" + }, + "nodeType": "YulFunctionCall", + "src": "21763:29:66" + }, + "variableNames": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "21755:4:66" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "21801:29:66", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "21812:4:66" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21822:1:66", + "type": "", + "value": "2" + }, + { + "name": "len", + "nodeType": "YulIdentifier", + "src": "21825:3:66" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "21818:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "21818:11:66" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "21809:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "21809:21:66" + }, + "variableNames": [ + { + "name": "used", + "nodeType": "YulIdentifier", + "src": "21801:4:66" + } + ] + } + ] + }, + "name": "extract_used_part_and_set_length_of_short_byte_array", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nodeType": "YulTypedName", + "src": "21603:4:66", + "type": "" + }, + { + "name": "len", + "nodeType": "YulTypedName", + "src": "21609:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "used", + "nodeType": "YulTypedName", + "src": "21617:4:66", + "type": "" + } + ], + "src": "21541:295:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "21931:1300:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "21942:50:66", + "value": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "21988:3:66" + } + ], + "functionName": { + "name": "array_length_t_bytes_memory_ptr", + "nodeType": "YulIdentifier", + "src": "21956:31:66" + }, + "nodeType": "YulFunctionCall", + "src": "21956:36:66" + }, + "variables": [ + { + "name": "newLen", + "nodeType": "YulTypedName", + "src": "21946:6:66", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "22077:22:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "22079:16:66" + }, + "nodeType": "YulFunctionCall", + "src": "22079:18:66" + }, + "nodeType": "YulExpressionStatement", + "src": "22079:18:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "22049:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22057:18:66", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "22046:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "22046:30:66" + }, + "nodeType": "YulIf", + "src": "22043:56:66" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "22109:52:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "22155:4:66" + } + ], + "functionName": { + "name": "sload", + "nodeType": "YulIdentifier", + "src": "22149:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "22149:11:66" + } + ], + "functionName": { + "name": "extract_byte_array_length", + "nodeType": "YulIdentifier", + "src": "22123:25:66" + }, + "nodeType": "YulFunctionCall", + "src": "22123:38:66" + }, + "variables": [ + { + "name": "oldLen", + "nodeType": "YulTypedName", + "src": "22113:6:66", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "22253:4:66" + }, + { + "name": "oldLen", + "nodeType": "YulIdentifier", + "src": "22259:6:66" + }, + { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "22267:6:66" + } + ], + "functionName": { + "name": "clean_up_bytearray_end_slots_t_bytes_storage", + "nodeType": "YulIdentifier", + "src": "22208:44:66" + }, + "nodeType": "YulFunctionCall", + "src": "22208:66:66" + }, + "nodeType": "YulExpressionStatement", + "src": "22208:66:66" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "22284:18:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22301:1:66", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "srcOffset", + "nodeType": "YulTypedName", + "src": "22288:9:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "22312:17:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22325:4:66", + "type": "", + "value": "0x20" + }, + "variableNames": [ + { + "name": "srcOffset", + "nodeType": "YulIdentifier", + "src": "22312:9:66" + } + ] + }, + { + "cases": [ + { + "body": { + "nodeType": "YulBlock", + "src": "22376:610:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "22390:37:66", + "value": { + "arguments": [ + { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "22409:6:66" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22421:4:66", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "22417:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "22417:9:66" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "22405:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "22405:22:66" + }, + "variables": [ + { + "name": "loopEnd", + "nodeType": "YulTypedName", + "src": "22394:7:66", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "22441:50:66", + "value": { + "arguments": [ + { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "22486:4:66" + } + ], + "functionName": { + "name": "array_dataslot_t_bytes_storage", + "nodeType": "YulIdentifier", + "src": "22455:30:66" + }, + "nodeType": "YulFunctionCall", + "src": "22455:36:66" + }, + "variables": [ + { + "name": "dstPtr", + "nodeType": "YulTypedName", + "src": "22445:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "22504:10:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22513:1:66", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "22508:1:66", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "22572:163:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nodeType": "YulIdentifier", + "src": "22597:6:66" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "22615:3:66" + }, + { + "name": "srcOffset", + "nodeType": "YulIdentifier", + "src": "22620:9:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22611:3:66" }, - "value": null, - "visibility": "internal" - } + "nodeType": "YulFunctionCall", + "src": "22611:19:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "22605:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "22605:26:66" + } ], - "id": 7426, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "5401:40:35" + "functionName": { + "name": "sstore", + "nodeType": "YulIdentifier", + "src": "22590:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "22590:42:66" + }, + "nodeType": "YulExpressionStatement", + "src": "22590:42:66" }, { - "assignments": [7428], - "declarations": [ - { - "constant": false, - "id": 7428, - "mutability": "mutable", - "name": "metaData", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7510, - "src": "5451:21:35", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 7427, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "5451:5:35", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } + "nodeType": "YulAssignment", + "src": "22649:24:66", + "value": { + "arguments": [ + { + "name": "dstPtr", + "nodeType": "YulIdentifier", + "src": "22663:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22671:1:66", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22659:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "22659:14:66" + }, + "variableNames": [ + { + "name": "dstPtr", + "nodeType": "YulIdentifier", + "src": "22649:6:66" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "22690:31:66", + "value": { + "arguments": [ + { + "name": "srcOffset", + "nodeType": "YulIdentifier", + "src": "22707:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22718:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22703:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "22703:18:66" + }, + "variableNames": [ + { + "name": "srcOffset", + "nodeType": "YulIdentifier", + "src": "22690:9:66" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "22538:1:66" + }, + { + "name": "loopEnd", + "nodeType": "YulIdentifier", + "src": "22541:7:66" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "22535:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "22535:14:66" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "22550:21:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "22552:17:66", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "22561:1:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22564:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22557:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "22557:12:66" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "22552:1:66" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "22531:3:66", + "statements": [] + }, + "src": "22527:208:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "22771:156:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "22789:43:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "22816:3:66" + }, + { + "name": "srcOffset", + "nodeType": "YulIdentifier", + "src": "22821:9:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22812:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "22812:19:66" + } ], - "id": 7429, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "5451:21:35" + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "22806:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "22806:26:66" + }, + "variables": [ + { + "name": "lastValue", + "nodeType": "YulTypedName", + "src": "22793:9:66", + "type": "" + } + ] }, { - "AST": { - "nodeType": "YulBlock", - "src": "5492:1013:35", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "5550:29:35", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5574:4:35", - "type": "", - "value": "0xC4" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "5561:12:35" - }, - "nodeType": "YulFunctionCall", - "src": "5561:18:35" - }, - "variableNames": [ - { - "name": "tokenID", - "nodeType": "YulIdentifier", - "src": "5550:7:35" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "5656:52:35", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5703:4:35", - "type": "", - "value": "0xE4" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "5690:12:35" - }, - "nodeType": "YulFunctionCall", - "src": "5690:18:35" - }, - "variableNames": [ - { - "name": "lenDestinationRecipientAddress", - "nodeType": "YulIdentifier", - "src": "5656:30:35" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "5772:42:35", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5809:4:35", - "type": "", - "value": "0x40" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "5803:5:35" - }, - "nodeType": "YulFunctionCall", - "src": "5803:11:35" - }, - "variableNames": [ - { - "name": "destinationRecipientAddress", - "nodeType": "YulIdentifier", - "src": "5772:27:35" - } - ] - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5873:4:35", - "type": "", - "value": "0x40" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5883:4:35", - "type": "", - "value": "0x20" - }, - { - "arguments": [ - { - "name": "destinationRecipientAddress", - "nodeType": "YulIdentifier", - "src": "5893:27:35" - }, - { - "name": "lenDestinationRecipientAddress", - "nodeType": "YulIdentifier", - "src": "5922:30:35" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "5889:3:35" - }, - "nodeType": "YulFunctionCall", - "src": "5889:64:35" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "5879:3:35" - }, - "nodeType": "YulFunctionCall", - "src": "5879:75:35" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "5866:6:35" - }, - "nodeType": "YulFunctionCall", - "src": "5866:89:35" - }, - "nodeType": "YulExpressionStatement", - "src": "5866:89:35" + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nodeType": "YulIdentifier", + "src": "22856:6:66" + }, + { + "arguments": [ + { + "name": "lastValue", + "nodeType": "YulIdentifier", + "src": "22883:9:66" + }, + { + "arguments": [ + { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "22898:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22906:4:66", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "22894:3:66" }, - { - "expression": { - "arguments": [ - { - "name": "destinationRecipientAddress", - "nodeType": "YulIdentifier", - "src": "6190:27:35" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6277:4:35", - "type": "", - "value": "0xE4" - }, - { - "arguments": [ - { - "arguments": [], - "functionName": { - "name": "calldatasize", - "nodeType": "YulIdentifier", - "src": "6410:12:35" - }, - "nodeType": "YulFunctionCall", - "src": "6410:14:35" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6426:4:35", - "type": "", - "value": "0xE4" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "6406:3:35" - }, - "nodeType": "YulFunctionCall", - "src": "6406:25:35" - } - ], - "functionName": { - "name": "calldatacopy", - "nodeType": "YulIdentifier", - "src": "6160:12:35" - }, - "nodeType": "YulFunctionCall", - "src": "6160:335:35" - }, - "nodeType": "YulExpressionStatement", - "src": "6160:335:35" - } - ] - }, - "evmVersion": "istanbul", - "externalReferences": [ - { - "declaration": 7425, - "isOffset": false, - "isSlot": false, - "src": "5772:27:35", - "valueSize": 1 - }, - { - "declaration": 7425, - "isOffset": false, - "isSlot": false, - "src": "5893:27:35", - "valueSize": 1 - }, - { - "declaration": 7425, - "isOffset": false, - "isSlot": false, - "src": "6190:27:35", - "valueSize": 1 - }, - { - "declaration": 7419, - "isOffset": false, - "isSlot": false, - "src": "5656:30:35", - "valueSize": 1 - }, - { - "declaration": 7419, - "isOffset": false, - "isSlot": false, - "src": "5922:30:35", - "valueSize": 1 + "nodeType": "YulFunctionCall", + "src": "22894:17:66" + } + ], + "functionName": { + "name": "mask_bytes_dynamic", + "nodeType": "YulIdentifier", + "src": "22864:18:66" }, - { - "declaration": 7422, - "isOffset": false, - "isSlot": false, - "src": "5550:7:35", - "valueSize": 1 - } + "nodeType": "YulFunctionCall", + "src": "22864:48:66" + } ], - "id": 7430, - "nodeType": "InlineAssembly", - "src": "5483:1022:35" + "functionName": { + "name": "sstore", + "nodeType": "YulIdentifier", + "src": "22849:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "22849:64:66" + }, + "nodeType": "YulExpressionStatement", + "src": "22849:64:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "loopEnd", + "nodeType": "YulIdentifier", + "src": "22754:7:66" + }, + { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "22763:6:66" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "22751:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "22751:19:66" + }, + "nodeType": "YulIf", + "src": "22748:179:66" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "22947:4:66" }, { - "assignments": [7432], - "declarations": [ + "arguments": [ + { + "arguments": [ { - "constant": false, - "id": 7432, - "mutability": "mutable", - "name": "tokenAddress", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7510, - "src": "6515:20:35", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 7431, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "6515:7:35", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 7436, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 7433, - "name": "_resourceIDToTokenContractAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8039, - "src": "6538:33:35", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", - "typeString": "mapping(bytes32 => address)" - } + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "22961:6:66" }, - "id": 7435, - "indexExpression": { - "argumentTypes": null, - "id": 7434, - "name": "resourceID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7404, - "src": "6572:10:35", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "6538:45:35", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22969:1:66", + "type": "", + "value": "2" } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "22957:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "22957:14:66" }, - "nodeType": "VariableDeclarationStatement", - "src": "6515:68:35" - }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22973:1:66", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22953:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "22953:22:66" + } + ], + "functionName": { + "name": "sstore", + "nodeType": "YulIdentifier", + "src": "22940:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "22940:36:66" + }, + "nodeType": "YulExpressionStatement", + "src": "22940:36:66" + } + ] + }, + "nodeType": "YulCase", + "src": "22369:617:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22374:1:66", + "type": "", + "value": "1" + } + }, + { + "body": { + "nodeType": "YulBlock", + "src": "23003:222:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "23017:14:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23030:1:66", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "23021:5:66", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "23054:67:66", + "statements": [ { - "expression": { - "argumentTypes": null, + "nodeType": "YulAssignment", + "src": "23072:35:66", + "value": { + "arguments": [ + { "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 7438, - "name": "_contractWhitelist", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8047, - "src": "6601:18:35", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 7440, - "indexExpression": { - "argumentTypes": null, - "id": 7439, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7432, - "src": "6620:12:35", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "6601:32:35", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "70726f766964656420746f6b656e41646472657373206973206e6f742077686974656c6973746564", - "id": 7441, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6635:42:35", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_d6f36190bb0602e32e72016fc9d55735c428c14ee06e9999974578d6c009c7ad", - "typeString": "literal_string \"provided tokenAddress is not whitelisted\"" - }, - "value": "provided tokenAddress is not whitelisted" - } + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "23091:3:66" + }, + { + "name": "srcOffset", + "nodeType": "YulIdentifier", + "src": "23096:9:66" + } ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_d6f36190bb0602e32e72016fc9d55735c428c14ee06e9999974578d6c009c7ad", - "typeString": "literal_string \"provided tokenAddress is not whitelisted\"" - } - ], - "id": 7437, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "6593:7:35", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23087:3:66" }, - "id": 7442, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6593:85:35", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } + "nodeType": "YulFunctionCall", + "src": "23087:19:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "23081:5:66" }, - "id": 7443, - "nodeType": "ExpressionStatement", - "src": "6593:85:35" + "nodeType": "YulFunctionCall", + "src": "23081:26:66" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "23072:5:66" + } + ] + } + ] + }, + "condition": { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "23047:6:66" + }, + "nodeType": "YulIf", + "src": "23044:77:66" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "23141:4:66" }, { - "condition": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 7446, - "name": "_INTERFACE_ERC721_METADATA", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7291, - "src": "6796:26:35", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - ], - "expression": { - "argumentTypes": null, - "id": 7444, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7432, - "src": "6765:12:35", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 7445, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "supportsInterface", - "nodeType": "MemberAccess", - "referencedDeclaration": 391, - "src": "6765:30:35", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$bound_to$_t_address_$", - "typeString": "function (address,bytes4) view returns (bool)" - } - }, - "id": 7447, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6765:58:35", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 7465, - "nodeType": "IfStatement", - "src": "6761:199:35", - "trueBody": { - "id": 7464, - "nodeType": "Block", - "src": "6825:135:35", - "statements": [ - { - "assignments": [7449], - "declarations": [ - { - "constant": false, - "id": 7449, - "mutability": "mutable", - "name": "erc721", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7464, - "src": "6839:22:35", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC721Metadata_$2935", - "typeString": "contract IERC721Metadata" - }, - "typeName": { - "contractScope": null, - "id": 7448, - "name": "IERC721Metadata", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2935, - "src": "6839:15:35", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC721Metadata_$2935", - "typeString": "contract IERC721Metadata" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 7453, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 7451, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7432, - "src": "6880:12:35", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 7450, - "name": "IERC721Metadata", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2935, - "src": "6864:15:35", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERC721Metadata_$2935_$", - "typeString": "type(contract IERC721Metadata)" - } - }, - "id": 7452, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6864:29:35", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC721Metadata_$2935", - "typeString": "contract IERC721Metadata" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6839:54:35" - }, - { - "expression": { - "argumentTypes": null, - "id": 7462, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 7454, - "name": "metaData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7428, - "src": "6907:8:35", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 7459, - "name": "tokenID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7422, - "src": "6940:7:35", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 7457, - "name": "erc721", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7449, - "src": "6924:6:35", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC721Metadata_$2935", - "typeString": "contract IERC721Metadata" - } - }, - "id": 7458, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "tokenURI", - "nodeType": "MemberAccess", - "referencedDeclaration": 2934, - "src": "6924:15:35", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_string_memory_ptr_$", - "typeString": "function (uint256) view external returns (string memory)" - } - }, - "id": 7460, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6924:24:35", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "id": 7456, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "6918:5:35", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", - "typeString": "type(bytes storage pointer)" - }, - "typeName": { - "id": 7455, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "6918:5:35", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 7461, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6918:31:35", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "src": "6907:42:35", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 7463, - "nodeType": "ExpressionStatement", - "src": "6907:42:35" - } - ] - } + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "23200:5:66" + }, + { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "23207:6:66" + } + ], + "functionName": { + "name": "extract_used_part_and_set_length_of_short_byte_array", + "nodeType": "YulIdentifier", + "src": "23147:52:66" + }, + "nodeType": "YulFunctionCall", + "src": "23147:67:66" + } + ], + "functionName": { + "name": "sstore", + "nodeType": "YulIdentifier", + "src": "23134:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "23134:81:66" + }, + "nodeType": "YulExpressionStatement", + "src": "23134:81:66" + } + ] + }, + "nodeType": "YulCase", + "src": "22995:230:66", + "value": "default" + } + ], + "expression": { + "arguments": [ + { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "22349:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22357:2:66", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "22346:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "22346:14:66" + }, + "nodeType": "YulSwitch", + "src": "22339:886:66" + } + ] + }, + "name": "copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "slot", + "nodeType": "YulTypedName", + "src": "21920:4:66", + "type": "" + }, + { + "name": "src", + "nodeType": "YulTypedName", + "src": "21926:3:66", + "type": "" + } + ], + "src": "21841:1390:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "23391:288:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "23401:26:66", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23413:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23424:2:66", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23409:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "23409:18:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "23401:4:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "23481:6:66" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23494:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23505:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23490:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "23490:17:66" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "23437:43:66" + }, + "nodeType": "YulFunctionCall", + "src": "23437:71:66" + }, + "nodeType": "YulExpressionStatement", + "src": "23437:71:66" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "23562:6:66" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23575:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23586:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23571:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "23571:18:66" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "23518:43:66" + }, + "nodeType": "YulFunctionCall", + "src": "23518:72:66" + }, + "nodeType": "YulExpressionStatement", + "src": "23518:72:66" + }, + { + "expression": { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "23644:6:66" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23657:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23668:2:66", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23653:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "23653:18:66" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "23600:43:66" + }, + "nodeType": "YulFunctionCall", + "src": "23600:72:66" + }, + "nodeType": "YulExpressionStatement", + "src": "23600:72:66" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "23347:9:66", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "23359:6:66", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "23367:6:66", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "23375:6:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "23386:4:66", + "type": "" + } + ], + "src": "23237:442:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "23791:74:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "23813:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23821:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23809:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "23809:14:66" + }, + { + "hexValue": "73656e646572206d7573742062652062726964676520636f6e7472616374", + "kind": "string", + "nodeType": "YulLiteral", + "src": "23825:32:66", + "type": "", + "value": "sender must be bridge contract" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23802:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "23802:56:66" + }, + "nodeType": "YulExpressionStatement", + "src": "23802:56:66" + } + ] + }, + "name": "store_literal_in_memory_0febc0fc8991eb26dfaaceeb4d73d25b76da338550ed76c60410fec84388058e", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "23783:6:66", + "type": "" + } + ], + "src": "23685:180:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "24017:220:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "24027:74:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "24093:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24098:2:66", + "type": "", + "value": "30" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "24034:58:66" + }, + "nodeType": "YulFunctionCall", + "src": "24034:67:66" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "24027:3:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "24199:3:66" + } + ], + "functionName": { + "name": "store_literal_in_memory_0febc0fc8991eb26dfaaceeb4d73d25b76da338550ed76c60410fec84388058e", + "nodeType": "YulIdentifier", + "src": "24110:88:66" + }, + "nodeType": "YulFunctionCall", + "src": "24110:93:66" + }, + "nodeType": "YulExpressionStatement", + "src": "24110:93:66" + }, + { + "nodeType": "YulAssignment", + "src": "24212:19:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "24223:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24228:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24219:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "24219:12:66" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "24212:3:66" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_0febc0fc8991eb26dfaaceeb4d73d25b76da338550ed76c60410fec84388058e_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "24005:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "24013:3:66", + "type": "" + } + ], + "src": "23871:366:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "24414:248:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "24424:26:66", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24436:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24447:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24432:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "24432:18:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "24424:4:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24471:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24482:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24467:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "24467:17:66" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "24490:4:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24496:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "24486:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "24486:20:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24460:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "24460:47:66" + }, + "nodeType": "YulExpressionStatement", + "src": "24460:47:66" + }, + { + "nodeType": "YulAssignment", + "src": "24516:139:66", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "24650:4:66" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_0febc0fc8991eb26dfaaceeb4d73d25b76da338550ed76c60410fec84388058e_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "24524:124:66" + }, + "nodeType": "YulFunctionCall", + "src": "24524:131:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "24516:4:66" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_0febc0fc8991eb26dfaaceeb4d73d25b76da338550ed76c60410fec84388058e__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "24394:9:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "24409:4:66", + "type": "" + } + ], + "src": "24243:419:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "24774:117:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "24796:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24804:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24792:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "24792:14:66" + }, + { + "hexValue": "70726f766964656420636f6e7472616374206973206e6f742077686974656c69", + "kind": "string", + "nodeType": "YulLiteral", + "src": "24808:34:66", + "type": "", + "value": "provided contract is not whiteli" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24785:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "24785:58:66" + }, + "nodeType": "YulExpressionStatement", + "src": "24785:58:66" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "24864:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24872:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24860:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "24860:15:66" + }, + { + "hexValue": "73746564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "24877:6:66", + "type": "", + "value": "sted" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24853:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "24853:31:66" + }, + "nodeType": "YulExpressionStatement", + "src": "24853:31:66" + } + ] + }, + "name": "store_literal_in_memory_2daab49254b4a5228983fbc316d7992ab0064c3e34fa43dd7fbf9d5c4fe8b0da", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "24766:6:66", + "type": "" + } + ], + "src": "24668:223:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "25043:220:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "25053:74:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "25119:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25124:2:66", + "type": "", + "value": "36" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "25060:58:66" + }, + "nodeType": "YulFunctionCall", + "src": "25060:67:66" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "25053:3:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "25225:3:66" + } + ], + "functionName": { + "name": "store_literal_in_memory_2daab49254b4a5228983fbc316d7992ab0064c3e34fa43dd7fbf9d5c4fe8b0da", + "nodeType": "YulIdentifier", + "src": "25136:88:66" + }, + "nodeType": "YulFunctionCall", + "src": "25136:93:66" + }, + "nodeType": "YulExpressionStatement", + "src": "25136:93:66" + }, + { + "nodeType": "YulAssignment", + "src": "25238:19:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "25249:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25254:2:66", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25245:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "25245:12:66" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "25238:3:66" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_2daab49254b4a5228983fbc316d7992ab0064c3e34fa43dd7fbf9d5c4fe8b0da_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "25031:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "25039:3:66", + "type": "" + } + ], + "src": "24897:366:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "25440:248:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "25450:26:66", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25462:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25473:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25458:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "25458:18:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "25450:4:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25497:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25508:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25493:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "25493:17:66" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "25516:4:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25522:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "25512:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "25512:20:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25486:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "25486:47:66" + }, + "nodeType": "YulExpressionStatement", + "src": "25486:47:66" + }, + { + "nodeType": "YulAssignment", + "src": "25542:139:66", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "25676:4:66" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_2daab49254b4a5228983fbc316d7992ab0064c3e34fa43dd7fbf9d5c4fe8b0da_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "25550:124:66" + }, + "nodeType": "YulFunctionCall", + "src": "25550:131:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "25542:4:66" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_2daab49254b4a5228983fbc316d7992ab0064c3e34fa43dd7fbf9d5c4fe8b0da__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "25420:9:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "25435:4:66", + "type": "" + } + ], + "src": "25269:419:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "25753:40:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "25764:22:66", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "25780:5:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "25774:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "25774:12:66" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "25764:6:66" + } + ] + } + ] + }, + "name": "array_length_t_string_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "25736:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "25746:6:66", + "type": "" + } + ], + "src": "25694:99:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "25891:285:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "25901:53:66", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "25948:5:66" + } + ], + "functionName": { + "name": "array_length_t_string_memory_ptr", + "nodeType": "YulIdentifier", + "src": "25915:32:66" + }, + "nodeType": "YulFunctionCall", + "src": "25915:39:66" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "25905:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "25963:78:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "26029:3:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "26034:6:66" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "25970:58:66" + }, + "nodeType": "YulFunctionCall", + "src": "25970:71:66" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "25963:3:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "26089:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26096:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26085:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "26085:16:66" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "26103:3:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "26108:6:66" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nodeType": "YulIdentifier", + "src": "26050:34:66" + }, + "nodeType": "YulFunctionCall", + "src": "26050:65:66" + }, + "nodeType": "YulExpressionStatement", + "src": "26050:65:66" + }, + { + "nodeType": "YulAssignment", + "src": "26124:46:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "26135:3:66" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "26162:6:66" + } + ], + "functionName": { + "name": "round_up_to_mul_of_32", + "nodeType": "YulIdentifier", + "src": "26140:21:66" + }, + "nodeType": "YulFunctionCall", + "src": "26140:29:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26131:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "26131:39:66" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "26124:3:66" + } + ] + } + ] + }, + "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "25872:5:66", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "25879:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "25887:3:66", + "type": "" + } + ], + "src": "25799:377:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "26356:359:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "26366:26:66", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26378:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26389:2:66", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26374:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "26374:18:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "26366:4:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "26446:6:66" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26459:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26470:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26455:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "26455:17:66" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "26402:43:66" + }, + "nodeType": "YulFunctionCall", + "src": "26402:71:66" + }, + "nodeType": "YulExpressionStatement", + "src": "26402:71:66" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "26527:6:66" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26540:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26551:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26536:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "26536:18:66" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "26483:43:66" + }, + "nodeType": "YulFunctionCall", + "src": "26483:72:66" + }, + "nodeType": "YulExpressionStatement", + "src": "26483:72:66" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26576:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26587:2:66", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26572:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "26572:18:66" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "26596:4:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26602:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "26592:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "26592:20:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26565:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "26565:48:66" + }, + "nodeType": "YulExpressionStatement", + "src": "26565:48:66" + }, + { + "nodeType": "YulAssignment", + "src": "26622:86:66", + "value": { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "26694:6:66" + }, + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "26703:4:66" + } + ], + "functionName": { + "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "26630:63:66" + }, + "nodeType": "YulFunctionCall", + "src": "26630:78:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "26622:4:66" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_address_t_uint256_t_string_memory_ptr__to_t_address_t_uint256_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "26312:9:66", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "26324:6:66", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "26332:6:66", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "26340:6:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "26351:4:66", + "type": "" + } + ], + "src": "26182:533:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "26765:105:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "26775:89:66", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "26790:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26797:66:66", + "type": "", + "value": "0xffffffff00000000000000000000000000000000000000000000000000000000" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "26786:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "26786:78:66" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "26775:7:66" + } + ] + } + ] + }, + "name": "cleanup_t_bytes4", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "26747:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "26757:7:66", + "type": "" + } + ], + "src": "26721:149:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "26939:52:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "26956:3:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "26978:5:66" + } + ], + "functionName": { + "name": "cleanup_t_bytes4", + "nodeType": "YulIdentifier", + "src": "26961:16:66" + }, + "nodeType": "YulFunctionCall", + "src": "26961:23:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26949:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "26949:36:66" + }, + "nodeType": "YulExpressionStatement", + "src": "26949:36:66" + } + ] + }, + "name": "abi_encode_t_bytes4_to_t_bytes4_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "26927:5:66", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "26934:3:66", + "type": "" + } + ], + "src": "26876:115:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "27093:122:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "27103:26:66", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27115:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27126:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27111:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "27111:18:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "27103:4:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "27181:6:66" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27194:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27205:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27190:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "27190:17:66" + } + ], + "functionName": { + "name": "abi_encode_t_bytes4_to_t_bytes4_fromStack", + "nodeType": "YulIdentifier", + "src": "27139:41:66" + }, + "nodeType": "YulFunctionCall", + "src": "27139:69:66" + }, + "nodeType": "YulExpressionStatement", + "src": "27139:69:66" + } + ] + }, + "name": "abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "27065:9:66", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "27077:6:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "27088:4:66", + "type": "" + } + ], + "src": "26997:218:66" + } + ] + }, + "contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_bytes32(value) {\n if iszero(eq(value, cleanup_t_bytes32(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes32(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes32(value)\n }\n\n function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function cleanup_t_uint8(value) -> cleaned {\n cleaned := and(value, 0xff)\n }\n\n function validator_revert_t_uint8(value) {\n if iszero(eq(value, cleanup_t_uint8(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint8(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint8(value)\n }\n\n function cleanup_t_uint64(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffff)\n }\n\n function validator_revert_t_uint64(value) {\n if iszero(eq(value, cleanup_t_uint64(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint64(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint64(value)\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() {\n revert(0, 0)\n }\n\n function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n revert(0, 0)\n }\n\n // bytes\n function abi_decode_t_bytes_calldata_ptr(offset, end) -> arrayPos, length {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n arrayPos := add(offset, 0x20)\n if gt(add(arrayPos, mul(length, 0x01)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n }\n\n function abi_decode_tuple_t_bytes32t_uint8t_uint64t_addresst_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5 {\n if slt(sub(dataEnd, headStart), 160) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint8(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint64(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 128))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value4, value5 := abi_decode_t_bytes_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint8t_uint64(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint8(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint64(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_uint8_to_t_uint8_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint8(value))\n }\n\n function abi_encode_t_bytes32_to_t_bytes32_fromStack(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function array_length_t_bytes_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function copy_memory_to_memory_with_cleanup(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_address_t_uint8_t_uint8_t_bytes32_t_bytes_memory_ptr_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_uint8_t_uint8_t_bytes32_t_bytes_memory_ptr_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart , value7, value6, value5, value4, value3, value2, value1, value0) -> tail {\n tail := add(headStart, 256)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint8_to_t_uint8_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint8_to_t_uint8_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value3, add(headStart, 96))\n\n mstore(add(headStart, 128), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value4, tail)\n\n abi_encode_t_address_to_t_address_fromStack(value5, add(headStart, 160))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value6, add(headStart, 192))\n\n mstore(add(headStart, 224), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value7, tail)\n\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint64t_uint8(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint64(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint8(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_address_to_t_address(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_t_uint8_to_t_uint8(value, pos) {\n mstore(pos, cleanup_t_uint8(value))\n }\n\n function abi_encode_t_bytes32_to_t_bytes32(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_t_uint256_to_t_uint256(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n // struct ERC721Handler.DepositRecord -> struct ERC721Handler.DepositRecord\n function abi_encode_t_struct$_DepositRecord_$2360_memory_ptr_to_t_struct$_DepositRecord_$2360_memory_ptr_fromStack(value, pos) -> end {\n let tail := add(pos, 0x0100)\n\n {\n // _tokenAddress\n\n let memberValue0 := mload(add(value, 0x00))\n abi_encode_t_address_to_t_address(memberValue0, add(pos, 0x00))\n }\n\n {\n // _lenDestinationRecipientAddress\n\n let memberValue0 := mload(add(value, 0x20))\n abi_encode_t_uint8_to_t_uint8(memberValue0, add(pos, 0x20))\n }\n\n {\n // _destinationChainID\n\n let memberValue0 := mload(add(value, 0x40))\n abi_encode_t_uint8_to_t_uint8(memberValue0, add(pos, 0x40))\n }\n\n {\n // _resourceID\n\n let memberValue0 := mload(add(value, 0x60))\n abi_encode_t_bytes32_to_t_bytes32(memberValue0, add(pos, 0x60))\n }\n\n {\n // _destinationRecipientAddress\n\n let memberValue0 := mload(add(value, 0x80))\n\n mstore(add(pos, 0x80), sub(tail, pos))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr(memberValue0, tail)\n\n }\n\n {\n // _depositer\n\n let memberValue0 := mload(add(value, 0xa0))\n abi_encode_t_address_to_t_address(memberValue0, add(pos, 0xa0))\n }\n\n {\n // _tokenID\n\n let memberValue0 := mload(add(value, 0xc0))\n abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0xc0))\n }\n\n {\n // _metaData\n\n let memberValue0 := mload(add(value, 0xe0))\n\n mstore(add(pos, 0xe0), sub(tail, pos))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr(memberValue0, tail)\n\n }\n\n end := tail\n }\n\n function abi_encode_tuple_t_struct$_DepositRecord_$2360_memory_ptr__to_t_struct$_DepositRecord_$2360_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_struct$_DepositRecord_$2360_memory_ptr_to_t_struct$_DepositRecord_$2360_memory_ptr_fromStack(value0, tail)\n\n }\n\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_bytes32t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value1, value2 := abi_decode_t_bytes_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function store_literal_in_memory_d6f36190bb0602e32e72016fc9d55735c428c14ee06e9999974578d6c009c7ad(memPtr) {\n\n mstore(add(memPtr, 0), \"provided tokenAddress is not whi\")\n\n mstore(add(memPtr, 32), \"telisted\")\n\n }\n\n function abi_encode_t_stringliteral_d6f36190bb0602e32e72016fc9d55735c428c14ee06e9999974578d6c009c7ad_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 40)\n store_literal_in_memory_d6f36190bb0602e32e72016fc9d55735c428c14ee06e9999974578d6c009c7ad(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_d6f36190bb0602e32e72016fc9d55735c428c14ee06e9999974578d6c009c7ad__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_d6f36190bb0602e32e72016fc9d55735c428c14ee06e9999974578d6c009c7ad_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() {\n revert(0, 0)\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_string_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := round_up_to_mul_of_32(length)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function abi_decode_available_length_t_string_memory_ptr_fromMemory(src, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_string_memory_ptr(length))\n mstore(array, length)\n let dst := add(array, 0x20)\n if gt(add(src, length), end) { revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() }\n copy_memory_to_memory_with_cleanup(src, dst, length)\n }\n\n // string\n function abi_decode_t_string_memory_ptr_fromMemory(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := mload(offset)\n array := abi_decode_available_length_t_string_memory_ptr_fromMemory(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := mload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0 := abi_decode_t_string_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function array_dataslot_t_bytes_storage(ptr) -> data {\n data := ptr\n\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n\n }\n\n function divide_by_32_ceil(value) -> result {\n result := div(add(value, 31), 32)\n }\n\n function shift_left_dynamic(bits, value) -> newValue {\n newValue :=\n\n shl(bits, value)\n\n }\n\n function update_byte_slice_dynamic32(value, shiftBytes, toInsert) -> result {\n let shiftBits := mul(shiftBytes, 8)\n let mask := shift_left_dynamic(shiftBits, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n toInsert := shift_left_dynamic(shiftBits, toInsert)\n value := and(value, not(mask))\n result := or(value, and(toInsert, mask))\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint256_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_uint256(value)))\n }\n\n function prepare_store_t_uint256(value) -> ret {\n ret := value\n }\n\n function update_storage_value_t_uint256_to_t_uint256(slot, offset, value_0) {\n let convertedValue_0 := convert_t_uint256_to_t_uint256(value_0)\n sstore(slot, update_byte_slice_dynamic32(sload(slot), offset, prepare_store_t_uint256(convertedValue_0)))\n }\n\n function zero_value_for_split_t_uint256() -> ret {\n ret := 0\n }\n\n function storage_set_to_zero_t_uint256(slot, offset) {\n let zero_0 := zero_value_for_split_t_uint256()\n update_storage_value_t_uint256_to_t_uint256(slot, offset, zero_0)\n }\n\n function clear_storage_range_t_bytes1(start, end) {\n for {} lt(start, end) { start := add(start, 1) }\n {\n storage_set_to_zero_t_uint256(start, 0)\n }\n }\n\n function clean_up_bytearray_end_slots_t_bytes_storage(array, len, startIndex) {\n\n if gt(len, 31) {\n let dataArea := array_dataslot_t_bytes_storage(array)\n let deleteStart := add(dataArea, divide_by_32_ceil(startIndex))\n // If we are clearing array to be short byte array, we want to clear only data starting from array data area.\n if lt(startIndex, 32) { deleteStart := dataArea }\n clear_storage_range_t_bytes1(deleteStart, add(dataArea, divide_by_32_ceil(len)))\n }\n\n }\n\n function shift_right_unsigned_dynamic(bits, value) -> newValue {\n newValue :=\n\n shr(bits, value)\n\n }\n\n function mask_bytes_dynamic(data, bytes) -> result {\n let mask := not(shift_right_unsigned_dynamic(mul(8, bytes), not(0)))\n result := and(data, mask)\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used {\n // we want to save only elements that are part of the array after resizing\n // others should be set to zero\n data := mask_bytes_dynamic(data, len)\n used := or(data, mul(2, len))\n }\n function copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage(slot, src) {\n\n let newLen := array_length_t_bytes_memory_ptr(src)\n // Make sure array length is sane\n if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n\n let oldLen := extract_byte_array_length(sload(slot))\n\n // potentially truncate data\n clean_up_bytearray_end_slots_t_bytes_storage(slot, oldLen, newLen)\n\n let srcOffset := 0\n\n srcOffset := 0x20\n\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(0x1f))\n\n let dstPtr := array_dataslot_t_bytes_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, 0x20) } {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, 32)\n }\n if lt(loopEnd, newLen) {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, mask_bytes_dynamic(lastValue, and(newLen, 0x1f)))\n }\n sstore(slot, add(mul(newLen, 2), 1))\n }\n default {\n let value := 0\n if newLen {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n\n function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n }\n\n function store_literal_in_memory_0febc0fc8991eb26dfaaceeb4d73d25b76da338550ed76c60410fec84388058e(memPtr) {\n\n mstore(add(memPtr, 0), \"sender must be bridge contract\")\n\n }\n\n function abi_encode_t_stringliteral_0febc0fc8991eb26dfaaceeb4d73d25b76da338550ed76c60410fec84388058e_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 30)\n store_literal_in_memory_0febc0fc8991eb26dfaaceeb4d73d25b76da338550ed76c60410fec84388058e(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_0febc0fc8991eb26dfaaceeb4d73d25b76da338550ed76c60410fec84388058e__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_0febc0fc8991eb26dfaaceeb4d73d25b76da338550ed76c60410fec84388058e_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_2daab49254b4a5228983fbc316d7992ab0064c3e34fa43dd7fbf9d5c4fe8b0da(memPtr) {\n\n mstore(add(memPtr, 0), \"provided contract is not whiteli\")\n\n mstore(add(memPtr, 32), \"sted\")\n\n }\n\n function abi_encode_t_stringliteral_2daab49254b4a5228983fbc316d7992ab0064c3e34fa43dd7fbf9d5c4fe8b0da_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 36)\n store_literal_in_memory_2daab49254b4a5228983fbc316d7992ab0064c3e34fa43dd7fbf9d5c4fe8b0da(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_2daab49254b4a5228983fbc316d7992ab0064c3e34fa43dd7fbf9d5c4fe8b0da__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_2daab49254b4a5228983fbc316d7992ab0064c3e34fa43dd7fbf9d5c4fe8b0da_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_address_t_uint256_t_string_memory_ptr__to_t_address_t_uint256_t_string_memory_ptr__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n mstore(add(headStart, 64), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value2, tail)\n\n }\n\n function cleanup_t_bytes4(value) -> cleaned {\n cleaned := and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000)\n }\n\n function abi_encode_t_bytes4_to_t_bytes4_fromStack(value, pos) {\n mstore(pos, cleanup_t_bytes4(value))\n }\n\n function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bytes4_to_t_bytes4_fromStack(value0, add(headStart, 0))\n\n }\n\n}\n", + "id": 66, + "language": "Yul", + "name": "#utility.yul" + } + ], + "sourceMap": "483:11448:21:-:0;;;2066:713;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2316:24;:31;2287:18;:25;:60;2279:146;;;;;;;;;;;;:::i;:::-;;;;;;;;;2455:13;2438:14;;:30;;;;;;;;;;;;;;;;;;2486:9;2481:147;2505:18;:25;2501:1;:29;2481:147;;;2552:64;2565:18;2584:1;2565:21;;;;;;;;:::i;:::-;;;;;;;;2588:24;2613:1;2588:27;;;;;;;;:::i;:::-;;;;;;;;2552:12;;;:64;;:::i;:::-;2532:3;;;;;:::i;:::-;;;;2481:147;;;;2645:9;2640:132;2664:25;:32;2660:1;:36;2640:132;;;2718:42;2731:25;2757:1;2731:28;;;;;;;;:::i;:::-;;;;;;;;2718:12;;;:42;;:::i;:::-;2698:3;;;;;:::i;:::-;;;;2640:132;;;;2066:713;;;;483:11448;;2544:287:23;2679:15;2631:33;:45;2665:10;2631:45;;;;;;;;;;;;:63;;;;;;;;;;;;;;;;;;2758:10;2705:33;:50;2739:15;2705:50;;;;;;;;;;;;;;;:63;;;;2819:4;2781:18;:35;2800:15;2781:35;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;2544:287;;:::o;2839:203::-;2914:18;:35;2933:15;2914:35;;;;;;;;;;;;;;;;;;;;;;;;;2906:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;3030:4;3001:9;:26;3011:15;3001:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;2839:203;:::o;7:75:66:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:143::-;753:5;784:6;778:13;769:22;;800:33;827:5;800:33;:::i;:::-;696:143;;;;:::o;845:117::-;954:1;951;944:12;968:102;1009:6;1060:2;1056:7;1051:2;1044:5;1040:14;1036:28;1026:38;;968:102;;;:::o;1076:180::-;1124:77;1121:1;1114:88;1221:4;1218:1;1211:15;1245:4;1242:1;1235:15;1262:281;1345:27;1367:4;1345:27;:::i;:::-;1337:6;1333:40;1475:6;1463:10;1460:22;1439:18;1427:10;1424:34;1421:62;1418:88;;;1486:18;;:::i;:::-;1418:88;1526:10;1522:2;1515:22;1305:238;1262:281;;:::o;1549:129::-;1583:6;1610:20;;:::i;:::-;1600:30;;1639:33;1667:4;1659:6;1639:33;:::i;:::-;1549:129;;;:::o;1684:311::-;1761:4;1851:18;1843:6;1840:30;1837:56;;;1873:18;;:::i;:::-;1837:56;1923:4;1915:6;1911:17;1903:25;;1983:4;1977;1973:15;1965:23;;1684:311;;;:::o;2001:117::-;2110:1;2107;2100:12;2124:77;2161:7;2190:5;2179:16;;2124:77;;;:::o;2207:122::-;2280:24;2298:5;2280:24;:::i;:::-;2273:5;2270:35;2260:63;;2319:1;2316;2309:12;2260:63;2207:122;:::o;2335:143::-;2392:5;2423:6;2417:13;2408:22;;2439:33;2466:5;2439:33;:::i;:::-;2335:143;;;;:::o;2501:732::-;2608:5;2633:81;2649:64;2706:6;2649:64;:::i;:::-;2633:81;:::i;:::-;2624:90;;2734:5;2763:6;2756:5;2749:21;2797:4;2790:5;2786:16;2779:23;;2850:4;2842:6;2838:17;2830:6;2826:30;2879:3;2871:6;2868:15;2865:122;;;2898:79;;:::i;:::-;2865:122;3013:6;2996:231;3030:6;3025:3;3022:15;2996:231;;;3105:3;3134:48;3178:3;3166:10;3134:48;:::i;:::-;3129:3;3122:61;3212:4;3207:3;3203:14;3196:21;;3072:155;3056:4;3051:3;3047:14;3040:21;;2996:231;;;3000:21;2614:619;;2501:732;;;;;:::o;3256:385::-;3338:5;3387:3;3380:4;3372:6;3368:17;3364:27;3354:122;;3395:79;;:::i;:::-;3354:122;3505:6;3499:13;3530:105;3631:3;3623:6;3616:4;3608:6;3604:17;3530:105;:::i;:::-;3521:114;;3344:297;3256:385;;;;:::o;3647:311::-;3724:4;3814:18;3806:6;3803:30;3800:56;;;3836:18;;:::i;:::-;3800:56;3886:4;3878:6;3874:17;3866:25;;3946:4;3940;3936:15;3928:23;;3647:311;;;:::o;3981:732::-;4088:5;4113:81;4129:64;4186:6;4129:64;:::i;:::-;4113:81;:::i;:::-;4104:90;;4214:5;4243:6;4236:5;4229:21;4277:4;4270:5;4266:16;4259:23;;4330:4;4322:6;4318:17;4310:6;4306:30;4359:3;4351:6;4348:15;4345:122;;;4378:79;;:::i;:::-;4345:122;4493:6;4476:231;4510:6;4505:3;4502:15;4476:231;;;4585:3;4614:48;4658:3;4646:10;4614:48;:::i;:::-;4609:3;4602:61;4692:4;4687:3;4683:14;4676:21;;4552:155;4536:4;4531:3;4527:14;4520:21;;4476:231;;;4480:21;4094:619;;3981:732;;;;;:::o;4736:385::-;4818:5;4867:3;4860:4;4852:6;4848:17;4844:27;4834:122;;4875:79;;:::i;:::-;4834:122;4985:6;4979:13;5010:105;5111:3;5103:6;5096:4;5088:6;5084:17;5010:105;:::i;:::-;5001:114;;4824:297;4736:385;;;;:::o;5127:1429::-;5299:6;5307;5315;5323;5372:3;5360:9;5351:7;5347:23;5343:33;5340:120;;;5379:79;;:::i;:::-;5340:120;5499:1;5524:64;5580:7;5571:6;5560:9;5556:22;5524:64;:::i;:::-;5514:74;;5470:128;5658:2;5647:9;5643:18;5637:25;5689:18;5681:6;5678:30;5675:117;;;5711:79;;:::i;:::-;5675:117;5816:89;5897:7;5888:6;5877:9;5873:22;5816:89;:::i;:::-;5806:99;;5608:307;5975:2;5964:9;5960:18;5954:25;6006:18;5998:6;5995:30;5992:117;;;6028:79;;:::i;:::-;5992:117;6133:89;6214:7;6205:6;6194:9;6190:22;6133:89;:::i;:::-;6123:99;;5925:307;6292:2;6281:9;6277:18;6271:25;6323:18;6315:6;6312:30;6309:117;;;6345:79;;:::i;:::-;6309:117;6450:89;6531:7;6522:6;6511:9;6507:22;6450:89;:::i;:::-;6440:99;;6242:307;5127:1429;;;;;;;:::o;6562:169::-;6646:11;6680:6;6675:3;6668:19;6720:4;6715:3;6711:14;6696:29;;6562:169;;;;:::o;6737:247::-;6877:34;6873:1;6865:6;6861:14;6854:58;6946:30;6941:2;6933:6;6929:15;6922:55;6737:247;:::o;6990:366::-;7132:3;7153:67;7217:2;7212:3;7153:67;:::i;:::-;7146:74;;7229:93;7318:3;7229:93;:::i;:::-;7347:2;7342:3;7338:12;7331:19;;6990:366;;;:::o;7362:419::-;7528:4;7566:2;7555:9;7551:18;7543:26;;7615:9;7609:4;7605:20;7601:1;7590:9;7586:17;7579:47;7643:131;7769:4;7643:131;:::i;:::-;7635:139;;7362:419;;;:::o;7787:180::-;7835:77;7832:1;7825:88;7932:4;7929:1;7922:15;7956:4;7953:1;7946:15;7973:180;8021:77;8018:1;8011:88;8118:4;8115:1;8108:15;8142:4;8139:1;8132:15;8159:77;8196:7;8225:5;8214:16;;8159:77;;;:::o;8242:233::-;8281:3;8304:24;8322:5;8304:24;:::i;:::-;8295:33;;8350:66;8343:5;8340:77;8337:103;;8420:18;;:::i;:::-;8337:103;8467:1;8460:5;8456:13;8449:20;;8242:233;;;:::o;8481:223::-;8621:34;8617:1;8609:6;8605:14;8598:58;8690:6;8685:2;8677:6;8673:15;8666:31;8481:223;:::o;8710:366::-;8852:3;8873:67;8937:2;8932:3;8873:67;:::i;:::-;8866:74;;8949:93;9038:3;8949:93;:::i;:::-;9067:2;9062:3;9058:12;9051:19;;8710:366;;;:::o;9082:419::-;9248:4;9286:2;9275:9;9271:18;9263:26;;9335:9;9329:4;9325:20;9321:1;9310:9;9306:17;9299:47;9363:131;9489:4;9363:131;:::i;:::-;9355:139;;9082:419;;;:::o;483:11448:21:-;;;;;;;", + "deployedSourceMap": "483:11448:21:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1988:122:23;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;402:69;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;319:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5079:2514:21;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1030:75;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;758:42:23;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;586:196:4;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;652:51:23;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1582:157;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3610:169:21;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;525:69:23;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11745:183:21;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8613:2855;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1988:122:23;842:13;:11;:13::i;:::-;2073:29:::1;2086:15;2073:12;:29::i;:::-;1988:122:::0;:::o;402:69::-;;;;;;;;;;;;;;;;;;;;;;:::o;319:29::-;;;;;;;;;;;;:::o;5079:2514:21:-;842:13:23;:11;:13::i;:::-;5373:43:21::1;5427:20:::0;5458:40:::1;5509:21:::0;5637:4:::1;5624:18;5613:29;;5769:4;5756:18;5722:52;;5877:4;5871:11;5840:42;;5992:30;5963:27;5959:64;5953:4;5949:75;5943:4;5936:89;6504:4;6488:14;6484:25;6354:4;6266:27;6235:339;6597:20;6620:33;:45;6654:10;6620:45;;;;;;;;;;;;;;;;;;;;;6597:68;;6684:18;:32;6703:12;6684:32;;;;;;;;;;;;;;;;;;;;;;;;;6676:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6851:58;653:10;6882:26;;6851:12;:30;;;;:58;;;;:::i;:::-;6847:202;;;6926:22;6967:12;6926:54;;7012:6;:15;;;7028:7;7012:24;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6995:42;;6911:138;6847:202;7065:9;:23;7075:12;7065:23;;;;;;;;;;;;;;;;;;;;;;;;;7061:181;;;7105:33;7116:12;7130:7;7105:10;:33::i;:::-;7061:181;;;7171:59;7182:12;7196:9;7215:4;7222:7;7171:10;:59::i;:::-;7061:181;7306:279;;;;;;;;7334:12;7306:279;;;;;;7367:30;7306:279;;;;;;7419:18;7306:279;;;;;;7453:10;7306:279;;;;7478:27;7306:279;;;;7520:9;7306:279;;;;;;7544:7;7306:279;;;;7566:8;7306:279;;::::0;7254:15:::1;:35;7270:18;7254:35;;;;;;;;;;;;;;;:49;7290:12;7254:49;;;;;;;;;;;;;;;:331;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;5362:2231;;;;;5079:2514:::0;;;;;;:::o;1030:75::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;758:42:23:-;;;;;;;;;;;;;;;;;;;;;;:::o;586:196:4:-;675:14;700:12;675:38;;724:6;:19;;;744:5;759:4;766:7;724:50;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;664:118;586:196;;;:::o;652:51:23:-;;;;;;;;;;;;;;;;;;;;;;:::o;1582:157::-;842:13;:11;:13::i;:::-;1690:41:::1;1703:10;1715:15;1690:12;:41::i;:::-;1582:157:::0;;:::o;3610:169:21:-;3694:20;;:::i;:::-;3734:15;:23;3750:6;3734:23;;;;;;;;;;;;;;;:37;3758:12;3734:37;;;;;;;;;;;;;;;3727:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3610:169;;;;:::o;525:69:23:-;;;;;;;;;;;;;;;;;:::o;11745:183:21:-;842:13:23;:11;:13::i;:::-;11858:62:21::1;11872:12;11894:4;11901:9;11912:7;11858:13;:62::i;:::-;11745:183:::0;;;:::o;8613:2855::-;842:13:23;:11;:13::i;:::-;8719:23:21::1;8753:43;8807:24:::0;8895:4:::1;8882:18;8868:32;;9013:4;9007:11;8969:49;;9124:4;9111:18;9379:30;9373:4;9369:41;9356:55;9483:30;9454:27;9450:64;9444:4;9440:75;9434:4;9427:89;9900:7;9894:4;9890:18;9884:4;9880:29;9864:14;9860:50;9705:4;9592:27;9561:437;10136:4;10130:11;10118:23;;10243:7;10233:8;10229:22;10223:4;10219:33;10213:4;10206:47;10396:30;10390:4;10386:41;10795:11;10779:14;10775:32;10667:11;10594:8;10563:303;8853:2024;;;10889:24;11009:4;10980:27;10976:38;10970:45;10950:65;;11038:20;11061:33;:45;11095:10;11061:45;;;;;;;;;;;;;;;;;;;;;11038:68;;11125:18;:41;11152:12;11125:41;;;;;;;;;;;;;;;;;;;;;;;;;11117:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;11228:9;:23;11238:12;11228:23;;;;;;;;;;;;;;;;;;;;;;;;;11224:237;;;11268:70;11279:12;11301:16;11293:25;;11320:7;11329:8;11268:10;:70::i;:::-;11224:237;;;11371:78;11385:12;11407:4;11422:16;11414:25;;11441:7;11371:13;:78::i;:::-;11224:237;8708:2760;;;;;8613:2855:::0;;;:::o;883:126:23:-;952:14;;;;;;;;;;938:28;;:10;:28;;;930:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;883:126::o;2839:203::-;2914:18;:35;2933:15;2914:35;;;;;;;;;;;;;;;;;;;;;;;;;2906:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;3030:4;3001:9;:26;3011:15;3001:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;2839:203;:::o;1349:282:43:-;1436:4;1543:23;1558:7;1543:14;:23::i;:::-;:81;;;;;1570:54;1603:7;1612:11;1570:32;:54::i;:::-;1543:81;1536:88;;1349:282;;;;:::o;2531:190:4:-;2610:31;2669:12;2610:72;;2693:6;:11;;;2705:7;2693:20;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2599:122;2531:190;;:::o;1086:215::-;1196:14;1221:12;1196:38;;1245:6;:19;;;1265:5;1272:9;1283:7;1245:46;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1185:116;1086:215;;;;:::o;2544:287:23:-;2679:15;2631:33;:45;2665:10;2631:45;;;;;;;;;;;;:63;;;;;;;;;;;;;;;;;;2758:10;2705:33;:50;2739:15;2705:50;;;;;;;;;;;;;;;:63;;;;2819:4;2781:18;:35;2800:15;2781:35;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;2544:287;;:::o;1604:219:4:-;1720:14;1745:12;1720:38;;1769:6;:19;;;1789:5;1796:9;1807:7;1769:46;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1709:114;1604:219;;;;:::o;2112:253::-;2229:31;2288:12;2229:72;;2312:6;:11;;;2324:9;2335:7;2351:4;2312:45;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2218:147;2112:253;;;;:::o;704:427:43:-;768:4;975:68;1008:7;1017:25;975:32;:68::i;:::-;:149;;;;;1060:64;1093:7;599:10;1102:21;;1060:32;:64::i;:::-;1059:65;975:149;956:168;;704:427;;;:::o;4421:647::-;4523:4;4563:26;4615:34;;;4651:11;4592:71;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4563:100;;4705:12;4727:18;4755:19;4899:4;4893;4877:13;4871:20;4864:4;4849:13;4845:24;4836:7;4829:5;4818:86;4807:97;;4931:16;4917:30;;4981:4;4975:11;4960:26;;5013:7;:29;;;;;5038:4;5024:10;:18;;5013:29;:48;;;;;5060:1;5046:11;:15;5013:48;5006:55;;;;;;4421:647;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:75:66:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:329::-;900:6;949:2;937:9;928:7;924:23;920:32;917:119;;;955:79;;:::i;:::-;917:119;1075:1;1100:53;1145:7;1136:6;1125:9;1121:22;1100:53;:::i;:::-;1090:63;;1046:117;841:329;;;;:::o;1176:77::-;1213:7;1242:5;1231:16;;1176:77;;;:::o;1259:122::-;1332:24;1350:5;1332:24;:::i;:::-;1325:5;1322:35;1312:63;;1371:1;1368;1361:12;1312:63;1259:122;:::o;1387:139::-;1433:5;1471:6;1458:20;1449:29;;1487:33;1514:5;1487:33;:::i;:::-;1387:139;;;;:::o;1532:329::-;1591:6;1640:2;1628:9;1619:7;1615:23;1611:32;1608:119;;;1646:79;;:::i;:::-;1608:119;1766:1;1791:53;1836:7;1827:6;1816:9;1812:22;1791:53;:::i;:::-;1781:63;;1737:117;1532:329;;;;:::o;1867:118::-;1954:24;1972:5;1954:24;:::i;:::-;1949:3;1942:37;1867:118;;:::o;1991:222::-;2084:4;2122:2;2111:9;2107:18;2099:26;;2135:71;2203:1;2192:9;2188:17;2179:6;2135:71;:::i;:::-;1991:222;;;;:::o;2219:86::-;2254:7;2294:4;2287:5;2283:16;2272:27;;2219:86;;;:::o;2311:118::-;2382:22;2398:5;2382:22;:::i;:::-;2375:5;2372:33;2362:61;;2419:1;2416;2409:12;2362:61;2311:118;:::o;2435:135::-;2479:5;2517:6;2504:20;2495:29;;2533:31;2558:5;2533:31;:::i;:::-;2435:135;;;;:::o;2576:101::-;2612:7;2652:18;2645:5;2641:30;2630:41;;2576:101;;;:::o;2683:120::-;2755:23;2772:5;2755:23;:::i;:::-;2748:5;2745:34;2735:62;;2793:1;2790;2783:12;2735:62;2683:120;:::o;2809:137::-;2854:5;2892:6;2879:20;2870:29;;2908:32;2934:5;2908:32;:::i;:::-;2809:137;;;;:::o;2952:117::-;3061:1;3058;3051:12;3075:117;3184:1;3181;3174:12;3198:117;3307:1;3304;3297:12;3334:552;3391:8;3401:6;3451:3;3444:4;3436:6;3432:17;3428:27;3418:122;;3459:79;;:::i;:::-;3418:122;3572:6;3559:20;3549:30;;3602:18;3594:6;3591:30;3588:117;;;3624:79;;:::i;:::-;3588:117;3738:4;3730:6;3726:17;3714:29;;3792:3;3784:4;3776:6;3772:17;3762:8;3758:32;3755:41;3752:128;;;3799:79;;:::i;:::-;3752:128;3334:552;;;;;:::o;3892:1103::-;3995:6;4003;4011;4019;4027;4035;4084:3;4072:9;4063:7;4059:23;4055:33;4052:120;;;4091:79;;:::i;:::-;4052:120;4211:1;4236:53;4281:7;4272:6;4261:9;4257:22;4236:53;:::i;:::-;4226:63;;4182:117;4338:2;4364:51;4407:7;4398:6;4387:9;4383:22;4364:51;:::i;:::-;4354:61;;4309:116;4464:2;4490:52;4534:7;4525:6;4514:9;4510:22;4490:52;:::i;:::-;4480:62;;4435:117;4591:2;4617:53;4662:7;4653:6;4642:9;4638:22;4617:53;:::i;:::-;4607:63;;4562:118;4747:3;4736:9;4732:19;4719:33;4779:18;4771:6;4768:30;4765:117;;;4801:79;;:::i;:::-;4765:117;4914:64;4970:7;4961:6;4950:9;4946:22;4914:64;:::i;:::-;4896:82;;;;4690:298;3892:1103;;;;;;;;:::o;5001:468::-;5066:6;5074;5123:2;5111:9;5102:7;5098:23;5094:32;5091:119;;;5129:79;;:::i;:::-;5091:119;5249:1;5274:51;5317:7;5308:6;5297:9;5293:22;5274:51;:::i;:::-;5264:61;;5220:115;5374:2;5400:52;5444:7;5435:6;5424:9;5420:22;5400:52;:::i;:::-;5390:62;;5345:117;5001:468;;;;;:::o;5475:112::-;5558:22;5574:5;5558:22;:::i;:::-;5553:3;5546:35;5475:112;;:::o;5593:118::-;5680:24;5698:5;5680:24;:::i;:::-;5675:3;5668:37;5593:118;;:::o;5717:98::-;5768:6;5802:5;5796:12;5786:22;;5717:98;;;:::o;5821:168::-;5904:11;5938:6;5933:3;5926:19;5978:4;5973:3;5969:14;5954:29;;5821:168;;;;:::o;5995:246::-;6076:1;6086:113;6100:6;6097:1;6094:13;6086:113;;;6185:1;6180:3;6176:11;6170:18;6166:1;6161:3;6157:11;6150:39;6122:2;6119:1;6115:10;6110:15;;6086:113;;;6233:1;6224:6;6219:3;6215:16;6208:27;6057:184;5995:246;;;:::o;6247:102::-;6288:6;6339:2;6335:7;6330:2;6323:5;6319:14;6315:28;6305:38;;6247:102;;;:::o;6355:373::-;6441:3;6469:38;6501:5;6469:38;:::i;:::-;6523:70;6586:6;6581:3;6523:70;:::i;:::-;6516:77;;6602:65;6660:6;6655:3;6648:4;6641:5;6637:16;6602:65;:::i;:::-;6692:29;6714:6;6692:29;:::i;:::-;6687:3;6683:39;6676:46;;6445:283;6355:373;;;;:::o;6734:77::-;6771:7;6800:5;6789:16;;6734:77;;;:::o;6817:118::-;6904:24;6922:5;6904:24;:::i;:::-;6899:3;6892:37;6817:118;;:::o;6941:1155::-;7258:4;7296:3;7285:9;7281:19;7273:27;;7310:71;7378:1;7367:9;7363:17;7354:6;7310:71;:::i;:::-;7391:68;7455:2;7444:9;7440:18;7431:6;7391:68;:::i;:::-;7469;7533:2;7522:9;7518:18;7509:6;7469:68;:::i;:::-;7547:72;7615:2;7604:9;7600:18;7591:6;7547:72;:::i;:::-;7667:9;7661:4;7657:20;7651:3;7640:9;7636:19;7629:49;7695:76;7766:4;7757:6;7695:76;:::i;:::-;7687:84;;7781:73;7849:3;7838:9;7834:19;7825:6;7781:73;:::i;:::-;7864;7932:3;7921:9;7917:19;7908:6;7864:73;:::i;:::-;7985:9;7979:4;7975:20;7969:3;7958:9;7954:19;7947:49;8013:76;8084:4;8075:6;8013:76;:::i;:::-;8005:84;;6941:1155;;;;;;;;;;;:::o;8102:90::-;8136:7;8179:5;8172:13;8165:21;8154:32;;8102:90;;;:::o;8198:109::-;8279:21;8294:5;8279:21;:::i;:::-;8274:3;8267:34;8198:109;;:::o;8313:210::-;8400:4;8438:2;8427:9;8423:18;8415:26;;8451:65;8513:1;8502:9;8498:17;8489:6;8451:65;:::i;:::-;8313:210;;;;:::o;8529:122::-;8602:24;8620:5;8602:24;:::i;:::-;8595:5;8592:35;8582:63;;8641:1;8638;8631:12;8582:63;8529:122;:::o;8657:139::-;8703:5;8741:6;8728:20;8719:29;;8757:33;8784:5;8757:33;:::i;:::-;8657:139;;;;:::o;8802:619::-;8879:6;8887;8895;8944:2;8932:9;8923:7;8919:23;8915:32;8912:119;;;8950:79;;:::i;:::-;8912:119;9070:1;9095:53;9140:7;9131:6;9120:9;9116:22;9095:53;:::i;:::-;9085:63;;9041:117;9197:2;9223:53;9268:7;9259:6;9248:9;9244:22;9223:53;:::i;:::-;9213:63;;9168:118;9325:2;9351:53;9396:7;9387:6;9376:9;9372:22;9351:53;:::i;:::-;9341:63;;9296:118;8802:619;;;;;:::o;9427:474::-;9495:6;9503;9552:2;9540:9;9531:7;9527:23;9523:32;9520:119;;;9558:79;;:::i;:::-;9520:119;9678:1;9703:53;9748:7;9739:6;9728:9;9724:22;9703:53;:::i;:::-;9693:63;;9649:117;9805:2;9831:53;9876:7;9867:6;9856:9;9852:22;9831:53;:::i;:::-;9821:63;;9776:118;9427:474;;;;;:::o;9907:468::-;9972:6;9980;10029:2;10017:9;10008:7;10004:23;10000:32;9997:119;;;10035:79;;:::i;:::-;9997:119;10155:1;10180:52;10224:7;10215:6;10204:9;10200:22;10180:52;:::i;:::-;10170:62;;10126:116;10281:2;10307:51;10350:7;10341:6;10330:9;10326:22;10307:51;:::i;:::-;10297:61;;10252:116;9907:468;;;;;:::o;10381:108::-;10458:24;10476:5;10458:24;:::i;:::-;10453:3;10446:37;10381:108;;:::o;10495:102::-;10568:22;10584:5;10568:22;:::i;:::-;10563:3;10556:35;10495:102;;:::o;10603:108::-;10680:24;10698:5;10680:24;:::i;:::-;10675:3;10668:37;10603:108;;:::o;10717:158::-;10790:11;10824:6;10819:3;10812:19;10864:4;10859:3;10855:14;10840:29;;10717:158;;;;:::o;10881:353::-;10957:3;10985:38;11017:5;10985:38;:::i;:::-;11039:60;11092:6;11087:3;11039:60;:::i;:::-;11032:67;;11108:65;11166:6;11161:3;11154:4;11147:5;11143:16;11108:65;:::i;:::-;11198:29;11220:6;11198:29;:::i;:::-;11193:3;11189:39;11182:46;;10961:273;10881:353;;;;:::o;11240:108::-;11317:24;11335:5;11317:24;:::i;:::-;11312:3;11305:37;11240:108;;:::o;11434:1820::-;11565:3;11601:6;11596:3;11592:16;11699:4;11692:5;11688:16;11682:23;11718:63;11775:4;11770:3;11766:14;11752:12;11718:63;:::i;:::-;11618:173;11900:4;11893:5;11889:16;11883:23;11919:59;11972:4;11967:3;11963:14;11949:12;11919:59;:::i;:::-;11801:187;12085:4;12078:5;12074:16;12068:23;12104:59;12157:4;12152:3;12148:14;12134:12;12104:59;:::i;:::-;11998:175;12262:4;12255:5;12251:16;12245:23;12281:63;12338:4;12333:3;12329:14;12315:12;12281:63;:::i;:::-;12183:171;12460:4;12453:5;12449:16;12443:23;12513:3;12507:4;12503:14;12496:4;12491:3;12487:14;12480:38;12539:71;12605:4;12591:12;12539:71;:::i;:::-;12531:79;;12364:257;12709:4;12702:5;12698:16;12692:23;12728:63;12785:4;12780:3;12776:14;12762:12;12728:63;:::i;:::-;12631:170;12887:4;12880:5;12876:16;12870:23;12906:63;12963:4;12958:3;12954:14;12940:12;12906:63;:::i;:::-;12811:168;13066:4;13059:5;13055:16;13049:23;13119:3;13113:4;13109:14;13102:4;13097:3;13093:14;13086:38;13145:71;13211:4;13197:12;13145:71;:::i;:::-;13137:79;;12989:238;13244:4;13237:11;;11570:1684;11434:1820;;;;:::o;13260:397::-;13415:4;13453:2;13442:9;13438:18;13430:26;;13502:9;13496:4;13492:20;13488:1;13477:9;13473:17;13466:47;13530:120;13645:4;13636:6;13530:120;:::i;:::-;13522:128;;13260:397;;;;:::o;13663:222::-;13756:4;13794:2;13783:9;13779:18;13771:26;;13807:71;13875:1;13864:9;13860:17;13851:6;13807:71;:::i;:::-;13663:222;;;;:::o;13891:672::-;13970:6;13978;13986;14035:2;14023:9;14014:7;14010:23;14006:32;14003:119;;;14041:79;;:::i;:::-;14003:119;14161:1;14186:53;14231:7;14222:6;14211:9;14207:22;14186:53;:::i;:::-;14176:63;;14132:117;14316:2;14305:9;14301:18;14288:32;14347:18;14339:6;14336:30;14333:117;;;14369:79;;:::i;:::-;14333:117;14482:64;14538:7;14529:6;14518:9;14514:22;14482:64;:::i;:::-;14464:82;;;;14259:297;13891:672;;;;;:::o;14569:169::-;14653:11;14687:6;14682:3;14675:19;14727:4;14722:3;14718:14;14703:29;;14569:169;;;;:::o;14744:227::-;14884:34;14880:1;14872:6;14868:14;14861:58;14953:10;14948:2;14940:6;14936:15;14929:35;14744:227;:::o;14977:366::-;15119:3;15140:67;15204:2;15199:3;15140:67;:::i;:::-;15133:74;;15216:93;15305:3;15216:93;:::i;:::-;15334:2;15329:3;15325:12;15318:19;;14977:366;;;:::o;15349:419::-;15515:4;15553:2;15542:9;15538:18;15530:26;;15602:9;15596:4;15592:20;15588:1;15577:9;15573:17;15566:47;15630:131;15756:4;15630:131;:::i;:::-;15622:139;;15349:419;;;:::o;15774:222::-;15867:4;15905:2;15894:9;15890:18;15882:26;;15918:71;15986:1;15975:9;15971:17;15962:6;15918:71;:::i;:::-;15774:222;;;;:::o;16002:117::-;16111:1;16108;16101:12;16125:180;16173:77;16170:1;16163:88;16270:4;16267:1;16260:15;16294:4;16291:1;16284:15;16311:281;16394:27;16416:4;16394:27;:::i;:::-;16386:6;16382:40;16524:6;16512:10;16509:22;16488:18;16476:10;16473:34;16470:62;16467:88;;;16535:18;;:::i;:::-;16467:88;16575:10;16571:2;16564:22;16354:238;16311:281;;:::o;16598:129::-;16632:6;16659:20;;:::i;:::-;16649:30;;16688:33;16716:4;16708:6;16688:33;:::i;:::-;16598:129;;;:::o;16733:308::-;16795:4;16885:18;16877:6;16874:30;16871:56;;;16907:18;;:::i;:::-;16871:56;16945:29;16967:6;16945:29;:::i;:::-;16937:37;;17029:4;17023;17019:15;17011:23;;16733:308;;;:::o;17047:434::-;17136:5;17161:66;17177:49;17219:6;17177:49;:::i;:::-;17161:66;:::i;:::-;17152:75;;17250:6;17243:5;17236:21;17288:4;17281:5;17277:16;17326:3;17317:6;17312:3;17308:16;17305:25;17302:112;;;17333:79;;:::i;:::-;17302:112;17423:52;17468:6;17463:3;17458;17423:52;:::i;:::-;17142:339;17047:434;;;;;:::o;17501:355::-;17568:5;17617:3;17610:4;17602:6;17598:17;17594:27;17584:122;;17625:79;;:::i;:::-;17584:122;17735:6;17729:13;17760:90;17846:3;17838:6;17831:4;17823:6;17819:17;17760:90;:::i;:::-;17751:99;;17574:282;17501:355;;;;:::o;17862:524::-;17942:6;17991:2;17979:9;17970:7;17966:23;17962:32;17959:119;;;17997:79;;:::i;:::-;17959:119;18138:1;18127:9;18123:17;18117:24;18168:18;18160:6;18157:30;18154:117;;;18190:79;;:::i;:::-;18154:117;18295:74;18361:7;18352:6;18341:9;18337:22;18295:74;:::i;:::-;18285:84;;18088:291;17862:524;;;;:::o;18392:180::-;18440:77;18437:1;18430:88;18537:4;18534:1;18527:15;18561:4;18558:1;18551:15;18578:320;18622:6;18659:1;18653:4;18649:12;18639:22;;18706:1;18700:4;18696:12;18727:18;18717:81;;18783:4;18775:6;18771:17;18761:27;;18717:81;18845:2;18837:6;18834:14;18814:18;18811:38;18808:84;;18864:18;;:::i;:::-;18808:84;18629:269;18578:320;;;:::o;18904:140::-;18952:4;18975:3;18967:11;;18998:3;18995:1;18988:14;19032:4;19029:1;19019:18;19011:26;;18904:140;;;:::o;19050:93::-;19087:6;19134:2;19129;19122:5;19118:14;19114:23;19104:33;;19050:93;;;:::o;19149:107::-;19193:8;19243:5;19237:4;19233:16;19212:37;;19149:107;;;;:::o;19262:393::-;19331:6;19381:1;19369:10;19365:18;19404:97;19434:66;19423:9;19404:97;:::i;:::-;19522:39;19552:8;19541:9;19522:39;:::i;:::-;19510:51;;19594:4;19590:9;19583:5;19579:21;19570:30;;19643:4;19633:8;19629:19;19622:5;19619:30;19609:40;;19338:317;;19262:393;;;;;:::o;19661:60::-;19689:3;19710:5;19703:12;;19661:60;;;:::o;19727:142::-;19777:9;19810:53;19828:34;19837:24;19855:5;19837:24;:::i;:::-;19828:34;:::i;:::-;19810:53;:::i;:::-;19797:66;;19727:142;;;:::o;19875:75::-;19918:3;19939:5;19932:12;;19875:75;;;:::o;19956:269::-;20066:39;20097:7;20066:39;:::i;:::-;20127:91;20176:41;20200:16;20176:41;:::i;:::-;20168:6;20161:4;20155:11;20127:91;:::i;:::-;20121:4;20114:105;20032:193;19956:269;;;:::o;20231:73::-;20276:3;20231:73;:::o;20310:189::-;20387:32;;:::i;:::-;20428:65;20486:6;20478;20472:4;20428:65;:::i;:::-;20363:136;20310:189;;:::o;20505:186::-;20565:120;20582:3;20575:5;20572:14;20565:120;;;20636:39;20673:1;20666:5;20636:39;:::i;:::-;20609:1;20602:5;20598:13;20589:22;;20565:120;;;20505:186;;:::o;20697:541::-;20797:2;20792:3;20789:11;20786:445;;;20831:37;20862:5;20831:37;:::i;:::-;20914:29;20932:10;20914:29;:::i;:::-;20904:8;20900:44;21097:2;21085:10;21082:18;21079:49;;;21118:8;21103:23;;21079:49;21141:80;21197:22;21215:3;21197:22;:::i;:::-;21187:8;21183:37;21170:11;21141:80;:::i;:::-;20801:430;;20786:445;20697:541;;;:::o;21244:117::-;21298:8;21348:5;21342:4;21338:16;21317:37;;21244:117;;;;:::o;21367:169::-;21411:6;21444:51;21492:1;21488:6;21480:5;21477:1;21473:13;21444:51;:::i;:::-;21440:56;21525:4;21519;21515:15;21505:25;;21418:118;21367:169;;;;:::o;21541:295::-;21617:4;21763:29;21788:3;21782:4;21763:29;:::i;:::-;21755:37;;21825:3;21822:1;21818:11;21812:4;21809:21;21801:29;;21541:295;;;;:::o;21841:1390::-;21956:36;21988:3;21956:36;:::i;:::-;22057:18;22049:6;22046:30;22043:56;;;22079:18;;:::i;:::-;22043:56;22123:38;22155:4;22149:11;22123:38;:::i;:::-;22208:66;22267:6;22259;22253:4;22208:66;:::i;:::-;22301:1;22325:4;22312:17;;22357:2;22349:6;22346:14;22374:1;22369:617;;;;23030:1;23047:6;23044:77;;;23096:9;23091:3;23087:19;23081:26;23072:35;;23044:77;23147:67;23207:6;23200:5;23147:67;:::i;:::-;23141:4;23134:81;23003:222;22339:886;;22369:617;22421:4;22417:9;22409:6;22405:22;22455:36;22486:4;22455:36;:::i;:::-;22513:1;22527:208;22541:7;22538:1;22535:14;22527:208;;;22620:9;22615:3;22611:19;22605:26;22597:6;22590:42;22671:1;22663:6;22659:14;22649:24;;22718:2;22707:9;22703:18;22690:31;;22564:4;22561:1;22557:12;22552:17;;22527:208;;;22763:6;22754:7;22751:19;22748:179;;;22821:9;22816:3;22812:19;22806:26;22864:48;22906:4;22898:6;22894:17;22883:9;22864:48;:::i;:::-;22856:6;22849:64;22771:156;22748:179;22973:1;22969;22961:6;22957:14;22953:22;22947:4;22940:36;22376:610;;;22339:886;;21931:1300;;;21841:1390;;:::o;23237:442::-;23386:4;23424:2;23413:9;23409:18;23401:26;;23437:71;23505:1;23494:9;23490:17;23481:6;23437:71;:::i;:::-;23518:72;23586:2;23575:9;23571:18;23562:6;23518:72;:::i;:::-;23600;23668:2;23657:9;23653:18;23644:6;23600:72;:::i;:::-;23237:442;;;;;;:::o;23685:180::-;23825:32;23821:1;23813:6;23809:14;23802:56;23685:180;:::o;23871:366::-;24013:3;24034:67;24098:2;24093:3;24034:67;:::i;:::-;24027:74;;24110:93;24199:3;24110:93;:::i;:::-;24228:2;24223:3;24219:12;24212:19;;23871:366;;;:::o;24243:419::-;24409:4;24447:2;24436:9;24432:18;24424:26;;24496:9;24490:4;24486:20;24482:1;24471:9;24467:17;24460:47;24524:131;24650:4;24524:131;:::i;:::-;24516:139;;24243:419;;;:::o;24668:223::-;24808:34;24804:1;24796:6;24792:14;24785:58;24877:6;24872:2;24864:6;24860:15;24853:31;24668:223;:::o;24897:366::-;25039:3;25060:67;25124:2;25119:3;25060:67;:::i;:::-;25053:74;;25136:93;25225:3;25136:93;:::i;:::-;25254:2;25249:3;25245:12;25238:19;;24897:366;;;:::o;25269:419::-;25435:4;25473:2;25462:9;25458:18;25450:26;;25522:9;25516:4;25512:20;25508:1;25497:9;25493:17;25486:47;25550:131;25676:4;25550:131;:::i;:::-;25542:139;;25269:419;;;:::o;25694:99::-;25746:6;25780:5;25774:12;25764:22;;25694:99;;;:::o;25799:377::-;25887:3;25915:39;25948:5;25915:39;:::i;:::-;25970:71;26034:6;26029:3;25970:71;:::i;:::-;25963:78;;26050:65;26108:6;26103:3;26096:4;26089:5;26085:16;26050:65;:::i;:::-;26140:29;26162:6;26140:29;:::i;:::-;26135:3;26131:39;26124:46;;25891:285;25799:377;;;;:::o;26182:533::-;26351:4;26389:2;26378:9;26374:18;26366:26;;26402:71;26470:1;26459:9;26455:17;26446:6;26402:71;:::i;:::-;26483:72;26551:2;26540:9;26536:18;26527:6;26483:72;:::i;:::-;26602:9;26596:4;26592:20;26587:2;26576:9;26572:18;26565:48;26630:78;26703:4;26694:6;26630:78;:::i;:::-;26622:86;;26182:533;;;;;;:::o;26721:149::-;26757:7;26797:66;26790:5;26786:78;26775:89;;26721:149;;;:::o;26876:115::-;26961:23;26978:5;26961:23;:::i;:::-;26956:3;26949:36;26876:115;;:::o;26997:218::-;27088:4;27126:2;27115:9;27111:18;27103:26;;27139:69;27205:1;27194:9;27190:17;27181:6;27139:69;:::i;:::-;26997:218;;;;:::o", + "source": "// SPDX-License-Identifier: MIT\r\npragma solidity 0.8.19;\r\n\r\nimport \"../interfaces/IDepositExecute.sol\";\r\nimport \"./HandlerHelpers.sol\";\r\nimport \"../ERC721Safe.sol\";\r\nimport \"../ERC721MinterBurnerPauser.sol\";\r\nimport \"../openzeppelin/ERC165Checker.sol\";\r\nimport \"../openzeppelin/IERC721Metadata.sol\";\r\n\r\n\r\n/**\r\n @title Handles ERC721 deposits and deposit executions.\r\n @author ChainSafe Systems.\r\n @notice This contract is intended to be used with the Bridge contract.\r\n */\r\ncontract ERC721Handler is IDepositExecute, HandlerHelpers, ERC721Safe {\r\n using ERC165Checker for address;\r\n\r\n bytes4 private constant _INTERFACE_ERC721_METADATA = 0x5b5e139f;\r\n\r\n struct DepositRecord {\r\n address _tokenAddress;\r\n uint8 _lenDestinationRecipientAddress;\r\n uint8 _destinationChainID;\r\n bytes32 _resourceID;\r\n bytes _destinationRecipientAddress;\r\n address _depositer;\r\n uint _tokenID;\r\n bytes _metaData;\r\n }\r\n\r\n // DepositNonce => Deposit Record\r\n mapping (uint8 => mapping (uint64 => DepositRecord)) public _depositRecords;\r\n\r\n /**\r\n @param bridgeAddress Contract address of previously deployed Bridge.\r\n @param initialResourceIDs Resource IDs are used to identify a specific contract address.\r\n These are the Resource IDs this contract will initially support.\r\n @param initialContractAddresses These are the addresses the {initialResourceIDs} will point to, and are the contracts that will be\r\n called to perform various deposit calls.\r\n @param burnableContractAddresses These addresses will be set as burnable and when {deposit} is called, the deposited token will be burned.\r\n When {executeProposal} is called, new tokens will be minted.\r\n\r\n @dev {initialResourceIDs} and {initialContractAddresses} must have the same length (one resourceID for every address).\r\n Also, these arrays must be ordered in the way that {initialResourceIDs}[0] is the intended resourceID for {initialContractAddresses}[0].\r\n */\r\n constructor(\r\n address bridgeAddress,\r\n bytes32[] memory initialResourceIDs,\r\n address[] memory initialContractAddresses,\r\n address[] memory burnableContractAddresses\r\n ) {\r\n require(initialResourceIDs.length == initialContractAddresses.length,\r\n \"initialResourceIDs and initialContractAddresses len mismatch\");\r\n\r\n _bridgeAddress = bridgeAddress;\r\n\r\n for (uint256 i = 0; i < initialResourceIDs.length; i++) {\r\n _setResource(initialResourceIDs[i], initialContractAddresses[i]);\r\n }\r\n\r\n for (uint256 i = 0; i < burnableContractAddresses.length; i++) {\r\n _setBurnable(burnableContractAddresses[i]);\r\n }\r\n }\r\n\r\n /**\r\n @param depositNonce This ID will have been generated by the Bridge contract.\r\n @param destId ID of chain deposit will be bridged to.\r\n @return DepositRecord which consists of:\r\n - _tokenAddress Address used when {deposit} was executed.\r\n - _destinationChainID ChainID deposited tokens are intended to end up on.\r\n - _resourceID ResourceID used when {deposit} was executed.\r\n - _lenDestinationRecipientAddress Used to parse recipient's address from {_destinationRecipientAddress}\r\n - _destinationRecipientAddress Address tokens are intended to be deposited to on desitnation chain.\r\n - _depositer Address that initially called {deposit} in the Bridge contract.\r\n - _tokenID ID of ERC721.\r\n - _metaData Optional ERC721 metadata.\r\n */\r\n function getDepositRecord(uint64 depositNonce, uint8 destId) external view returns (DepositRecord memory) {\r\n return _depositRecords[destId][depositNonce];\r\n }\r\n\r\n /**\r\n @notice A deposit is initiatied by making a deposit in the Bridge contract.\r\n @param destinationChainID Chain ID of chain token is expected to be bridged to.\r\n @param depositNonce This value is generated as an ID by the Bridge contract.\r\n @param depositer Address of account making the deposit in the Bridge contract.\r\n @param data Consists of: {resourceID}, {tokenID}, {lenDestinationRecipientAddress},\r\n and {destinationRecipientAddress} all padded to 32 bytes.\r\n @notice Data passed into the function should be constructed as follows:\r\n tokenID uint256 bytes 0 - 32\r\n destinationRecipientAddress length uint256 bytes 32 - 64\r\n destinationRecipientAddress bytes bytes 64 - (64 + len(destinationRecipientAddress))\r\n @notice If the corresponding {tokenAddress} for the parsed {resourceID} supports {_INTERFACE_ERC721_METADATA},\r\n then {metaData} will be set according to the {tokenURI} method in the token contract.\r\n @dev Depending if the corresponding {tokenAddress} for the parsed {resourceID} is\r\n marked true in {_burnList}, deposited tokens will be burned, if not, they will be locked.\r\n */\r\n function deposit(bytes32 resourceID,\r\n uint8 destinationChainID,\r\n uint64 depositNonce,\r\n address depositer,\r\n bytes calldata data\r\n ) external override onlyBridge {\r\n uint lenDestinationRecipientAddress;\r\n uint tokenID;\r\n bytes memory destinationRecipientAddress;\r\n bytes memory metaData;\r\n\r\n assembly {\r\n\r\n // Load tokenID from data + 32\r\n tokenID := calldataload(0xC4)\r\n\r\n // Load length of recipient address from data + 96\r\n lenDestinationRecipientAddress := calldataload(0xE4)\r\n // Load free mem pointer for recipient\r\n destinationRecipientAddress := mload(0x40)\r\n // Store recipient address\r\n mstore(0x40, add(0x20, add(destinationRecipientAddress, lenDestinationRecipientAddress)))\r\n\r\n // func sig (4) + destinationChainId (padded to 32) + depositNonce (32) + depositor (32) +\r\n // bytes lenght (32) + resourceId (32) + tokenId (32) + length (32) = 0xE4\r\n\r\n calldatacopy(\r\n destinationRecipientAddress, // copy to destinationRecipientAddress\r\n 0xE4, // copy from calldata after destinationRecipientAddress length declaration @0xE4\r\n sub(calldatasize(), 0xE4) // copy size (calldatasize - (0xE4 + 0x20))\r\n )\r\n }\r\n\r\n address tokenAddress = _resourceIDToTokenContractAddress[resourceID];\r\n require(_contractWhitelist[tokenAddress], \"provided tokenAddress is not whitelisted\");\r\n\r\n // Check if the contract supports metadata, fetch it if it does\r\n if (tokenAddress.supportsInterface(_INTERFACE_ERC721_METADATA)) {\r\n IERC721Metadata erc721 = IERC721Metadata(tokenAddress);\r\n metaData = bytes(erc721.tokenURI(tokenID));\r\n }\r\n\r\n if (_burnList[tokenAddress]) {\r\n burnERC721(tokenAddress, tokenID);\r\n } else {\r\n lockERC721(tokenAddress, depositer, address(this), tokenID);\r\n }\r\n\r\n _depositRecords[destinationChainID][depositNonce] = DepositRecord(\r\n tokenAddress,\r\n uint8(lenDestinationRecipientAddress),\r\n uint8(destinationChainID),\r\n resourceID,\r\n destinationRecipientAddress,\r\n depositer,\r\n tokenID,\r\n metaData\r\n );\r\n }\r\n\r\n /**\r\n @notice Proposal execution should be initiated when a proposal is finalized in the Bridge contract.\r\n by a relayer on the deposit's destination chain.\r\n @param data Consists of {tokenID}, {resourceID}, {lenDestinationRecipientAddress},\r\n {destinationRecipientAddress}, {lenMeta}, and {metaData} all padded to 32 bytes.\r\n @notice Data passed into the function should be constructed as follows:\r\n tokenID uint256 bytes 0 - 32\r\n destinationRecipientAddress length uint256 bytes 32 - 64\r\n destinationRecipientAddress bytes bytes 64 - (64 + len(destinationRecipientAddress))\r\n metadata length uint256 bytes (64 + len(destinationRecipientAddress)) - (64 + len(destinationRecipientAddress) + 32)\r\n metadata bytes bytes (64 + len(destinationRecipientAddress) + 32) - END\r\n */\r\n function executeProposal(bytes32 resourceID, bytes calldata data) external override onlyBridge {\r\n uint256 tokenID;\r\n bytes memory destinationRecipientAddress;\r\n bytes memory metaData;\r\n\r\n assembly {\r\n tokenID := calldataload(0x64)\r\n\r\n\r\n // set up destinationRecipientAddress\r\n destinationRecipientAddress := mload(0x40) // load free memory pointer\r\n let lenDestinationRecipientAddress := calldataload(0x84)\r\n\r\n // set up metaData\r\n // 0xA4 is a combination of 0x24 (position of {data} in calldata) and\r\n // 0x80 is the relative position of the {metadata} length in {data}\r\n let lenMeta := calldataload(add(0xA4, lenDestinationRecipientAddress))\r\n\r\n mstore(0x40, add(0x40, add(destinationRecipientAddress, lenDestinationRecipientAddress))) // shift free memory pointer\r\n\r\n calldatacopy(\r\n destinationRecipientAddress, // copy to destinationRecipientAddress\r\n 0x84, // copy from calldata after destinationRecipientAddress length declaration @0x84\r\n sub(calldatasize(), add(0x84, add(0x20, lenMeta))) // copy size (calldatasize - (0xC4 + the space metaData takes up))\r\n )\r\n\r\n // metadata has variable length\r\n // load free memory pointer to store metadata\r\n metaData := mload(0x40)\r\n\r\n // incrementing free memory pointer\r\n mstore(0x40, add(0x40, add(metaData, lenMeta)))\r\n\r\n // metadata is located at (0x84 + 0x20 + lenDestinationRecipientAddress) in calldata\r\n let metaDataLoc := add(0xA4, lenDestinationRecipientAddress)\r\n\r\n // in the calldata, metadata is stored @0x124 after accounting for function signature and the depositNonce\r\n calldatacopy(\r\n metaData, // copy to metaData\r\n metaDataLoc, // copy from calldata after metaData length declaration\r\n sub(calldatasize(), metaDataLoc) // copy size (calldatasize - metaDataLoc)\r\n )\r\n }\r\n\r\n bytes20 recipientAddress;\r\n\r\n assembly {\r\n recipientAddress := mload(add(destinationRecipientAddress, 0x20))\r\n }\r\n\r\n address tokenAddress = _resourceIDToTokenContractAddress[resourceID];\r\n require(_contractWhitelist[address(tokenAddress)], \"provided tokenAddress is not whitelisted\");\r\n\r\n if (_burnList[tokenAddress]) {\r\n mintERC721(tokenAddress, address(recipientAddress), tokenID, metaData);\r\n } else {\r\n releaseERC721(tokenAddress, address(this), address(recipientAddress), tokenID);\r\n }\r\n }\r\n\r\n /**\r\n @notice Used to manually release ERC721 tokens from ERC721Safe.\r\n @param tokenAddress Address of token contract to release.\r\n @param recipient Address to release token to.\r\n @param tokenID The ERC721 token ID to release.\r\n */\r\n function withdraw(address tokenAddress, address recipient, uint tokenID) external override onlyBridge {\r\n releaseERC721(tokenAddress, address(this), recipient, tokenID);\r\n }\r\n}\r\n", + "sourcePath": "/mnt/d/SourceTree/CAN_bridge_sol/contracts/handlers/ERC721Handler.sol", + "ast": { + "absolutePath": "project:/contracts/handlers/ERC721Handler.sol", + "exportedSymbols": { + "AccessControl": [ + 3623 + ], + "AccessControlEnumerable": [ + 3748 + ], + "Address": [ + 4078 + ], + "Context": [ + 4108 + ], + "Counters": [ + 4182 + ], + "ERC165": [ + 4206 + ], + "ERC165Checker": [ + 4400 + ], + "ERC721": [ + 6131 + ], + "ERC721Burnable": [ + 6161 + ], + "ERC721Handler": [ + 2662 + ], + "ERC721MinterBurnerPauser": [ + 1710 + ], + "ERC721Pausable": [ + 6201 + ], + "ERC721Safe": [ + 1854 + ], + "ERC721URIStorage": [ + 6357 + ], + "EnumerableSet": [ + 6970 + ], + "HandlerHelpers": [ + 3209 + ], + "IAccessControl": [ + 7043 + ], + "IAccessControlEnumerable": [ + 7068 + ], + "IDepositExecute": [ + 3263 + ], + "IERC165": [ + 7080 + ], + "IERC4906": [ + 7205 + ], + "IERC721": [ + 7321 + ], + "IERC721Metadata": [ + 7348 + ], + "IERC721Receiver": [ + 7366 + ], + "IERCHandler": [ + 3291 + ], + "Math": [ + 8232 + ], + "Pausable": [ + 8340 + ], + "SignedMath": [ + 8445 + ], + "Strings": [ + 8674 + ] + }, + "id": 2663, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2324, + "literals": [ + "solidity", + "0.8", + ".19" + ], + "nodeType": "PragmaDirective", + "src": "33:23:21" + }, + { + "absolutePath": "project:/contracts/interfaces/IDepositExecute.sol", + "file": "../interfaces/IDepositExecute.sol", + "id": 2325, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2663, + "sourceUnit": 3264, + "src": "60:43:21", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "project:/contracts/handlers/HandlerHelpers.sol", + "file": "./HandlerHelpers.sol", + "id": 2326, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2663, + "sourceUnit": 3210, + "src": "105:30:21", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "project:/contracts/ERC721Safe.sol", + "file": "../ERC721Safe.sol", + "id": 2327, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2663, + "sourceUnit": 1855, + "src": "137:27:21", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "project:/contracts/ERC721MinterBurnerPauser.sol", + "file": "../ERC721MinterBurnerPauser.sol", + "id": 2328, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2663, + "sourceUnit": 1711, + "src": "166:41:21", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "project:/contracts/openzeppelin/ERC165Checker.sol", + "file": "../openzeppelin/ERC165Checker.sol", + "id": 2329, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2663, + "sourceUnit": 4401, + "src": "209:43:21", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "project:/contracts/openzeppelin/IERC721Metadata.sol", + "file": "../openzeppelin/IERC721Metadata.sol", + "id": 2330, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2663, + "sourceUnit": 7349, + "src": "254:45:21", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 2332, + "name": "IDepositExecute", + "nameLocations": [ + "509:15:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3263, + "src": "509:15:21" + }, + "id": 2333, + "nodeType": "InheritanceSpecifier", + "src": "509:15:21" + }, + { + "baseName": { + "id": 2334, + "name": "HandlerHelpers", + "nameLocations": [ + "526:14:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3209, + "src": "526:14:21" + }, + "id": 2335, + "nodeType": "InheritanceSpecifier", + "src": "526:14:21" + }, + { + "baseName": { + "id": 2336, + "name": "ERC721Safe", + "nameLocations": [ + "542:10:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1854, + "src": "542:10:21" + }, + "id": 2337, + "nodeType": "InheritanceSpecifier", + "src": "542:10:21" + } + ], + "canonicalName": "ERC721Handler", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 2331, + "nodeType": "StructuredDocumentation", + "src": "305:176:21", + "text": "@title Handles ERC721 deposits and deposit executions.\n@author ChainSafe Systems.\n@notice This contract is intended to be used with the Bridge contract." + }, + "fullyImplemented": true, + "id": 2662, + "linearizedBaseContracts": [ + 2662, + 1854, + 3209, + 3291, + 3263 + ], + "name": "ERC721Handler", + "nameLocation": "492:13:21", + "nodeType": "ContractDefinition", + "nodes": [ + { + "global": false, + "id": 2340, + "libraryName": { + "id": 2338, + "name": "ERC165Checker", + "nameLocations": [ + "566:13:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4400, + "src": "566:13:21" + }, + "nodeType": "UsingForDirective", + "src": "560:32:21", + "typeName": { + "id": 2339, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "584:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "constant": true, + "id": 2343, + "mutability": "constant", + "name": "_INTERFACE_ERC721_METADATA", + "nameLocation": "624:26:21", + "nodeType": "VariableDeclaration", + "scope": 2662, + "src": "600:63:21", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 2341, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "600:6:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "hexValue": "30783562356531333966", + "id": 2342, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "653:10:21", + "typeDescriptions": { + "typeIdentifier": "t_rational_1532892063_by_1", + "typeString": "int_const 1532892063" + }, + "value": "0x5b5e139f" + }, + "visibility": "private" + }, + { + "canonicalName": "ERC721Handler.DepositRecord", + "id": 2360, + "members": [ + { + "constant": false, + "id": 2345, + "mutability": "mutable", + "name": "_tokenAddress", + "nameLocation": "712:13:21", + "nodeType": "VariableDeclaration", + "scope": 2360, + "src": "704:21:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2344, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "704:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2347, + "mutability": "mutable", + "name": "_lenDestinationRecipientAddress", + "nameLocation": "745:31:21", + "nodeType": "VariableDeclaration", + "scope": 2360, + "src": "736:40:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 2346, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "736:5:21", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2349, + "mutability": "mutable", + "name": "_destinationChainID", + "nameLocation": "795:19:21", + "nodeType": "VariableDeclaration", + "scope": 2360, + "src": "787:27:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 2348, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "787:5:21", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2351, + "mutability": "mutable", + "name": "_resourceID", + "nameLocation": "833:11:21", + "nodeType": "VariableDeclaration", + "scope": 2360, + "src": "825:19:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2350, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "825:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2353, + "mutability": "mutable", + "name": "_destinationRecipientAddress", + "nameLocation": "863:28:21", + "nodeType": "VariableDeclaration", + "scope": 2360, + "src": "855:36:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2352, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "855:5:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2355, + "mutability": "mutable", + "name": "_depositer", + "nameLocation": "910:10:21", + "nodeType": "VariableDeclaration", + "scope": 2360, + "src": "902:18:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2354, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "902:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2357, + "mutability": "mutable", + "name": "_tokenID", + "nameLocation": "939:8:21", + "nodeType": "VariableDeclaration", + "scope": 2360, + "src": "931:16:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2356, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "931:4:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2359, + "mutability": "mutable", + "name": "_metaData", + "nameLocation": "966:9:21", + "nodeType": "VariableDeclaration", + "scope": 2360, + "src": "958:17:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2358, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "958:5:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "name": "DepositRecord", + "nameLocation": "679:13:21", + "nodeType": "StructDefinition", + "scope": 2662, + "src": "672:311:21", + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "4402027f", + "id": 2367, + "mutability": "mutable", + "name": "_depositRecords", + "nameLocation": "1090:15:21", + "nodeType": "VariableDeclaration", + "scope": 2662, + "src": "1030:75:21", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint8_$_t_mapping$_t_uint64_$_t_struct$_DepositRecord_$2360_storage_$_$", + "typeString": "mapping(uint8 => mapping(uint64 => struct ERC721Handler.DepositRecord))" + }, + "typeName": { + "id": 2366, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 2361, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1039:5:21", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Mapping", + "src": "1030:52:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint8_$_t_mapping$_t_uint64_$_t_struct$_DepositRecord_$2360_storage_$_$", + "typeString": "mapping(uint8 => mapping(uint64 => struct ERC721Handler.DepositRecord))" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 2365, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 2362, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "1057:6:21", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "Mapping", + "src": "1048:33:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_DepositRecord_$2360_storage_$", + "typeString": "mapping(uint64 => struct ERC721Handler.DepositRecord)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 2364, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2363, + "name": "DepositRecord", + "nameLocations": [ + "1067:13:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2360, + "src": "1067:13:21" + }, + "referencedDeclaration": 2360, + "src": "1067:13:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DepositRecord_$2360_storage_ptr", + "typeString": "struct ERC721Handler.DepositRecord" + } + } + } + }, + "visibility": "public" + }, + { + "body": { + "id": 2436, + "nodeType": "Block", + "src": "2268:511:21", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2387, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 2383, + "name": "initialResourceIDs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2373, + "src": "2287:18:21", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 2384, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2306:6:21", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2287:25:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 2385, + "name": "initialContractAddresses", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2376, + "src": "2316:24:21", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 2386, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2341:6:21", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2316:31:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2287:60:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "696e697469616c5265736f7572636549447320616e6420696e697469616c436f6e7472616374416464726573736573206c656e206d69736d61746368", + "id": 2388, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2362:62:21", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4ad26bc3c99f2850e5fe1de98475000419054e7d49a87288c0e5940e995dd510", + "typeString": "literal_string \"initialResourceIDs and initialContractAddresses len mismatch\"" + }, + "value": "initialResourceIDs and initialContractAddresses len mismatch" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_4ad26bc3c99f2850e5fe1de98475000419054e7d49a87288c0e5940e995dd510", + "typeString": "literal_string \"initialResourceIDs and initialContractAddresses len mismatch\"" + } + ], + "id": 2382, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "2279:7:21", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2389, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2279:146:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2390, + "nodeType": "ExpressionStatement", + "src": "2279:146:21" + }, + { + "expression": { + "id": 2393, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2391, + "name": "_bridgeAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3085, + "src": "2438:14:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2392, + "name": "bridgeAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2370, + "src": "2455:13:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2438:30:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2394, + "nodeType": "ExpressionStatement", + "src": "2438:30:21" + }, + { + "body": { + "id": 2415, + "nodeType": "Block", + "src": "2537:91:21", + "statements": [ + { + "expression": { + "arguments": [ + { + "baseExpression": { + "id": 2407, + "name": "initialResourceIDs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2373, + "src": "2565:18:21", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 2409, + "indexExpression": { + "id": 2408, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2396, + "src": "2584:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2565:21:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "baseExpression": { + "id": 2410, + "name": "initialContractAddresses", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2376, + "src": "2588:24:21", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 2412, + "indexExpression": { + "id": 2411, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2396, + "src": "2613:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2588:27:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2406, + "name": "_setResource", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3189, + "src": "2552:12:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address)" + } + }, + "id": 2413, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2552:64:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2414, + "nodeType": "ExpressionStatement", + "src": "2552:64:21" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2402, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2399, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2396, + "src": "2501:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 2400, + "name": "initialResourceIDs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2373, + "src": "2505:18:21", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 2401, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2524:6:21", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2505:25:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2501:29:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2416, + "initializationExpression": { + "assignments": [ + 2396 + ], + "declarations": [ + { + "constant": false, + "id": 2396, + "mutability": "mutable", + "name": "i", + "nameLocation": "2494:1:21", + "nodeType": "VariableDeclaration", + "scope": 2416, + "src": "2486:9:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2395, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2486:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2398, + "initialValue": { + "hexValue": "30", + "id": 2397, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2498:1:21", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "2486:13:21" + }, + "loopExpression": { + "expression": { + "id": 2404, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "2532:3:21", + "subExpression": { + "id": 2403, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2396, + "src": "2532:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2405, + "nodeType": "ExpressionStatement", + "src": "2532:3:21" + }, + "nodeType": "ForStatement", + "src": "2481:147:21" + }, + { + "body": { + "id": 2434, + "nodeType": "Block", + "src": "2703:69:21", + "statements": [ + { + "expression": { + "arguments": [ + { + "baseExpression": { + "id": 2429, + "name": "burnableContractAddresses", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2379, + "src": "2731:25:21", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 2431, + "indexExpression": { + "id": 2430, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2418, + "src": "2757:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2731:28:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2428, + "name": "_setBurnable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3208, + "src": "2718:12:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 2432, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2718:42:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2433, + "nodeType": "ExpressionStatement", + "src": "2718:42:21" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2424, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2421, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2418, + "src": "2660:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 2422, + "name": "burnableContractAddresses", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2379, + "src": "2664:25:21", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 2423, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2690:6:21", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2664:32:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2660:36:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2435, + "initializationExpression": { + "assignments": [ + 2418 + ], + "declarations": [ + { + "constant": false, + "id": 2418, + "mutability": "mutable", + "name": "i", + "nameLocation": "2653:1:21", + "nodeType": "VariableDeclaration", + "scope": 2435, + "src": "2645:9:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2417, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2645:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2420, + "initialValue": { + "hexValue": "30", + "id": 2419, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2657:1:21", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "2645:13:21" + }, + "loopExpression": { + "expression": { + "id": 2426, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "2698:3:21", + "subExpression": { + "id": 2425, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2418, + "src": "2698:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2427, + "nodeType": "ExpressionStatement", + "src": "2698:3:21" + }, + "nodeType": "ForStatement", + "src": "2640:132:21" + } + ] + }, + "documentation": { + "id": 2368, + "nodeType": "StructuredDocumentation", + "src": "1114:946:21", + "text": "@param bridgeAddress Contract address of previously deployed Bridge.\n@param initialResourceIDs Resource IDs are used to identify a specific contract address.\nThese are the Resource IDs this contract will initially support.\n@param initialContractAddresses These are the addresses the {initialResourceIDs} will point to, and are the contracts that will be\ncalled to perform various deposit calls.\n@param burnableContractAddresses These addresses will be set as burnable and when {deposit} is called, the deposited token will be burned.\nWhen {executeProposal} is called, new tokens will be minted.\n@dev {initialResourceIDs} and {initialContractAddresses} must have the same length (one resourceID for every address).\nAlso, these arrays must be ordered in the way that {initialResourceIDs}[0] is the intended resourceID for {initialContractAddresses}[0]." + }, + "id": 2437, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2380, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2370, + "mutability": "mutable", + "name": "bridgeAddress", + "nameLocation": "2096:13:21", + "nodeType": "VariableDeclaration", + "scope": 2437, + "src": "2088:21:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2369, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2088:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2373, + "mutability": "mutable", + "name": "initialResourceIDs", + "nameLocation": "2137:18:21", + "nodeType": "VariableDeclaration", + "scope": 2437, + "src": "2120:35:21", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 2371, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2120:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2372, + "nodeType": "ArrayTypeName", + "src": "2120:9:21", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2376, + "mutability": "mutable", + "name": "initialContractAddresses", + "nameLocation": "2183:24:21", + "nodeType": "VariableDeclaration", + "scope": 2437, + "src": "2166:41:21", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 2374, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2166:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2375, + "nodeType": "ArrayTypeName", + "src": "2166:9:21", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2379, + "mutability": "mutable", + "name": "burnableContractAddresses", + "nameLocation": "2235:25:21", + "nodeType": "VariableDeclaration", + "scope": 2437, + "src": "2218:42:21", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 2377, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2218:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2378, + "nodeType": "ArrayTypeName", + "src": "2218:9:21", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + } + ], + "src": "2077:190:21" + }, + "returnParameters": { + "id": 2381, + "nodeType": "ParameterList", + "parameters": [], + "src": "2268:0:21" + }, + "scope": 2662, + "src": "2066:713:21", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 2454, + "nodeType": "Block", + "src": "3716:63:21", + "statements": [ + { + "expression": { + "baseExpression": { + "baseExpression": { + "id": 2448, + "name": "_depositRecords", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2367, + "src": "3734:15:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint8_$_t_mapping$_t_uint64_$_t_struct$_DepositRecord_$2360_storage_$_$", + "typeString": "mapping(uint8 => mapping(uint64 => struct ERC721Handler.DepositRecord storage ref))" + } + }, + "id": 2450, + "indexExpression": { + "id": 2449, + "name": "destId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2442, + "src": "3750:6:21", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3734:23:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_DepositRecord_$2360_storage_$", + "typeString": "mapping(uint64 => struct ERC721Handler.DepositRecord storage ref)" + } + }, + "id": 2452, + "indexExpression": { + "id": 2451, + "name": "depositNonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2440, + "src": "3758:12:21", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3734:37:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DepositRecord_$2360_storage", + "typeString": "struct ERC721Handler.DepositRecord storage ref" + } + }, + "functionReturnParameters": 2447, + "id": 2453, + "nodeType": "Return", + "src": "3727:44:21" + } + ] + }, + "documentation": { + "id": 2438, + "nodeType": "StructuredDocumentation", + "src": "2787:817:21", + "text": "@param depositNonce This ID will have been generated by the Bridge contract.\n@param destId ID of chain deposit will be bridged to.\n@return DepositRecord which consists of:\n- _tokenAddress Address used when {deposit} was executed.\n- _destinationChainID ChainID deposited tokens are intended to end up on.\n- _resourceID ResourceID used when {deposit} was executed.\n- _lenDestinationRecipientAddress Used to parse recipient's address from {_destinationRecipientAddress}\n- _destinationRecipientAddress Address tokens are intended to be deposited to on desitnation chain.\n- _depositer Address that initially called {deposit} in the Bridge contract.\n- _tokenID ID of ERC721.\n- _metaData Optional ERC721 metadata." + }, + "functionSelector": "ba484c09", + "id": 2455, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getDepositRecord", + "nameLocation": "3619:16:21", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2443, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2440, + "mutability": "mutable", + "name": "depositNonce", + "nameLocation": "3643:12:21", + "nodeType": "VariableDeclaration", + "scope": 2455, + "src": "3636:19:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 2439, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "3636:6:21", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2442, + "mutability": "mutable", + "name": "destId", + "nameLocation": "3663:6:21", + "nodeType": "VariableDeclaration", + "scope": 2455, + "src": "3657:12:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 2441, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "3657:5:21", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "3635:35:21" + }, + "returnParameters": { + "id": 2447, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2446, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2455, + "src": "3694:20:21", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DepositRecord_$2360_memory_ptr", + "typeString": "struct ERC721Handler.DepositRecord" + }, + "typeName": { + "id": 2445, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2444, + "name": "DepositRecord", + "nameLocations": [ + "3694:13:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2360, + "src": "3694:13:21" + }, + "referencedDeclaration": 2360, + "src": "3694:13:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DepositRecord_$2360_storage_ptr", + "typeString": "struct ERC721Handler.DepositRecord" + } + }, + "visibility": "internal" + } + ], + "src": "3693:22:21" + }, + "scope": 2662, + "src": "3610:169:21", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 3254 + ], + "body": { + "id": 2565, + "nodeType": "Block", + "src": "5362:2231:21", + "statements": [ + { + "assignments": [ + 2473 + ], + "declarations": [ + { + "constant": false, + "id": 2473, + "mutability": "mutable", + "name": "lenDestinationRecipientAddress", + "nameLocation": "5386:30:21", + "nodeType": "VariableDeclaration", + "scope": 2565, + "src": "5373:43:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2472, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5373:4:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2474, + "nodeType": "VariableDeclarationStatement", + "src": "5373:43:21" + }, + { + "assignments": [ + 2476 + ], + "declarations": [ + { + "constant": false, + "id": 2476, + "mutability": "mutable", + "name": "tokenID", + "nameLocation": "5440:7:21", + "nodeType": "VariableDeclaration", + "scope": 2565, + "src": "5427:20:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2475, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5427:4:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2477, + "nodeType": "VariableDeclarationStatement", + "src": "5427:20:21" + }, + { + "assignments": [ + 2479 + ], + "declarations": [ + { + "constant": false, + "id": 2479, + "mutability": "mutable", + "name": "destinationRecipientAddress", + "nameLocation": "5471:27:21", + "nodeType": "VariableDeclaration", + "scope": 2565, + "src": "5458:40:21", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2478, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5458:5:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 2480, + "nodeType": "VariableDeclarationStatement", + "src": "5458:40:21" + }, + { + "assignments": [ + 2482 + ], + "declarations": [ + { + "constant": false, + "id": 2482, + "mutability": "mutable", + "name": "metaData", + "nameLocation": "5522:8:21", + "nodeType": "VariableDeclaration", + "scope": 2565, + "src": "5509:21:21", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2481, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5509:5:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 2483, + "nodeType": "VariableDeclarationStatement", + "src": "5509:21:21" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "5552:1033:21", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5613:29:21", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5637:4:21", + "type": "", + "value": "0xC4" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5624:12:21" + }, + "nodeType": "YulFunctionCall", + "src": "5624:18:21" + }, + "variableNames": [ + { + "name": "tokenID", + "nodeType": "YulIdentifier", + "src": "5613:7:21" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5722:52:21", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5769:4:21", + "type": "", + "value": "0xE4" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5756:12:21" + }, + "nodeType": "YulFunctionCall", + "src": "5756:18:21" + }, + "variableNames": [ + { + "name": "lenDestinationRecipientAddress", + "nodeType": "YulIdentifier", + "src": "5722:30:21" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5840:42:21", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5877:4:21", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "5871:5:21" + }, + "nodeType": "YulFunctionCall", + "src": "5871:11:21" + }, + "variableNames": [ + { + "name": "destinationRecipientAddress", + "nodeType": "YulIdentifier", + "src": "5840:27:21" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5943:4:21", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5953:4:21", + "type": "", + "value": "0x20" }, { - "condition": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 7466, - "name": "_burnList", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8051, - "src": "6974:9:35", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 7468, - "indexExpression": { - "argumentTypes": null, - "id": 7467, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7432, - "src": "6984:12:35", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "6974:23:35", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 7485, - "nodeType": "Block", - "src": "7063:84:35", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 7476, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7432, - "src": "7088:12:35", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 7477, - "name": "depositer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7410, - "src": "7102:9:35", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 7480, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -28, - "src": "7121:4:35", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC721Handler_$7607", - "typeString": "contract ERC721Handler" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_ERC721Handler_$7607", - "typeString": "contract ERC721Handler" - } - ], - "id": 7479, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "7113:7:35", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 7478, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "7113:7:35", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 7481, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7113:13:35", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 7482, - "name": "tokenID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7422, - "src": "7128:7:35", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 7475, - "name": "lockERC721", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6155, - "src": "7077:10:35", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,address,uint256)" - } - }, - "id": 7483, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7077:59:35", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 7484, - "nodeType": "ExpressionStatement", - "src": "7077:59:35" - } - ] + "arguments": [ + { + "name": "destinationRecipientAddress", + "nodeType": "YulIdentifier", + "src": "5963:27:21" }, - "id": 7486, - "nodeType": "IfStatement", - "src": "6970:177:35", - "trueBody": { - "id": 7474, - "nodeType": "Block", - "src": "6999:58:35", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 7470, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7432, - "src": "7024:12:35", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 7471, - "name": "tokenID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7422, - "src": "7038:7:35", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 7469, - "name": "burnERC721", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6233, - "src": "7013:10:35", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256)" - } - }, - "id": 7472, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7013:33:35", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 7473, - "nodeType": "ExpressionStatement", - "src": "7013:33:35" - } - ] + { + "name": "lenDestinationRecipientAddress", + "nodeType": "YulIdentifier", + "src": "5992:30:21" } - }, - { - "expression": { - "argumentTypes": null, - "id": 7508, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 7487, - "name": "_depositRecords", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7314, - "src": "7157:15:35", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint8_$_t_mapping$_t_uint64_$_t_struct$_DepositRecord_$7308_storage_$_$", - "typeString": "mapping(uint8 => mapping(uint64 => struct ERC721Handler.DepositRecord storage ref))" - } - }, - "id": 7490, - "indexExpression": { - "argumentTypes": null, - "id": 7488, - "name": "destinationChainID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7406, - "src": "7173:18:35", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7157:35:35", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_DepositRecord_$7308_storage_$", - "typeString": "mapping(uint64 => struct ERC721Handler.DepositRecord storage ref)" - } - }, - "id": 7491, - "indexExpression": { - "argumentTypes": null, - "id": 7489, - "name": "depositNonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7408, - "src": "7193:12:35", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "7157:49:35", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DepositRecord_$7308_storage", - "typeString": "struct ERC721Handler.DepositRecord storage ref" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 7493, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7432, - "src": "7236:12:35", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 7496, - "name": "lenDestinationRecipientAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7419, - "src": "7268:30:35", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 7495, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "7262:5:35", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint8_$", - "typeString": "type(uint8)" - }, - "typeName": { - "id": 7494, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "7262:5:35", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 7497, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7262:37:35", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 7500, - "name": "destinationChainID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7406, - "src": "7319:18:35", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "id": 7499, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "7313:5:35", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint8_$", - "typeString": "type(uint8)" - }, - "typeName": { - "id": 7498, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "7313:5:35", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 7501, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7313:25:35", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "id": 7502, - "name": "resourceID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7404, - "src": "7352:10:35", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 7503, - "name": "destinationRecipientAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7425, - "src": "7376:27:35", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 7504, - "name": "depositer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7410, - "src": "7417:9:35", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 7505, - "name": "tokenID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7422, - "src": "7440:7:35", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 7506, - "name": "metaData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7428, - "src": "7461:8:35", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 7492, - "name": "DepositRecord", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7308, - "src": "7209:13:35", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_DepositRecord_$7308_storage_ptr_$", - "typeString": "type(struct ERC721Handler.DepositRecord storage pointer)" - } - }, - "id": 7507, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "structConstructorCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7209:270:35", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_DepositRecord_$7308_memory_ptr", - "typeString": "struct ERC721Handler.DepositRecord memory" - } - }, - "src": "7157:322:35", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DepositRecord_$7308_storage", - "typeString": "struct ERC721Handler.DepositRecord storage ref" - } - }, - "id": 7509, - "nodeType": "ExpressionStatement", - "src": "7157:322:35" + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5959:3:21" + }, + "nodeType": "YulFunctionCall", + "src": "5959:64:21" } - ] + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5949:3:21" + }, + "nodeType": "YulFunctionCall", + "src": "5949:75:21" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5936:6:21" + }, + "nodeType": "YulFunctionCall", + "src": "5936:89:21" }, - "documentation": { - "id": 7402, - "nodeType": "StructuredDocumentation", - "src": "3754:1271:35", - "text": "@notice A deposit is initiatied by making a deposit in the Bridge contract.\n@param destinationChainID Chain ID of chain token is expected to be bridged to.\n@param depositNonce This value is generated as an ID by the Bridge contract.\n@param depositer Address of account making the deposit in the Bridge contract.\n@param data Consists of: {resourceID}, {tokenID}, {lenDestinationRecipientAddress},\nand {destinationRecipientAddress} all padded to 32 bytes.\n@notice Data passed into the function should be constructed as follows:\ntokenID uint256 bytes 0 - 32\ndestinationRecipientAddress length uint256 bytes 32 - 64\ndestinationRecipientAddress bytes bytes 64 - (64 + len(destinationRecipientAddress))\n@notice If the corresponding {tokenAddress} for the parsed {resourceID} supports {_INTERFACE_ERC721_METADATA},\nthen {metaData} will be set according to the {tokenURI} method in the token contract.\n@dev Depending if the corresponding {tokenAddress} for the parsed {resourceID} is\nmarked true in {_burnList}, deposited tokens will be burned, if not, they will be locked." - }, - "functionSelector": "38995da9", - "id": 7511, - "implemented": true, - "kind": "function", - "modifiers": [ + "nodeType": "YulExpressionStatement", + "src": "5936:89:21" + }, + { + "expression": { + "arguments": [ { - "arguments": null, - "id": 7416, - "modifierName": { - "argumentTypes": null, - "id": 7415, - "name": "onlyBridge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8062, - "src": "5297:10:35", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "5297:10:35" - } - ], - "name": "deposit", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 7414, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "5288:8:35" - }, - "parameters": { - "id": 7413, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 7404, - "mutability": "mutable", - "name": "resourceID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7511, - "src": "5047:21:35", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 7403, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "5047:7:35", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 7406, - "mutability": "mutable", - "name": "destinationChainID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7511, - "src": "5090:30:35", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 7405, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "5090:5:35", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 7408, - "mutability": "mutable", - "name": "depositNonce", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7511, - "src": "5142:24:35", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 7407, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "5142:6:35", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "value": null, - "visibility": "internal" - }, + "name": "destinationRecipientAddress", + "nodeType": "YulIdentifier", + "src": "6266:27:21" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6354:4:21", + "type": "", + "value": "0xE4" + }, + { + "arguments": [ { - "constant": false, - "id": 7410, - "mutability": "mutable", - "name": "depositer", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7511, - "src": "5188:21:35", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 7409, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5188:7:35", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" + "arguments": [], + "functionName": { + "name": "calldatasize", + "nodeType": "YulIdentifier", + "src": "6488:12:21" + }, + "nodeType": "YulFunctionCall", + "src": "6488:14:21" }, { - "constant": false, - "id": 7412, - "mutability": "mutable", - "name": "data", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7511, - "src": "5231:25:35", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 7411, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "5231:5:35", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" + "kind": "number", + "nodeType": "YulLiteral", + "src": "6504:4:21", + "type": "", + "value": "0xE4" } - ], - "src": "5046:232:35" - }, - "returnParameters": { - "id": 7417, - "nodeType": "ParameterList", - "parameters": [], - "src": "5308:0:35" + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "6484:3:21" + }, + "nodeType": "YulFunctionCall", + "src": "6484:25:21" + } + ], + "functionName": { + "name": "calldatacopy", + "nodeType": "YulIdentifier", + "src": "6235:12:21" + }, + "nodeType": "YulFunctionCall", + "src": "6235:339:21" }, - "scope": 7607, - "src": "5030:2456:35", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" + "nodeType": "YulExpressionStatement", + "src": "6235:339:21" + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2479, + "isOffset": false, + "isSlot": false, + "src": "5840:27:21", + "valueSize": 1 }, { - "baseFunctions": [8244], - "body": { - "id": 7581, - "nodeType": "Block", - "src": "8587:2702:35", - "statements": [ - { - "assignments": [7523], - "declarations": [ - { - "constant": false, - "id": 7523, - "mutability": "mutable", - "name": "tokenID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7581, - "src": "8597:23:35", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 7522, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8597:7:35", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 7524, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "8597:23:35" - }, - { - "assignments": [7526], - "declarations": [ - { - "constant": false, - "id": 7526, - "mutability": "mutable", - "name": "destinationRecipientAddress", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7581, - "src": "8630:43:35", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 7525, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "8630:5:35", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 7527, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "8630:43:35" - }, - { - "assignments": [7529], - "declarations": [ - { - "constant": false, - "id": 7529, - "mutability": "mutable", - "name": "metaData", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7581, - "src": "8683:24:35", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 7528, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "8683:5:35", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 7530, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "8683:24:35" - }, - { - "AST": { - "nodeType": "YulBlock", - "src": "8727:1987:35", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "8741:32:35", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "8768:4:35", - "type": "", - "value": "0x64" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "8755:12:35" - }, - "nodeType": "YulFunctionCall", - "src": "8755:18:35" - }, - "variableNames": [ - { - "name": "tokenID", - "nodeType": "YulIdentifier", - "src": "8741:7:35" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "8838:49:35", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "8882:4:35", - "type": "", - "value": "0x40" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "8876:5:35" - }, - "nodeType": "YulFunctionCall", - "src": "8876:11:35" - }, - "variableNames": [ - { - "name": "destinationRecipientAddress", - "nodeType": "YulIdentifier", - "src": "8838:27:35" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "8941:56:35", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "8992:4:35", - "type": "", - "value": "0x84" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "8979:12:35" - }, - "nodeType": "YulFunctionCall", - "src": "8979:18:35" - }, - "variables": [ - { - "name": "lenDestinationRecipientAddress", - "nodeType": "YulTypedName", - "src": "8945:30:35", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "9204:70:35", - "value": { - "arguments": [ - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9236:4:35", - "type": "", - "value": "0xA4" - }, - { - "name": "lenDestinationRecipientAddress", - "nodeType": "YulIdentifier", - "src": "9242:30:35" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "9232:3:35" - }, - "nodeType": "YulFunctionCall", - "src": "9232:41:35" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "9219:12:35" - }, - "nodeType": "YulFunctionCall", - "src": "9219:55:35" - }, - "variables": [ - { - "name": "lenMeta", - "nodeType": "YulTypedName", - "src": "9208:7:35", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9295:4:35", - "type": "", - "value": "0x40" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9305:4:35", - "type": "", - "value": "0x40" - }, - { - "arguments": [ - { - "name": "destinationRecipientAddress", - "nodeType": "YulIdentifier", - "src": "9315:27:35" - }, - { - "name": "lenDestinationRecipientAddress", - "nodeType": "YulIdentifier", - "src": "9344:30:35" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "9311:3:35" - }, - "nodeType": "YulFunctionCall", - "src": "9311:64:35" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "9301:3:35" - }, - "nodeType": "YulFunctionCall", - "src": "9301:75:35" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "9288:6:35" - }, - "nodeType": "YulFunctionCall", - "src": "9288:89:35" - }, - "nodeType": "YulExpressionStatement", - "src": "9288:89:35" - }, - { - "expression": { - "arguments": [ - { - "name": "destinationRecipientAddress", - "nodeType": "YulIdentifier", - "src": "9450:27:35" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9562:4:35", - "type": "", - "value": "0x84" - }, - { - "arguments": [ - { - "arguments": [], - "functionName": { - "name": "calldatasize", - "nodeType": "YulIdentifier", - "src": "9720:12:35" - }, - "nodeType": "YulFunctionCall", - "src": "9720:14:35" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9740:4:35", - "type": "", - "value": "0x84" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9750:4:35", - "type": "", - "value": "0x20" - }, - { - "name": "lenMeta", - "nodeType": "YulIdentifier", - "src": "9756:7:35" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "9746:3:35" - }, - "nodeType": "YulFunctionCall", - "src": "9746:18:35" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "9736:3:35" - }, - "nodeType": "YulFunctionCall", - "src": "9736:29:35" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "9716:3:35" - }, - "nodeType": "YulFunctionCall", - "src": "9716:50:35" - } - ], - "functionName": { - "name": "calldatacopy", - "nodeType": "YulIdentifier", - "src": "9420:12:35" - }, - "nodeType": "YulFunctionCall", - "src": "9420:433:35" - }, - "nodeType": "YulExpressionStatement", - "src": "9420:433:35" - }, - { - "nodeType": "YulAssignment", - "src": "9969:23:35", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "9987:4:35", - "type": "", - "value": "0x40" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "9981:5:35" - }, - "nodeType": "YulFunctionCall", - "src": "9981:11:35" - }, - "variableNames": [ - { - "name": "metaData", - "nodeType": "YulIdentifier", - "src": "9969:8:35" - } - ] - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "10061:4:35", - "type": "", - "value": "0x40" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "10071:4:35", - "type": "", - "value": "0x40" - }, - { - "arguments": [ - { - "name": "metaData", - "nodeType": "YulIdentifier", - "src": "10081:8:35" - }, - { - "name": "lenMeta", - "nodeType": "YulIdentifier", - "src": "10091:7:35" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "10077:3:35" - }, - "nodeType": "YulFunctionCall", - "src": "10077:22:35" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "10067:3:35" - }, - "nodeType": "YulFunctionCall", - "src": "10067:33:35" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "10054:6:35" - }, - "nodeType": "YulFunctionCall", - "src": "10054:47:35" - }, - "nodeType": "YulExpressionStatement", - "src": "10054:47:35" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "10212:60:35", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "10235:4:35", - "type": "", - "value": "0xA4" - }, - { - "name": "lenDestinationRecipientAddress", - "nodeType": "YulIdentifier", - "src": "10241:30:35" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "10231:3:35" - }, - "nodeType": "YulFunctionCall", - "src": "10231:41:35" - }, - "variables": [ - { - "name": "metaDataLoc", - "nodeType": "YulTypedName", - "src": "10216:11:35", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "metaData", - "nodeType": "YulIdentifier", - "src": "10435:8:35" - }, - { - "name": "metaDataLoc", - "nodeType": "YulIdentifier", - "src": "10507:11:35" - }, - { - "arguments": [ - { - "arguments": [], - "functionName": { - "name": "calldatasize", - "nodeType": "YulIdentifier", - "src": "10618:12:35" - }, - "nodeType": "YulFunctionCall", - "src": "10618:14:35" - }, - { - "name": "metaDataLoc", - "nodeType": "YulIdentifier", - "src": "10634:11:35" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "10614:3:35" - }, - "nodeType": "YulFunctionCall", - "src": "10614:32:35" - } - ], - "functionName": { - "name": "calldatacopy", - "nodeType": "YulIdentifier", - "src": "10405:12:35" - }, - "nodeType": "YulFunctionCall", - "src": "10405:299:35" - }, - "nodeType": "YulExpressionStatement", - "src": "10405:299:35" - } - ] - }, - "evmVersion": "istanbul", - "externalReferences": [ - { - "declaration": 7526, - "isOffset": false, - "isSlot": false, - "src": "8838:27:35", - "valueSize": 1 - }, - { - "declaration": 7526, - "isOffset": false, - "isSlot": false, - "src": "9315:27:35", - "valueSize": 1 - }, - { - "declaration": 7526, - "isOffset": false, - "isSlot": false, - "src": "9450:27:35", - "valueSize": 1 - }, - { - "declaration": 7529, - "isOffset": false, - "isSlot": false, - "src": "10081:8:35", - "valueSize": 1 - }, - { - "declaration": 7529, - "isOffset": false, - "isSlot": false, - "src": "10435:8:35", - "valueSize": 1 - }, - { - "declaration": 7529, - "isOffset": false, - "isSlot": false, - "src": "9969:8:35", - "valueSize": 1 - }, - { - "declaration": 7523, - "isOffset": false, - "isSlot": false, - "src": "8741:7:35", - "valueSize": 1 - } - ], - "id": 7531, - "nodeType": "InlineAssembly", - "src": "8718:1996:35" - }, - { - "assignments": [7533], - "declarations": [ - { - "constant": false, - "id": 7533, - "mutability": "mutable", - "name": "recipientAddress", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7581, - "src": "10724:24:35", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes20", - "typeString": "bytes20" - }, - "typeName": { - "id": 7532, - "name": "bytes20", - "nodeType": "ElementaryTypeName", - "src": "10724:7:35", - "typeDescriptions": { - "typeIdentifier": "t_bytes20", - "typeString": "bytes20" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 7534, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "10724:24:35" - }, - { - "AST": { - "nodeType": "YulBlock", - "src": "10768:89:35", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "10782:65:35", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "destinationRecipientAddress", - "nodeType": "YulIdentifier", - "src": "10812:27:35" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "10841:4:35", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "10808:3:35" - }, - "nodeType": "YulFunctionCall", - "src": "10808:38:35" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "10802:5:35" - }, - "nodeType": "YulFunctionCall", - "src": "10802:45:35" - }, - "variableNames": [ - { - "name": "recipientAddress", - "nodeType": "YulIdentifier", - "src": "10782:16:35" - } - ] - } - ] - }, - "evmVersion": "istanbul", - "externalReferences": [ - { - "declaration": 7526, - "isOffset": false, - "isSlot": false, - "src": "10812:27:35", - "valueSize": 1 - }, - { - "declaration": 7533, - "isOffset": false, - "isSlot": false, - "src": "10782:16:35", - "valueSize": 1 - } - ], - "id": 7535, - "nodeType": "InlineAssembly", - "src": "10759:98:35" - }, - { - "assignments": [7537], - "declarations": [ - { - "constant": false, - "id": 7537, - "mutability": "mutable", - "name": "tokenAddress", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7581, - "src": "10867:20:35", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 7536, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "10867:7:35", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 7541, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 7538, - "name": "_resourceIDToTokenContractAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8039, - "src": "10890:33:35", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", - "typeString": "mapping(bytes32 => address)" - } - }, - "id": 7540, - "indexExpression": { - "argumentTypes": null, - "id": 7539, - "name": "resourceID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7514, - "src": "10924:10:35", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10890:45:35", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "10867:68:35" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 7543, - "name": "_contractWhitelist", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8047, - "src": "10953:18:35", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 7548, - "indexExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 7546, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7537, - "src": "10980:12:35", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 7545, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "10972:7:35", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 7544, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "10972:7:35", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 7547, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10972:21:35", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10953:41:35", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "70726f766964656420746f6b656e41646472657373206973206e6f742077686974656c6973746564", - "id": 7549, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10996:42:35", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_d6f36190bb0602e32e72016fc9d55735c428c14ee06e9999974578d6c009c7ad", - "typeString": "literal_string \"provided tokenAddress is not whitelisted\"" - }, - "value": "provided tokenAddress is not whitelisted" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_d6f36190bb0602e32e72016fc9d55735c428c14ee06e9999974578d6c009c7ad", - "typeString": "literal_string \"provided tokenAddress is not whitelisted\"" - } - ], - "id": 7542, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "10945:7:35", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 7550, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10945:94:35", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 7551, - "nodeType": "ExpressionStatement", - "src": "10945:94:35" - }, - { - "condition": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 7552, - "name": "_burnList", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8051, - "src": "11054:9:35", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 7554, - "indexExpression": { - "argumentTypes": null, - "id": 7553, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7537, - "src": "11064:12:35", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "11054:23:35", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 7579, - "nodeType": "Block", - "src": "11180:103:35", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 7567, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7537, - "src": "11208:12:35", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 7570, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -28, - "src": "11230:4:35", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC721Handler_$7607", - "typeString": "contract ERC721Handler" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_ERC721Handler_$7607", - "typeString": "contract ERC721Handler" - } - ], - "id": 7569, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "11222:7:35", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 7568, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "11222:7:35", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 7571, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11222:13:35", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 7574, - "name": "recipientAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7533, - "src": "11245:16:35", - "typeDescriptions": { - "typeIdentifier": "t_bytes20", - "typeString": "bytes20" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes20", - "typeString": "bytes20" - } - ], - "id": 7573, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "11237:7:35", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 7572, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "11237:7:35", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 7575, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11237:25:35", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - { - "argumentTypes": null, - "id": 7576, - "name": "tokenID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7523, - "src": "11264:7:35", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 7566, - "name": "releaseERC721", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6182, - "src": "11194:13:35", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,address,uint256)" - } - }, - "id": 7577, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11194:78:35", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 7578, - "nodeType": "ExpressionStatement", - "src": "11194:78:35" - } - ] - }, - "id": 7580, - "nodeType": "IfStatement", - "src": "11050:233:35", - "trueBody": { - "id": 7565, - "nodeType": "Block", - "src": "11079:95:35", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 7556, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7537, - "src": "11104:12:35", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 7559, - "name": "recipientAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7533, - "src": "11126:16:35", - "typeDescriptions": { - "typeIdentifier": "t_bytes20", - "typeString": "bytes20" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes20", - "typeString": "bytes20" - } - ], - "id": 7558, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "11118:7:35", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 7557, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "11118:7:35", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 7560, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11118:25:35", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - { - "argumentTypes": null, - "id": 7561, - "name": "tokenID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7523, - "src": "11145:7:35", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 7562, - "name": "metaData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7529, - "src": "11154:8:35", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 7555, - "name": "mintERC721", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6212, - "src": "11093:10:35", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (address,address,uint256,bytes memory)" - } - }, - "id": 7563, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11093:70:35", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 7564, - "nodeType": "ExpressionStatement", - "src": "11093:70:35" - } - ] - } - } - ] + "declaration": 2479, + "isOffset": false, + "isSlot": false, + "src": "5963:27:21", + "valueSize": 1 + }, + { + "declaration": 2479, + "isOffset": false, + "isSlot": false, + "src": "6266:27:21", + "valueSize": 1 + }, + { + "declaration": 2473, + "isOffset": false, + "isSlot": false, + "src": "5722:30:21", + "valueSize": 1 + }, + { + "declaration": 2473, + "isOffset": false, + "isSlot": false, + "src": "5992:30:21", + "valueSize": 1 + }, + { + "declaration": 2476, + "isOffset": false, + "isSlot": false, + "src": "5613:7:21", + "valueSize": 1 + } + ], + "id": 2484, + "nodeType": "InlineAssembly", + "src": "5543:1042:21" + }, + { + "assignments": [ + 2486 + ], + "declarations": [ + { + "constant": false, + "id": 2486, + "mutability": "mutable", + "name": "tokenAddress", + "nameLocation": "6605:12:21", + "nodeType": "VariableDeclaration", + "scope": 2565, + "src": "6597:20:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2485, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6597:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 2490, + "initialValue": { + "baseExpression": { + "id": 2487, + "name": "_resourceIDToTokenContractAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3089, + "src": "6620:33:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + } + }, + "id": 2489, + "indexExpression": { + "id": 2488, + "name": "resourceID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2458, + "src": "6654:10:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6620:45:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6597:68:21" + }, + { + "expression": { + "arguments": [ + { + "baseExpression": { + "id": 2492, + "name": "_contractWhitelist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3097, + "src": "6684:18:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2494, + "indexExpression": { + "id": 2493, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2486, + "src": "6703:12:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, - "documentation": { - "id": 7512, - "nodeType": "StructuredDocumentation", - "src": "7492:995:35", - "text": "@notice Proposal execution should be initiated when a proposal is finalized in the Bridge contract.\nby a relayer on the deposit's destination chain.\n@param data Consists of {tokenID}, {resourceID}, {lenDestinationRecipientAddress},\n{destinationRecipientAddress}, {lenMeta}, and {metaData} all padded to 32 bytes.\n@notice Data passed into the function should be constructed as follows:\ntokenID uint256 bytes 0 - 32\ndestinationRecipientAddress length uint256 bytes 32 - 64\ndestinationRecipientAddress bytes bytes 64 - (64 + len(destinationRecipientAddress))\nmetadata length uint256 bytes (64 + len(destinationRecipientAddress)) - (64 + len(destinationRecipientAddress) + 32)\nmetadata bytes bytes (64 + len(destinationRecipientAddress) + 32) - END" - }, - "functionSelector": "e248cff2", - "id": 7582, - "implemented": true, - "kind": "function", - "modifiers": [ + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6684:32:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "70726f766964656420746f6b656e41646472657373206973206e6f742077686974656c6973746564", + "id": 2495, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6718:42:21", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d6f36190bb0602e32e72016fc9d55735c428c14ee06e9999974578d6c009c7ad", + "typeString": "literal_string \"provided tokenAddress is not whitelisted\"" + }, + "value": "provided tokenAddress is not whitelisted" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d6f36190bb0602e32e72016fc9d55735c428c14ee06e9999974578d6c009c7ad", + "typeString": "literal_string \"provided tokenAddress is not whitelisted\"" + } + ], + "id": 2491, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "6676:7:21", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2496, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6676:85:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2497, + "nodeType": "ExpressionStatement", + "src": "6676:85:21" + }, + { + "condition": { + "arguments": [ + { + "id": 2500, + "name": "_INTERFACE_ERC721_METADATA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2343, + "src": "6882:26:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "expression": { + "id": 2498, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2486, + "src": "6851:12:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2499, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6864:17:21", + "memberName": "supportsInterface", + "nodeType": "MemberAccess", + "referencedDeclaration": 4256, + "src": "6851:30:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$attached_to$_t_address_$", + "typeString": "function (address,bytes4) view returns (bool)" + } + }, + "id": 2501, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6851:58:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2520, + "nodeType": "IfStatement", + "src": "6847:202:21", + "trueBody": { + "id": 2519, + "nodeType": "Block", + "src": "6911:138:21", + "statements": [ + { + "assignments": [ + 2504 + ], + "declarations": [ + { + "constant": false, + "id": 2504, + "mutability": "mutable", + "name": "erc721", + "nameLocation": "6942:6:21", + "nodeType": "VariableDeclaration", + "scope": 2519, + "src": "6926:22:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721Metadata_$7348", + "typeString": "contract IERC721Metadata" + }, + "typeName": { + "id": 2503, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2502, + "name": "IERC721Metadata", + "nameLocations": [ + "6926:15:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 7348, + "src": "6926:15:21" + }, + "referencedDeclaration": 7348, + "src": "6926:15:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721Metadata_$7348", + "typeString": "contract IERC721Metadata" + } + }, + "visibility": "internal" + } + ], + "id": 2508, + "initialValue": { + "arguments": [ { - "arguments": null, - "id": 7520, - "modifierName": { - "argumentTypes": null, - "id": 7519, - "name": "onlyBridge", + "id": 2506, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2486, + "src": "6967:12:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2505, + "name": "IERC721Metadata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7348, + "src": "6951:15:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC721Metadata_$7348_$", + "typeString": "type(contract IERC721Metadata)" + } + }, + "id": 2507, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6951:29:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721Metadata_$7348", + "typeString": "contract IERC721Metadata" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6926:54:21" + }, + { + "expression": { + "id": 2517, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2509, + "name": "metaData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2482, + "src": "6995:8:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "id": 2514, + "name": "tokenID", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8062, - "src": "8576:10:35", + "referencedDeclaration": 2476, + "src": "7028:7:21", "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - }, - "nodeType": "ModifierInvocation", - "src": "8576:10:35" - } - ], - "name": "executeProposal", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 7518, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "8567:8:35" - }, - "parameters": { - "id": 7517, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 7514, - "mutability": "mutable", - "name": "resourceID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7582, - "src": "8517:18:35", - "stateVariable": false, - "storageLocation": "default", + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 2512, + "name": "erc721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2504, + "src": "7012:6:21", "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 7513, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "8517:7:35", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" + "typeIdentifier": "t_contract$_IERC721Metadata_$7348", + "typeString": "contract IERC721Metadata" + } + }, + "id": 2513, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7019:8:21", + "memberName": "tokenURI", + "nodeType": "MemberAccess", + "referencedDeclaration": 7347, + "src": "7012:15:21", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_string_memory_ptr_$", + "typeString": "function (uint256) view external returns (string memory)" + } }, - { - "constant": false, - "id": 7516, - "mutability": "mutable", - "name": "data", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7582, - "src": "8537:19:35", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 7515, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "8537:5:35", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" + "id": 2515, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7012:24:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" } + } ], - "src": "8516:41:35" - }, - "returnParameters": { - "id": 7521, - "nodeType": "ParameterList", - "parameters": [], - "src": "8587:0:35" - }, - "scope": 7607, - "src": "8492:2797:35", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "baseFunctions": [8137], - "body": { - "id": 7605, - "nodeType": "Block", - "src": "11660:79:35", - "statements": [ + "expression": { + "argumentTypes": [ { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 7596, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7585, - "src": "11684:12:35", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 7599, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -28, - "src": "11706:4:35", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC721Handler_$7607", - "typeString": "contract ERC721Handler" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_ERC721Handler_$7607", - "typeString": "contract ERC721Handler" - } - ], - "id": 7598, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "11698:7:35", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 7597, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "11698:7:35", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 7600, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11698:13:35", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 7601, - "name": "recipient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7587, - "src": "11713:9:35", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 7602, - "name": "tokenID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7589, - "src": "11724:7:35", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 7595, - "name": "releaseERC721", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6182, - "src": "11670:13:35", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,address,uint256)" - } - }, - "id": 7603, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11670:62:35", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 7604, - "nodeType": "ExpressionStatement", - "src": "11670:62:35" + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" } - ] + ], + "id": 2511, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7006:5:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 2510, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7006:5:21", + "typeDescriptions": {} + } + }, + "id": 2516, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7006:31:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "src": "6995:42:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } }, - "documentation": { - "id": 7583, - "nodeType": "StructuredDocumentation", - "src": "11295:258:35", - "text": "@notice Used to manually release ERC721 tokens from ERC721Safe.\n@param tokenAddress Address of token contract to release.\n@param recipient Address to release token to.\n@param tokenID The ERC721 token ID to release." - }, - "functionSelector": "d9caed12", - "id": 7606, - "implemented": true, - "kind": "function", - "modifiers": [ + "id": 2518, + "nodeType": "ExpressionStatement", + "src": "6995:42:21" + } + ] + } + }, + { + "condition": { + "baseExpression": { + "id": 2521, + "name": "_burnList", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3101, + "src": "7065:9:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2523, + "indexExpression": { + "id": 2522, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2486, + "src": "7075:12:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7065:23:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 2540, + "nodeType": "Block", + "src": "7156:86:21", + "statements": [ + { + "expression": { + "arguments": [ { - "arguments": null, - "id": 7593, - "modifierName": { - "argumentTypes": null, - "id": 7592, - "name": "onlyBridge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8062, - "src": "11649:10:35", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "11649:10:35" - } - ], - "name": "withdraw", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 7591, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "11640:8:35" - }, - "parameters": { - "id": 7590, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 7585, - "mutability": "mutable", - "name": "tokenAddress", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7606, - "src": "11576:20:35", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 7584, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "11576:7:35", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, + "id": 2531, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2486, + "src": "7182:12:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2532, + "name": "depositer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2464, + "src": "7196:9:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ { - "constant": false, - "id": 7587, - "mutability": "mutable", - "name": "recipient", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7606, - "src": "11598:17:35", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 7586, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "11598:7:35", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" + "id": 2535, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967268, + "src": "7215:4:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721Handler_$2662", + "typeString": "contract ERC721Handler" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC721Handler_$2662", + "typeString": "contract ERC721Handler" + } + ], + "id": 2534, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7207:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" }, - { - "constant": false, - "id": 7589, - "mutability": "mutable", - "name": "tokenID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7606, - "src": "11617:12:35", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 7588, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "11617:4:35", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" + "typeName": { + "id": 2533, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7207:7:21", + "typeDescriptions": {} } + }, + "id": 2536, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7207:13:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2537, + "name": "tokenID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2476, + "src": "7222:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } ], - "src": "11575:55:35" + "id": 2530, + "name": "lockERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1772, + "src": "7171:10:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,address,uint256)" + } + }, + "id": 2538, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7171:59:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } }, - "returnParameters": { - "id": 7594, - "nodeType": "ParameterList", - "parameters": [], - "src": "11660:0:35" + "id": 2539, + "nodeType": "ExpressionStatement", + "src": "7171:59:21" + } + ] + }, + "id": 2541, + "nodeType": "IfStatement", + "src": "7061:181:21", + "trueBody": { + "id": 2529, + "nodeType": "Block", + "src": "7090:60:21", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2525, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2486, + "src": "7116:12:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2526, + "name": "tokenID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2476, + "src": "7130:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2524, + "name": "burnERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1853, + "src": "7105:10:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 2527, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7105:33:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } }, - "scope": 7607, - "src": "11558:181:35", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - } - ], - "scope": 7608, - "src": "511:11230:35" - } - ], - "src": "0:11742:35" - }, - "legacyAST": { - "attributes": { - "absolutePath": "project:/contracts/handlers/ERC721Handler.sol", - "exportedSymbols": { - "ERC721Handler": [7607] - }, - "license": null - }, - "children": [ - { - "attributes": { - "literals": ["solidity", "0.7", ".0"] - }, - "id": 7271, - "name": "PragmaDirective", - "src": "0:22:35" - }, - { - "attributes": { - "literals": ["experimental", "ABIEncoderV2"] - }, - "id": 7272, - "name": "PragmaDirective", - "src": "23:33:35" - }, - { - "attributes": { - "SourceUnit": 8246, - "absolutePath": "project:/contracts/interfaces/IDepositExecute.sol", - "file": "../interfaces/IDepositExecute.sol", - "scope": 7608, - "symbolAliases": [null], - "unitAlias": "" - }, - "id": 7273, - "name": "ImportDirective", - "src": "58:43:35" - }, - { - "attributes": { - "SourceUnit": 8210, - "absolutePath": "project:/contracts/handlers/HandlerHelpers.sol", - "file": "./HandlerHelpers.sol", - "scope": 7608, - "symbolAliases": [null], - "unitAlias": "" - }, - "id": 7274, - "name": "ImportDirective", - "src": "102:30:35" - }, - { - "attributes": { - "SourceUnit": 6235, - "absolutePath": "project:/contracts/ERC721Safe.sol", - "file": "../ERC721Safe.sol", - "scope": 7608, - "symbolAliases": [null], - "unitAlias": "" - }, - "id": 7275, - "name": "ImportDirective", - "src": "133:27:35" - }, - { - "attributes": { - "SourceUnit": 6092, - "absolutePath": "project:/contracts/ERC721MinterBurnerPauser.sol", - "file": "../ERC721MinterBurnerPauser.sol", - "scope": 7608, - "symbolAliases": [null], - "unitAlias": "" - }, - "id": 7276, - "name": "ImportDirective", - "src": "161:41:35" - }, - { - "attributes": { - "SourceUnit": 571, - "absolutePath": "@openzeppelin/contracts/introspection/ERC165Checker.sol", - "file": "@openzeppelin/contracts/introspection/ERC165Checker.sol", - "scope": 7608, - "symbolAliases": [null], - "unitAlias": "" - }, - "id": 7277, - "name": "ImportDirective", - "src": "203:65:35" - }, - { - "attributes": { - "SourceUnit": 2936, - "absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol", - "file": "@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol", - "scope": 7608, - "symbolAliases": [null], - "unitAlias": "" - }, - "id": 7278, - "name": "ImportDirective", - "src": "269:66:35" - }, - { - "attributes": { - "abstract": false, - "contractDependencies": [6234, 8209, 8245, 8283], - "contractKind": "contract", - "fullyImplemented": true, - "linearizedBaseContracts": [7607, 6234, 8209, 8283, 8245], - "name": "ERC721Handler", - "scope": 7608 + "id": 2528, + "nodeType": "ExpressionStatement", + "src": "7105:33:21" + } + ] + } }, - "children": [ - { - "attributes": { - "text": "@title Handles ERC721 deposits and deposit executions.\n@author ChainSafe Systems.\n@notice This contract is intended to be used with the Bridge contract." + { + "expression": { + "id": 2563, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "baseExpression": { + "id": 2542, + "name": "_depositRecords", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2367, + "src": "7254:15:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint8_$_t_mapping$_t_uint64_$_t_struct$_DepositRecord_$2360_storage_$_$", + "typeString": "mapping(uint8 => mapping(uint64 => struct ERC721Handler.DepositRecord storage ref))" + } }, - "id": 7279, - "name": "StructuredDocumentation", - "src": "338:172:35" - }, - { - "attributes": { - "arguments": null + "id": 2545, + "indexExpression": { + "id": 2543, + "name": "destinationChainID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2460, + "src": "7270:18:21", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "IDepositExecute", - "referencedDeclaration": 8245, - "type": "contract IDepositExecute" - }, - "id": 7280, - "name": "UserDefinedTypeName", - "src": "537:15:35" - } - ], - "id": 7281, - "name": "InheritanceSpecifier", - "src": "537:15:35" + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7254:35:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_DepositRecord_$2360_storage_$", + "typeString": "mapping(uint64 => struct ERC721Handler.DepositRecord storage ref)" + } + }, + "id": 2546, + "indexExpression": { + "id": 2544, + "name": "depositNonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2462, + "src": "7290:12:21", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "7254:49:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DepositRecord_$2360_storage", + "typeString": "struct ERC721Handler.DepositRecord storage ref" + } }, - { - "attributes": { - "arguments": null + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 2548, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2486, + "src": "7334:12:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, - "children": [ + { + "arguments": [ { - "attributes": { - "contractScope": null, - "name": "HandlerHelpers", - "referencedDeclaration": 8209, - "type": "contract HandlerHelpers" - }, - "id": 7282, - "name": "UserDefinedTypeName", - "src": "554:14:35" + "id": 2551, + "name": "lenDestinationRecipientAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2473, + "src": "7367:30:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } } - ], - "id": 7283, - "name": "InheritanceSpecifier", - "src": "554:14:35" - }, - { - "attributes": { - "arguments": null + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2550, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7361:5:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" + }, + "typeName": { + "id": 2549, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "7361:5:21", + "typeDescriptions": {} + } + }, + "id": 2552, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7361:37:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } }, - "children": [ + { + "arguments": [ { - "attributes": { - "contractScope": null, - "name": "ERC721Safe", - "referencedDeclaration": 6234, - "type": "contract ERC721Safe" - }, - "id": 7284, - "name": "UserDefinedTypeName", - "src": "570:10:35" + "id": 2555, + "name": "destinationChainID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2460, + "src": "7419:18:21", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } } - ], - "id": 7285, - "name": "InheritanceSpecifier", - "src": "570:10:35" - }, - { - "children": [ - { - "attributes": { - "contractScope": null, - "name": "ERC165Checker", - "referencedDeclaration": 570, - "type": "library ERC165Checker" - }, - "id": 7286, - "name": "UserDefinedTypeName", - "src": "593:13:35" + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 2554, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7413:5:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" }, - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 7287, - "name": "ElementaryTypeName", - "src": "611:7:35" + "typeName": { + "id": 2553, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "7413:5:21", + "typeDescriptions": {} } + }, + "id": 2556, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7413:25:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "id": 2557, + "name": "resourceID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2458, + "src": "7453:10:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 2558, + "name": "destinationRecipientAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2479, + "src": "7478:27:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 2559, + "name": "depositer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2464, + "src": "7520:9:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2560, + "name": "tokenID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2476, + "src": "7544:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2561, + "name": "metaData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2482, + "src": "7566:8:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } ], - "id": 7288, - "name": "UsingForDirective", - "src": "587:32:35" + "id": 2547, + "name": "DepositRecord", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2360, + "src": "7306:13:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_DepositRecord_$2360_storage_ptr_$", + "typeString": "type(struct ERC721Handler.DepositRecord storage pointer)" + } + }, + "id": 2562, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7306:279:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_DepositRecord_$2360_memory_ptr", + "typeString": "struct ERC721Handler.DepositRecord memory" + } }, + "src": "7254:331:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DepositRecord_$2360_storage", + "typeString": "struct ERC721Handler.DepositRecord storage ref" + } + }, + "id": 2564, + "nodeType": "ExpressionStatement", + "src": "7254:331:21" + } + ] + }, + "documentation": { + "id": 2456, + "nodeType": "StructuredDocumentation", + "src": "3787:1286:21", + "text": "@notice A deposit is initiatied by making a deposit in the Bridge contract.\n@param destinationChainID Chain ID of chain token is expected to be bridged to.\n@param depositNonce This value is generated as an ID by the Bridge contract.\n@param depositer Address of account making the deposit in the Bridge contract.\n@param data Consists of: {resourceID}, {tokenID}, {lenDestinationRecipientAddress},\nand {destinationRecipientAddress} all padded to 32 bytes.\n@notice Data passed into the function should be constructed as follows:\ntokenID uint256 bytes 0 - 32\ndestinationRecipientAddress length uint256 bytes 32 - 64\ndestinationRecipientAddress bytes bytes 64 - (64 + len(destinationRecipientAddress))\n@notice If the corresponding {tokenAddress} for the parsed {resourceID} supports {_INTERFACE_ERC721_METADATA},\nthen {metaData} will be set according to the {tokenURI} method in the token contract.\n@dev Depending if the corresponding {tokenAddress} for the parsed {resourceID} is\nmarked true in {_burnList}, deposited tokens will be burned, if not, they will be locked." + }, + "functionSelector": "38995da9", + "id": 2566, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2470, + "kind": "modifierInvocation", + "modifierName": { + "id": 2469, + "name": "onlyBridge", + "nameLocations": [ + "5351:10:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3108, + "src": "5351:10:21" + }, + "nodeType": "ModifierInvocation", + "src": "5351:10:21" + } + ], + "name": "deposit", + "nameLocation": "5088:7:21", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 2468, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "5342:8:21" + }, + "parameters": { + "id": 2467, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2458, + "mutability": "mutable", + "name": "resourceID", + "nameLocation": "5107:10:21", + "nodeType": "VariableDeclaration", + "scope": 2566, + "src": "5096:21:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2457, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5096:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2460, + "mutability": "mutable", + "name": "destinationChainID", + "nameLocation": "5152:18:21", + "nodeType": "VariableDeclaration", + "scope": 2566, + "src": "5140:30:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 2459, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "5140:5:21", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2462, + "mutability": "mutable", + "name": "depositNonce", + "nameLocation": "5205:12:21", + "nodeType": "VariableDeclaration", + "scope": 2566, + "src": "5193:24:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 2461, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "5193:6:21", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2464, + "mutability": "mutable", + "name": "depositer", + "nameLocation": "5252:9:21", + "nodeType": "VariableDeclaration", + "scope": 2566, + "src": "5240:21:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2463, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5240:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2466, + "mutability": "mutable", + "name": "data", + "nameLocation": "5305:4:21", + "nodeType": "VariableDeclaration", + "scope": 2566, + "src": "5284:25:21", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2465, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5284:5:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "5095:237:21" + }, + "returnParameters": { + "id": 2471, + "nodeType": "ParameterList", + "parameters": [], + "src": "5362:0:21" + }, + "scope": 2662, + "src": "5079:2514:21", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 3262 + ], + "body": { + "id": 2636, + "nodeType": "Block", + "src": "8708:2760:21", + "statements": [ + { + "assignments": [ + 2578 + ], + "declarations": [ { - "attributes": { - "constant": true, - "mutability": "constant", - "name": "_INTERFACE_ERC721_METADATA", - "overrides": null, - "scope": 7607, - "stateVariable": true, - "storageLocation": "default", - "type": "bytes4", - "visibility": "private" + "constant": false, + "id": 2578, + "mutability": "mutable", + "name": "tokenID", + "nameLocation": "8735:7:21", + "nodeType": "VariableDeclaration", + "scope": 2636, + "src": "8719:23:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2577, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8719:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2579, + "nodeType": "VariableDeclarationStatement", + "src": "8719:23:21" + }, + { + "assignments": [ + 2581 + ], + "declarations": [ + { + "constant": false, + "id": 2581, + "mutability": "mutable", + "name": "destinationRecipientAddress", + "nameLocation": "8769:27:21", + "nodeType": "VariableDeclaration", + "scope": 2636, + "src": "8753:43:21", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2580, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "8753:5:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 2582, + "nodeType": "VariableDeclarationStatement", + "src": "8753:43:21" + }, + { + "assignments": [ + 2584 + ], + "declarations": [ + { + "constant": false, + "id": 2584, + "mutability": "mutable", + "name": "metaData", + "nameLocation": "8823:8:21", + "nodeType": "VariableDeclaration", + "scope": 2636, + "src": "8807:24:21", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2583, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "8807:5:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 2585, + "nodeType": "VariableDeclarationStatement", + "src": "8807:24:21" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "8853:2024:21", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8868:32:21", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8895:4:21", + "type": "", + "value": "0x64" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "8882:12:21" + }, + "nodeType": "YulFunctionCall", + "src": "8882:18:21" }, - "children": [ + "variableNames": [ + { + "name": "tokenID", + "nodeType": "YulIdentifier", + "src": "8868:7:21" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "8969:49:21", + "value": { + "arguments": [ { - "attributes": { - "name": "bytes4", - "type": "bytes4" - }, - "id": 7289, - "name": "ElementaryTypeName", - "src": "625:6:35" - }, + "kind": "number", + "nodeType": "YulLiteral", + "src": "9013:4:21", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "9007:5:21" + }, + "nodeType": "YulFunctionCall", + "src": "9007:11:21" + }, + "variableNames": [ + { + "name": "destinationRecipientAddress", + "nodeType": "YulIdentifier", + "src": "8969:27:21" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "9073:56:21", + "value": { + "arguments": [ { - "attributes": { - "argumentTypes": null, - "hexvalue": "30783562356531333966", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 1532892063", - "value": "0x5b5e139f" - }, - "id": 7290, - "name": "Literal", - "src": "678:10:35" + "kind": "number", + "nodeType": "YulLiteral", + "src": "9124:4:21", + "type": "", + "value": "0x84" } - ], - "id": 7291, - "name": "VariableDeclaration", - "src": "625:63:35" - }, - { - "attributes": { - "canonicalName": "ERC721Handler.DepositRecord", - "name": "DepositRecord", - "scope": 7607, - "visibility": "public" + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "9111:12:21" + }, + "nodeType": "YulFunctionCall", + "src": "9111:18:21" }, - "children": [ + "variables": [ + { + "name": "lenDestinationRecipientAddress", + "nodeType": "YulTypedName", + "src": "9077:30:21", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "9341:70:21", + "value": { + "arguments": [ { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "_tokenAddress", - "overrides": null, - "scope": 7308, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9373:4:21", + "type": "", + "value": "0xA4" }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 7292, - "name": "ElementaryTypeName", - "src": "726:7:35" - } - ], - "id": 7293, - "name": "VariableDeclaration", - "src": "726:21:35" - }, + { + "name": "lenDestinationRecipientAddress", + "nodeType": "YulIdentifier", + "src": "9379:30:21" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9369:3:21" + }, + "nodeType": "YulFunctionCall", + "src": "9369:41:21" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "9356:12:21" + }, + "nodeType": "YulFunctionCall", + "src": "9356:55:21" + }, + "variables": [ + { + "name": "lenMeta", + "nodeType": "YulTypedName", + "src": "9345:7:21", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "_lenDestinationRecipientAddress", - "overrides": null, - "scope": 7308, - "stateVariable": false, - "storageLocation": "default", - "type": "uint8", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint8", - "type": "uint8" - }, - "id": 7294, - "name": "ElementaryTypeName", - "src": "757:5:35" - } - ], - "id": 7295, - "name": "VariableDeclaration", - "src": "757:40:35" + "kind": "number", + "nodeType": "YulLiteral", + "src": "9434:4:21", + "type": "", + "value": "0x40" }, { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "_destinationChainID", - "overrides": null, - "scope": 7308, - "stateVariable": false, - "storageLocation": "default", - "type": "uint8", - "value": null, - "visibility": "internal" + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9444:4:21", + "type": "", + "value": "0x40" }, - "children": [ + { + "arguments": [ { - "attributes": { - "name": "uint8", - "type": "uint8" - }, - "id": 7296, - "name": "ElementaryTypeName", - "src": "807:5:35" - } - ], - "id": 7297, - "name": "VariableDeclaration", - "src": "807:27:35" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "_resourceID", - "overrides": null, - "scope": 7308, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ + "name": "destinationRecipientAddress", + "nodeType": "YulIdentifier", + "src": "9454:27:21" + }, { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 7298, - "name": "ElementaryTypeName", - "src": "844:7:35" + "name": "lenDestinationRecipientAddress", + "nodeType": "YulIdentifier", + "src": "9483:30:21" } - ], - "id": 7299, - "name": "VariableDeclaration", - "src": "844:19:35" - }, + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9450:3:21" + }, + "nodeType": "YulFunctionCall", + "src": "9450:64:21" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9440:3:21" + }, + "nodeType": "YulFunctionCall", + "src": "9440:75:21" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9427:6:21" + }, + "nodeType": "YulFunctionCall", + "src": "9427:89:21" + }, + "nodeType": "YulExpressionStatement", + "src": "9427:89:21" + }, + { + "expression": { + "arguments": [ { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "_destinationRecipientAddress", - "overrides": null, - "scope": 7308, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes", - "type": "bytes" - }, - "id": 7300, - "name": "ElementaryTypeName", - "src": "873:5:35" - } - ], - "id": 7301, - "name": "VariableDeclaration", - "src": "873:36:35" + "name": "destinationRecipientAddress", + "nodeType": "YulIdentifier", + "src": "9592:27:21" }, { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "_depositer", - "overrides": null, - "scope": 7308, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 7302, - "name": "ElementaryTypeName", - "src": "919:7:35" - } - ], - "id": 7303, - "name": "VariableDeclaration", - "src": "919:18:35" + "kind": "number", + "nodeType": "YulLiteral", + "src": "9705:4:21", + "type": "", + "value": "0x84" }, { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "_tokenID", - "overrides": null, - "scope": 7308, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "calldatasize", + "nodeType": "YulIdentifier", + "src": "9864:12:21" + }, + "nodeType": "YulFunctionCall", + "src": "9864:14:21" }, - "children": [ + { + "arguments": [ { - "attributes": { - "name": "uint", - "type": "uint256" - }, - "id": 7304, - "name": "ElementaryTypeName", - "src": "947:4:35" - } - ], - "id": 7305, - "name": "VariableDeclaration", - "src": "947:16:35" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "_metaData", - "overrides": null, - "scope": 7308, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes", - "value": null, - "visibility": "internal" - }, - "children": [ + "kind": "number", + "nodeType": "YulLiteral", + "src": "9884:4:21", + "type": "", + "value": "0x84" + }, { - "attributes": { - "name": "bytes", - "type": "bytes" + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9894:4:21", + "type": "", + "value": "0x20" }, - "id": 7306, - "name": "ElementaryTypeName", - "src": "973:5:35" + { + "name": "lenMeta", + "nodeType": "YulIdentifier", + "src": "9900:7:21" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9890:3:21" + }, + "nodeType": "YulFunctionCall", + "src": "9890:18:21" } - ], - "id": 7307, - "name": "VariableDeclaration", - "src": "973:17:35" + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9880:3:21" + }, + "nodeType": "YulFunctionCall", + "src": "9880:29:21" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "9860:3:21" + }, + "nodeType": "YulFunctionCall", + "src": "9860:50:21" } - ], - "id": 7308, - "name": "StructDefinition", - "src": "695:302:35" - }, - { - "attributes": { - "constant": false, - "functionSelector": "4402027f", - "mutability": "mutable", - "name": "_depositRecords", - "overrides": null, - "scope": 7607, - "stateVariable": true, - "storageLocation": "default", - "type": "mapping(uint8 => mapping(uint64 => struct ERC721Handler.DepositRecord))", - "value": null, - "visibility": "public" + ], + "functionName": { + "name": "calldatacopy", + "nodeType": "YulIdentifier", + "src": "9561:12:21" + }, + "nodeType": "YulFunctionCall", + "src": "9561:437:21" }, - "children": [ + "nodeType": "YulExpressionStatement", + "src": "9561:437:21" + }, + { + "nodeType": "YulAssignment", + "src": "10118:23:21", + "value": { + "arguments": [ { - "attributes": { - "type": "mapping(uint8 => mapping(uint64 => struct ERC721Handler.DepositRecord))" - }, - "children": [ - { - "attributes": { - "name": "uint8", - "type": "uint8" - }, - "id": 7309, - "name": "ElementaryTypeName", - "src": "1050:5:35" - }, - { - "attributes": { - "type": "mapping(uint64 => struct ERC721Handler.DepositRecord)" - }, - "children": [ - { - "attributes": { - "name": "uint64", - "type": "uint64" - }, - "id": 7310, - "name": "ElementaryTypeName", - "src": "1068:6:35" - }, - { - "attributes": { - "contractScope": null, - "name": "DepositRecord", - "referencedDeclaration": 7308, - "type": "struct ERC721Handler.DepositRecord" - }, - "id": 7311, - "name": "UserDefinedTypeName", - "src": "1078:13:35" - } - ], - "id": 7312, - "name": "Mapping", - "src": "1059:33:35" - } - ], - "id": 7313, - "name": "Mapping", - "src": "1041:52:35" + "kind": "number", + "nodeType": "YulLiteral", + "src": "10136:4:21", + "type": "", + "value": "0x40" } - ], - "id": 7314, - "name": "VariableDeclaration", - "src": "1041:75:35" - }, - { - "attributes": { - "implemented": true, - "isConstructor": true, - "kind": "constructor", - "modifiers": [null], - "name": "", - "overrides": null, - "scope": 7607, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "10130:5:21" + }, + "nodeType": "YulFunctionCall", + "src": "10130:11:21" }, - "children": [ - { - "attributes": { - "text": "@param bridgeAddress Contract address of previously deployed Bridge.\n@param initialResourceIDs Resource IDs are used to identify a specific contract address.\nThese are the Resource IDs this contract will initially support.\n@param initialContractAddresses These are the addresses the {initialResourceIDs} will point to, and are the contracts that will be\ncalled to perform various deposit calls.\n@param burnableContractAddresses These addresses will be set as burnable and when {deposit} is called, the deposited token will be burned.\nWhen {executeProposal} is called, new tokens will be minted.\n@dev {initialResourceIDs} and {initialContractAddresses} must have the same length (one resourceID for every address).\nAlso, these arrays must be ordered in the way that {initialResourceIDs}[0] is the intended resourceID for {initialContractAddresses}[0]." - }, - "id": 7315, - "name": "StructuredDocumentation", - "src": "1123:935:35" - }, + "variableNames": [ + { + "name": "metaData", + "nodeType": "YulIdentifier", + "src": "10118:8:21" + } + ] + }, + { + "expression": { + "arguments": [ { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "bridgeAddress", - "overrides": null, - "scope": 7384, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 7316, - "name": "ElementaryTypeName", - "src": "2084:7:35" - } - ], - "id": 7317, - "name": "VariableDeclaration", - "src": "2084:21:35" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "initialResourceIDs", - "overrides": null, - "scope": 7384, - "stateVariable": false, - "storageLocation": "memory", - "type": "bytes32[]", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "length": null, - "type": "bytes32[]" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 7318, - "name": "ElementaryTypeName", - "src": "2115:7:35" - } - ], - "id": 7319, - "name": "ArrayTypeName", - "src": "2115:9:35" - } - ], - "id": 7320, - "name": "VariableDeclaration", - "src": "2115:35:35" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "initialContractAddresses", - "overrides": null, - "scope": 7384, - "stateVariable": false, - "storageLocation": "memory", - "type": "address[]", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "length": null, - "type": "address[]" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 7321, - "name": "ElementaryTypeName", - "src": "2160:7:35" - } - ], - "id": 7322, - "name": "ArrayTypeName", - "src": "2160:9:35" - } - ], - "id": 7323, - "name": "VariableDeclaration", - "src": "2160:41:35" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "burnableContractAddresses", - "overrides": null, - "scope": 7384, - "stateVariable": false, - "storageLocation": "memory", - "type": "address[]", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "length": null, - "type": "address[]" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 7324, - "name": "ElementaryTypeName", - "src": "2211:7:35" - } - ], - "id": 7325, - "name": "ArrayTypeName", - "src": "2211:9:35" - } - ], - "id": 7326, - "name": "VariableDeclaration", - "src": "2211:42:35" - } - ], - "id": 7327, - "name": "ParameterList", - "src": "2074:185:35" + "kind": "number", + "nodeType": "YulLiteral", + "src": "10213:4:21", + "type": "", + "value": "0x40" }, { - "attributes": { - "parameters": [null] + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10223:4:21", + "type": "", + "value": "0x40" }, - "children": [], - "id": 7328, - "name": "ParameterList", - "src": "2267:0:35" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_4ad26bc3c99f2850e5fe1de98475000419054e7d49a87288c0e5940e995dd510", - "typeString": "literal_string \"initialResourceIDs and initialContractAddresses len mismatch\"" - } - ], - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 7329, - "name": "Identifier", - "src": "2277:7:35" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "length", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7320, - "type": "bytes32[] memory", - "value": "initialResourceIDs" - }, - "id": 7330, - "name": "Identifier", - "src": "2285:18:35" - } - ], - "id": 7331, - "name": "MemberAccess", - "src": "2285:25:35" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "length", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7323, - "type": "address[] memory", - "value": "initialContractAddresses" - }, - "id": 7332, - "name": "Identifier", - "src": "2314:24:35" - } - ], - "id": 7333, - "name": "MemberAccess", - "src": "2314:31:35" - } - ], - "id": 7334, - "name": "BinaryOperation", - "src": "2285:60:35" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "696e697469616c5265736f7572636549447320616e6420696e697469616c436f6e7472616374416464726573736573206c656e206d69736d61746368", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"initialResourceIDs and initialContractAddresses len mismatch\"", - "value": "initialResourceIDs and initialContractAddresses len mismatch" - }, - "id": 7335, - "name": "Literal", - "src": "2359:62:35" - } - ], - "id": 7336, - "name": "FunctionCall", - "src": "2277:145:35" - } - ], - "id": 7337, - "name": "ExpressionStatement", - "src": "2277:145:35" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 8035, - "type": "address", - "value": "_bridgeAddress" - }, - "id": 7338, - "name": "Identifier", - "src": "2433:14:35" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7317, - "type": "address", - "value": "bridgeAddress" - }, - "id": 7339, - "name": "Identifier", - "src": "2450:13:35" - } - ], - "id": 7340, - "name": "Assignment", - "src": "2433:30:35" - } - ], - "id": 7341, - "name": "ExpressionStatement", - "src": "2433:30:35" - }, + { + "arguments": [ { - "children": [ - { - "attributes": { - "assignments": [7343] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "i", - "overrides": null, - "scope": 7363, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 7342, - "name": "ElementaryTypeName", - "src": "2479:7:35" - } - ], - "id": 7343, - "name": "VariableDeclaration", - "src": "2479:9:35" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 7344, - "name": "Literal", - "src": "2491:1:35" - } - ], - "id": 7345, - "name": "VariableDeclarationStatement", - "src": "2479:13:35" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "<", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7343, - "type": "uint256", - "value": "i" - }, - "id": 7346, - "name": "Identifier", - "src": "2494:1:35" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "length", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7320, - "type": "bytes32[] memory", - "value": "initialResourceIDs" - }, - "id": 7347, - "name": "Identifier", - "src": "2498:18:35" - } - ], - "id": 7348, - "name": "MemberAccess", - "src": "2498:25:35" - } - ], - "id": 7349, - "name": "BinaryOperation", - "src": "2494:29:35" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "++", - "prefix": false, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7343, - "type": "uint256", - "value": "i" - }, - "id": 7350, - "name": "Identifier", - "src": "2525:1:35" - } - ], - "id": 7351, - "name": "UnaryOperation", - "src": "2525:3:35" - } - ], - "id": 7352, - "name": "ExpressionStatement", - "src": "2525:3:35" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 8163, - "type": "function (bytes32,address)", - "value": "_setResource" - }, - "id": 7353, - "name": "Identifier", - "src": "2544:12:35" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7320, - "type": "bytes32[] memory", - "value": "initialResourceIDs" - }, - "id": 7354, - "name": "Identifier", - "src": "2557:18:35" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7343, - "type": "uint256", - "value": "i" - }, - "id": 7355, - "name": "Identifier", - "src": "2576:1:35" - } - ], - "id": 7356, - "name": "IndexAccess", - "src": "2557:21:35" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7323, - "type": "address[] memory", - "value": "initialContractAddresses" - }, - "id": 7357, - "name": "Identifier", - "src": "2580:24:35" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7343, - "type": "uint256", - "value": "i" - }, - "id": 7358, - "name": "Identifier", - "src": "2605:1:35" - } - ], - "id": 7359, - "name": "IndexAccess", - "src": "2580:27:35" - } - ], - "id": 7360, - "name": "FunctionCall", - "src": "2544:64:35" - } - ], - "id": 7361, - "name": "ExpressionStatement", - "src": "2544:64:35" - } - ], - "id": 7362, - "name": "Block", - "src": "2530:89:35" - } - ], - "id": 7363, - "name": "ForStatement", - "src": "2474:145:35" + "name": "metaData", + "nodeType": "YulIdentifier", + "src": "10233:8:21" }, { - "children": [ - { - "attributes": { - "assignments": [7365] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "i", - "overrides": null, - "scope": 7382, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 7364, - "name": "ElementaryTypeName", - "src": "2634:7:35" - } - ], - "id": 7365, - "name": "VariableDeclaration", - "src": "2634:9:35" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 7366, - "name": "Literal", - "src": "2646:1:35" - } - ], - "id": 7367, - "name": "VariableDeclarationStatement", - "src": "2634:13:35" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "<", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7365, - "type": "uint256", - "value": "i" - }, - "id": 7368, - "name": "Identifier", - "src": "2649:1:35" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "length", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7326, - "type": "address[] memory", - "value": "burnableContractAddresses" - }, - "id": 7369, - "name": "Identifier", - "src": "2653:25:35" - } - ], - "id": 7370, - "name": "MemberAccess", - "src": "2653:32:35" - } - ], - "id": 7371, - "name": "BinaryOperation", - "src": "2649:36:35" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "++", - "prefix": false, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7365, - "type": "uint256", - "value": "i" - }, - "id": 7372, - "name": "Identifier", - "src": "2687:1:35" - } - ], - "id": 7373, - "name": "UnaryOperation", - "src": "2687:3:35" - } - ], - "id": 7374, - "name": "ExpressionStatement", - "src": "2687:3:35" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 8182, - "type": "function (address)", - "value": "_setBurnable" - }, - "id": 7375, - "name": "Identifier", - "src": "2706:12:35" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7326, - "type": "address[] memory", - "value": "burnableContractAddresses" - }, - "id": 7376, - "name": "Identifier", - "src": "2719:25:35" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7365, - "type": "uint256", - "value": "i" - }, - "id": 7377, - "name": "Identifier", - "src": "2745:1:35" - } - ], - "id": 7378, - "name": "IndexAccess", - "src": "2719:28:35" - } - ], - "id": 7379, - "name": "FunctionCall", - "src": "2706:42:35" - } - ], - "id": 7380, - "name": "ExpressionStatement", - "src": "2706:42:35" - } - ], - "id": 7381, - "name": "Block", - "src": "2692:67:35" - } - ], - "id": 7382, - "name": "ForStatement", - "src": "2629:130:35" + "name": "lenMeta", + "nodeType": "YulIdentifier", + "src": "10243:7:21" } - ], - "id": 7383, - "name": "Block", - "src": "2267:498:35" + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10229:3:21" + }, + "nodeType": "YulFunctionCall", + "src": "10229:22:21" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10219:3:21" + }, + "nodeType": "YulFunctionCall", + "src": "10219:33:21" } - ], - "id": 7384, - "name": "FunctionDefinition", - "src": "2063:702:35" - }, - { - "attributes": { - "functionSelector": "ba484c09", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [null], - "name": "getDepositRecord", - "overrides": null, - "scope": 7607, - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - "children": [ - { - "attributes": { - "text": "@param depositNonce This ID will have been generated by the Bridge contract.\n@param destId ID of chain deposit will be bridged to.\n@return DepositRecord which consists of:\n- _tokenAddress Address used when {deposit} was executed.\n- _destinationChainID ChainID deposited tokens are intended to end up on.\n- _resourceID ResourceID used when {deposit} was executed.\n- _lenDestinationRecipientAddress Used to parse recipient's address from {_destinationRecipientAddress}\n- _destinationRecipientAddress Address tokens are intended to be deposited to on desitnation chain.\n- _depositer Address that initially called {deposit} in the Bridge contract.\n- _tokenID ID of ERC721.\n- _metaData Optional ERC721 metadata." - }, - "id": 7385, - "name": "StructuredDocumentation", - "src": "2771:805:35" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "depositNonce", - "overrides": null, - "scope": 7401, - "stateVariable": false, - "storageLocation": "default", - "type": "uint64", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint64", - "type": "uint64" - }, - "id": 7386, - "name": "ElementaryTypeName", - "src": "3607:6:35" - } - ], - "id": 7387, - "name": "VariableDeclaration", - "src": "3607:19:35" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "destId", - "overrides": null, - "scope": 7401, - "stateVariable": false, - "storageLocation": "default", - "type": "uint8", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint8", - "type": "uint8" - }, - "id": 7388, - "name": "ElementaryTypeName", - "src": "3628:5:35" - } - ], - "id": 7389, - "name": "VariableDeclaration", - "src": "3628:12:35" - } - ], - "id": 7390, - "name": "ParameterList", - "src": "3606:35:35" - }, + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10206:6:21" + }, + "nodeType": "YulFunctionCall", + "src": "10206:47:21" + }, + "nodeType": "YulExpressionStatement", + "src": "10206:47:21" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "10367:60:21", + "value": { + "arguments": [ { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "", - "overrides": null, - "scope": 7401, - "stateVariable": false, - "storageLocation": "memory", - "type": "struct ERC721Handler.DepositRecord", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "DepositRecord", - "referencedDeclaration": 7308, - "type": "struct ERC721Handler.DepositRecord" - }, - "id": 7391, - "name": "UserDefinedTypeName", - "src": "3665:13:35" - } - ], - "id": 7392, - "name": "VariableDeclaration", - "src": "3665:20:35" - } - ], - "id": 7393, - "name": "ParameterList", - "src": "3664:22:35" + "kind": "number", + "nodeType": "YulLiteral", + "src": "10390:4:21", + "type": "", + "value": "0xA4" }, { - "children": [ - { - "attributes": { - "functionReturnParameters": 7393 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct ERC721Handler.DepositRecord storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "mapping(uint64 => struct ERC721Handler.DepositRecord storage ref)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7314, - "type": "mapping(uint8 => mapping(uint64 => struct ERC721Handler.DepositRecord storage ref))", - "value": "_depositRecords" - }, - "id": 7394, - "name": "Identifier", - "src": "3704:15:35" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7389, - "type": "uint8", - "value": "destId" - }, - "id": 7395, - "name": "Identifier", - "src": "3720:6:35" - } - ], - "id": 7396, - "name": "IndexAccess", - "src": "3704:23:35" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7387, - "type": "uint64", - "value": "depositNonce" - }, - "id": 7397, - "name": "Identifier", - "src": "3728:12:35" - } - ], - "id": 7398, - "name": "IndexAccess", - "src": "3704:37:35" - } - ], - "id": 7399, - "name": "Return", - "src": "3697:44:35" - } - ], - "id": 7400, - "name": "Block", - "src": "3687:61:35" + "name": "lenDestinationRecipientAddress", + "nodeType": "YulIdentifier", + "src": "10396:30:21" } - ], - "id": 7401, - "name": "FunctionDefinition", - "src": "3581:167:35" - }, - { - "attributes": { - "baseFunctions": [8236], - "functionSelector": "38995da9", - "implemented": true, - "isConstructor": false, - "kind": "function", - "name": "deposit", - "scope": 7607, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10386:3:21" + }, + "nodeType": "YulFunctionCall", + "src": "10386:41:21" }, - "children": [ + "variables": [ + { + "name": "metaDataLoc", + "nodeType": "YulTypedName", + "src": "10371:11:21", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ { - "attributes": { - "text": "@notice A deposit is initiatied by making a deposit in the Bridge contract.\n@param destinationChainID Chain ID of chain token is expected to be bridged to.\n@param depositNonce This value is generated as an ID by the Bridge contract.\n@param depositer Address of account making the deposit in the Bridge contract.\n@param data Consists of: {resourceID}, {tokenID}, {lenDestinationRecipientAddress},\nand {destinationRecipientAddress} all padded to 32 bytes.\n@notice Data passed into the function should be constructed as follows:\ntokenID uint256 bytes 0 - 32\ndestinationRecipientAddress length uint256 bytes 32 - 64\ndestinationRecipientAddress bytes bytes 64 - (64 + len(destinationRecipientAddress))\n@notice If the corresponding {tokenAddress} for the parsed {resourceID} supports {_INTERFACE_ERC721_METADATA},\nthen {metaData} will be set according to the {tokenURI} method in the token contract.\n@dev Depending if the corresponding {tokenAddress} for the parsed {resourceID} is\nmarked true in {_burnList}, deposited tokens will be burned, if not, they will be locked." - }, - "id": 7402, - "name": "StructuredDocumentation", - "src": "3754:1271:35" - }, - { - "attributes": { - "overrides": [null] - }, - "id": 7414, - "name": "OverrideSpecifier", - "src": "5288:8:35" + "name": "metaData", + "nodeType": "YulIdentifier", + "src": "10594:8:21" }, { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "resourceID", - "overrides": null, - "scope": 7511, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 7403, - "name": "ElementaryTypeName", - "src": "5047:7:35" - } - ], - "id": 7404, - "name": "VariableDeclaration", - "src": "5047:21:35" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "destinationChainID", - "overrides": null, - "scope": 7511, - "stateVariable": false, - "storageLocation": "default", - "type": "uint8", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint8", - "type": "uint8" - }, - "id": 7405, - "name": "ElementaryTypeName", - "src": "5090:5:35" - } - ], - "id": 7406, - "name": "VariableDeclaration", - "src": "5090:30:35" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "depositNonce", - "overrides": null, - "scope": 7511, - "stateVariable": false, - "storageLocation": "default", - "type": "uint64", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint64", - "type": "uint64" - }, - "id": 7407, - "name": "ElementaryTypeName", - "src": "5142:6:35" - } - ], - "id": 7408, - "name": "VariableDeclaration", - "src": "5142:24:35" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "depositer", - "overrides": null, - "scope": 7511, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 7409, - "name": "ElementaryTypeName", - "src": "5188:7:35" - } - ], - "id": 7410, - "name": "VariableDeclaration", - "src": "5188:21:35" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "data", - "overrides": null, - "scope": 7511, - "stateVariable": false, - "storageLocation": "calldata", - "type": "bytes", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes", - "type": "bytes" - }, - "id": 7411, - "name": "ElementaryTypeName", - "src": "5231:5:35" - } - ], - "id": 7412, - "name": "VariableDeclaration", - "src": "5231:25:35" - } - ], - "id": 7413, - "name": "ParameterList", - "src": "5046:232:35" + "name": "metaDataLoc", + "nodeType": "YulIdentifier", + "src": "10667:11:21" }, { - "attributes": { - "parameters": [null] + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "calldatasize", + "nodeType": "YulIdentifier", + "src": "10779:12:21" + }, + "nodeType": "YulFunctionCall", + "src": "10779:14:21" }, - "children": [], - "id": 7417, - "name": "ParameterList", - "src": "5308:0:35" - }, + { + "name": "metaDataLoc", + "nodeType": "YulIdentifier", + "src": "10795:11:21" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "10775:3:21" + }, + "nodeType": "YulFunctionCall", + "src": "10775:32:21" + } + ], + "functionName": { + "name": "calldatacopy", + "nodeType": "YulIdentifier", + "src": "10563:12:21" + }, + "nodeType": "YulFunctionCall", + "src": "10563:303:21" + }, + "nodeType": "YulExpressionStatement", + "src": "10563:303:21" + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2581, + "isOffset": false, + "isSlot": false, + "src": "8969:27:21", + "valueSize": 1 + }, + { + "declaration": 2581, + "isOffset": false, + "isSlot": false, + "src": "9454:27:21", + "valueSize": 1 + }, + { + "declaration": 2581, + "isOffset": false, + "isSlot": false, + "src": "9592:27:21", + "valueSize": 1 + }, + { + "declaration": 2584, + "isOffset": false, + "isSlot": false, + "src": "10118:8:21", + "valueSize": 1 + }, + { + "declaration": 2584, + "isOffset": false, + "isSlot": false, + "src": "10233:8:21", + "valueSize": 1 + }, + { + "declaration": 2584, + "isOffset": false, + "isSlot": false, + "src": "10594:8:21", + "valueSize": 1 + }, + { + "declaration": 2578, + "isOffset": false, + "isSlot": false, + "src": "8868:7:21", + "valueSize": 1 + } + ], + "id": 2586, + "nodeType": "InlineAssembly", + "src": "8844:2033:21" + }, + { + "assignments": [ + 2588 + ], + "declarations": [ + { + "constant": false, + "id": 2588, + "mutability": "mutable", + "name": "recipientAddress", + "nameLocation": "10897:16:21", + "nodeType": "VariableDeclaration", + "scope": 2636, + "src": "10889:24:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes20", + "typeString": "bytes20" + }, + "typeName": { + "id": 2587, + "name": "bytes20", + "nodeType": "ElementaryTypeName", + "src": "10889:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes20", + "typeString": "bytes20" + } + }, + "visibility": "internal" + } + ], + "id": 2589, + "nodeType": "VariableDeclarationStatement", + "src": "10889:24:21" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "10935:91:21", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "10950:65:21", + "value": { + "arguments": [ { - "attributes": { - "arguments": null + "arguments": [ + { + "name": "destinationRecipientAddress", + "nodeType": "YulIdentifier", + "src": "10980:27:21" }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 8062, - "type": "modifier ()", - "value": "onlyBridge" - }, - "id": 7415, - "name": "Identifier", - "src": "5297:10:35" - } - ], - "id": 7416, - "name": "ModifierInvocation", - "src": "5297:10:35" - }, - { - "children": [ - { - "attributes": { - "assignments": [7419], - "initialValue": null - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "lenDestinationRecipientAddress", - "overrides": null, - "scope": 7510, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint", - "type": "uint256" - }, - "id": 7418, - "name": "ElementaryTypeName", - "src": "5318:4:35" - } - ], - "id": 7419, - "name": "VariableDeclaration", - "src": "5318:43:35" - } - ], - "id": 7420, - "name": "VariableDeclarationStatement", - "src": "5318:43:35" - }, - { - "attributes": { - "assignments": [7422], - "initialValue": null - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "tokenID", - "overrides": null, - "scope": 7510, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint", - "type": "uint256" - }, - "id": 7421, - "name": "ElementaryTypeName", - "src": "5371:4:35" - } - ], - "id": 7422, - "name": "VariableDeclaration", - "src": "5371:20:35" - } - ], - "id": 7423, - "name": "VariableDeclarationStatement", - "src": "5371:20:35" - }, - { - "attributes": { - "assignments": [7425], - "initialValue": null - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "destinationRecipientAddress", - "overrides": null, - "scope": 7510, - "stateVariable": false, - "storageLocation": "memory", - "type": "bytes", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes", - "type": "bytes" - }, - "id": 7424, - "name": "ElementaryTypeName", - "src": "5401:5:35" - } - ], - "id": 7425, - "name": "VariableDeclaration", - "src": "5401:40:35" - } - ], - "id": 7426, - "name": "VariableDeclarationStatement", - "src": "5401:40:35" - }, - { - "attributes": { - "assignments": [7428], - "initialValue": null - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "metaData", - "overrides": null, - "scope": 7510, - "stateVariable": false, - "storageLocation": "memory", - "type": "bytes", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes", - "type": "bytes" - }, - "id": 7427, - "name": "ElementaryTypeName", - "src": "5451:5:35" - } - ], - "id": 7428, - "name": "VariableDeclaration", - "src": "5451:21:35" - } - ], - "id": 7429, - "name": "VariableDeclarationStatement", - "src": "5451:21:35" - }, - { - "attributes": { - "evmVersion": "istanbul", - "externalReferences": [ - { - "declaration": 7425, - "isOffset": false, - "isSlot": false, - "src": "5772:27:35", - "valueSize": 1 - }, - { - "declaration": 7425, - "isOffset": false, - "isSlot": false, - "src": "5893:27:35", - "valueSize": 1 - }, - { - "declaration": 7425, - "isOffset": false, - "isSlot": false, - "src": "6190:27:35", - "valueSize": 1 - }, - { - "declaration": 7419, - "isOffset": false, - "isSlot": false, - "src": "5656:30:35", - "valueSize": 1 - }, - { - "declaration": 7419, - "isOffset": false, - "isSlot": false, - "src": "5922:30:35", - "valueSize": 1 - }, - { - "declaration": 7422, - "isOffset": false, - "isSlot": false, - "src": "5550:7:35", - "valueSize": 1 - } - ], - "operations": "{\n tokenID := calldataload(0xC4)\n lenDestinationRecipientAddress := calldataload(0xE4)\n destinationRecipientAddress := mload(0x40)\n mstore(0x40, add(0x20, add(destinationRecipientAddress, lenDestinationRecipientAddress)))\n calldatacopy(destinationRecipientAddress, 0xE4, sub(calldatasize(), 0xE4))\n}" - }, - "children": [], - "id": 7430, - "name": "InlineAssembly", - "src": "5483:1022:35" - }, - { - "attributes": { - "assignments": [7432] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "tokenAddress", - "overrides": null, - "scope": 7510, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 7431, - "name": "ElementaryTypeName", - "src": "6515:7:35" - } - ], - "id": 7432, - "name": "VariableDeclaration", - "src": "6515:20:35" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 8039, - "type": "mapping(bytes32 => address)", - "value": "_resourceIDToTokenContractAddress" - }, - "id": 7433, - "name": "Identifier", - "src": "6538:33:35" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7404, - "type": "bytes32", - "value": "resourceID" - }, - "id": 7434, - "name": "Identifier", - "src": "6572:10:35" - } - ], - "id": 7435, - "name": "IndexAccess", - "src": "6538:45:35" - } - ], - "id": 7436, - "name": "VariableDeclarationStatement", - "src": "6515:68:35" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_d6f36190bb0602e32e72016fc9d55735c428c14ee06e9999974578d6c009c7ad", - "typeString": "literal_string \"provided tokenAddress is not whitelisted\"" - } - ], - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 7437, - "name": "Identifier", - "src": "6593:7:35" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 8047, - "type": "mapping(address => bool)", - "value": "_contractWhitelist" - }, - "id": 7438, - "name": "Identifier", - "src": "6601:18:35" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7432, - "type": "address", - "value": "tokenAddress" - }, - "id": 7439, - "name": "Identifier", - "src": "6620:12:35" - } - ], - "id": 7440, - "name": "IndexAccess", - "src": "6601:32:35" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "70726f766964656420746f6b656e41646472657373206973206e6f742077686974656c6973746564", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"provided tokenAddress is not whitelisted\"", - "value": "provided tokenAddress is not whitelisted" - }, - "id": 7441, - "name": "Literal", - "src": "6635:42:35" - } - ], - "id": 7442, - "name": "FunctionCall", - "src": "6593:85:35" - } - ], - "id": 7443, - "name": "ExpressionStatement", - "src": "6593:85:35" - }, - { - "attributes": { - "falseBody": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "supportsInterface", - "referencedDeclaration": 391, - "type": "function (address,bytes4) view returns (bool)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7432, - "type": "address", - "value": "tokenAddress" - }, - "id": 7444, - "name": "Identifier", - "src": "6765:12:35" - } - ], - "id": 7445, - "name": "MemberAccess", - "src": "6765:30:35" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7291, - "type": "bytes4", - "value": "_INTERFACE_ERC721_METADATA" - }, - "id": 7446, - "name": "Identifier", - "src": "6796:26:35" - } - ], - "id": 7447, - "name": "FunctionCall", - "src": "6765:58:35" - }, - { - "children": [ - { - "attributes": { - "assignments": [7449] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "erc721", - "overrides": null, - "scope": 7464, - "stateVariable": false, - "storageLocation": "default", - "type": "contract IERC721Metadata", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "IERC721Metadata", - "referencedDeclaration": 2935, - "type": "contract IERC721Metadata" - }, - "id": 7448, - "name": "UserDefinedTypeName", - "src": "6839:15:35" - } - ], - "id": 7449, - "name": "VariableDeclaration", - "src": "6839:22:35" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "contract IERC721Metadata", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 2935, - "type": "type(contract IERC721Metadata)", - "value": "IERC721Metadata" - }, - "id": 7450, - "name": "Identifier", - "src": "6864:15:35" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7432, - "type": "address", - "value": "tokenAddress" - }, - "id": 7451, - "name": "Identifier", - "src": "6880:12:35" - } - ], - "id": 7452, - "name": "FunctionCall", - "src": "6864:29:35" - } - ], - "id": 7453, - "name": "VariableDeclarationStatement", - "src": "6839:54:35" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "bytes memory" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7428, - "type": "bytes memory", - "value": "metaData" - }, - "id": 7454, - "name": "Identifier", - "src": "6907:8:35" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "bytes memory", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(bytes storage pointer)" - }, - "children": [ - { - "attributes": { - "name": "bytes", - "type": null - }, - "id": 7455, - "name": "ElementaryTypeName", - "src": "6918:5:35" - } - ], - "id": 7456, - "name": "ElementaryTypeNameExpression", - "src": "6918:5:35" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "string memory", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "tokenURI", - "referencedDeclaration": 2934, - "type": "function (uint256) view external returns (string memory)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 7449, - "type": "contract IERC721Metadata", - "value": "erc721" - }, - "id": 7457, - "name": "Identifier", - "src": "6924:6:35" - } - ], - "id": 7458, - "name": "MemberAccess", - "src": "6924:15:35" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 7422, - "type": "uint256", - "value": "tokenID" - }, - "id": 7459, - "name": "Identifier", - "src": "6940:7:35" - } - ], - "id": 7460, - "name": "FunctionCall", - "src": "6924:24:35" - } - ], - "id": 7461, - "name": "FunctionCall", - "src": "6918:31:35" - } - ], - "id": 7462, - "name": "Assignment", - "src": "6907:42:35" - } - ], - "id": 7463, - "name": "ExpressionStatement", - "src": "6907:42:35" - } - ], - "id": 7464, - "name": "Block", - "src": "6825:135:35" - } - ], - "id": 7465, - "name": "IfStatement", - "src": "6761:199:35" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 8051, - "type": "mapping(address => bool)", - "value": "_burnList" - }, - "id": 7466, - "name": "Identifier", - "src": "6974:9:35" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7432, - "type": "address", - "value": "tokenAddress" - }, - "id": 7467, - "name": "Identifier", - "src": "6984:12:35" - } - ], - "id": 7468, - "name": "IndexAccess", - "src": "6974:23:35" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 6233, - "type": "function (address,uint256)", - "value": "burnERC721" - }, - "id": 7469, - "name": "Identifier", - "src": "7013:10:35" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7432, - "type": "address", - "value": "tokenAddress" - }, - "id": 7470, - "name": "Identifier", - "src": "7024:12:35" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7422, - "type": "uint256", - "value": "tokenID" - }, - "id": 7471, - "name": "Identifier", - "src": "7038:7:35" - } - ], - "id": 7472, - "name": "FunctionCall", - "src": "7013:33:35" - } - ], - "id": 7473, - "name": "ExpressionStatement", - "src": "7013:33:35" - } - ], - "id": 7474, - "name": "Block", - "src": "6999:58:35" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 6155, - "type": "function (address,address,address,uint256)", - "value": "lockERC721" - }, - "id": 7475, - "name": "Identifier", - "src": "7077:10:35" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7432, - "type": "address", - "value": "tokenAddress" - }, - "id": 7476, - "name": "Identifier", - "src": "7088:12:35" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7410, - "type": "address", - "value": "depositer" - }, - "id": 7477, - "name": "Identifier", - "src": "7102:9:35" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "address", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_ERC721Handler_$7607", - "typeString": "contract ERC721Handler" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": null - }, - "id": 7478, - "name": "ElementaryTypeName", - "src": "7113:7:35" - } - ], - "id": 7479, - "name": "ElementaryTypeNameExpression", - "src": "7113:7:35" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": -28, - "type": "contract ERC721Handler", - "value": "this" - }, - "id": 7480, - "name": "Identifier", - "src": "7121:4:35" - } - ], - "id": 7481, - "name": "FunctionCall", - "src": "7113:13:35" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7422, - "type": "uint256", - "value": "tokenID" - }, - "id": 7482, - "name": "Identifier", - "src": "7128:7:35" - } - ], - "id": 7483, - "name": "FunctionCall", - "src": "7077:59:35" - } - ], - "id": 7484, - "name": "ExpressionStatement", - "src": "7077:59:35" - } - ], - "id": 7485, - "name": "Block", - "src": "7063:84:35" - } - ], - "id": 7486, - "name": "IfStatement", - "src": "6970:177:35" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "struct ERC721Handler.DepositRecord storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "struct ERC721Handler.DepositRecord storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "mapping(uint64 => struct ERC721Handler.DepositRecord storage ref)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7314, - "type": "mapping(uint8 => mapping(uint64 => struct ERC721Handler.DepositRecord storage ref))", - "value": "_depositRecords" - }, - "id": 7487, - "name": "Identifier", - "src": "7157:15:35" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7406, - "type": "uint8", - "value": "destinationChainID" - }, - "id": 7488, - "name": "Identifier", - "src": "7173:18:35" - } - ], - "id": 7490, - "name": "IndexAccess", - "src": "7157:35:35" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7408, - "type": "uint64", - "value": "depositNonce" - }, - "id": 7489, - "name": "Identifier", - "src": "7193:12:35" - } - ], - "id": 7491, - "name": "IndexAccess", - "src": "7157:49:35" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": true, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "struct ERC721Handler.DepositRecord memory", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 7308, - "type": "type(struct ERC721Handler.DepositRecord storage pointer)", - "value": "DepositRecord" - }, - "id": 7492, - "name": "Identifier", - "src": "7209:13:35" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7432, - "type": "address", - "value": "tokenAddress" - }, - "id": 7493, - "name": "Identifier", - "src": "7236:12:35" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "uint8", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(uint8)" - }, - "children": [ - { - "attributes": { - "name": "uint8", - "type": null - }, - "id": 7494, - "name": "ElementaryTypeName", - "src": "7262:5:35" - } - ], - "id": 7495, - "name": "ElementaryTypeNameExpression", - "src": "7262:5:35" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7419, - "type": "uint256", - "value": "lenDestinationRecipientAddress" - }, - "id": 7496, - "name": "Identifier", - "src": "7268:30:35" - } - ], - "id": 7497, - "name": "FunctionCall", - "src": "7262:37:35" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "uint8", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(uint8)" - }, - "children": [ - { - "attributes": { - "name": "uint8", - "type": null - }, - "id": 7498, - "name": "ElementaryTypeName", - "src": "7313:5:35" - } - ], - "id": 7499, - "name": "ElementaryTypeNameExpression", - "src": "7313:5:35" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7406, - "type": "uint8", - "value": "destinationChainID" - }, - "id": 7500, - "name": "Identifier", - "src": "7319:18:35" - } - ], - "id": 7501, - "name": "FunctionCall", - "src": "7313:25:35" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7404, - "type": "bytes32", - "value": "resourceID" - }, - "id": 7502, - "name": "Identifier", - "src": "7352:10:35" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7425, - "type": "bytes memory", - "value": "destinationRecipientAddress" - }, - "id": 7503, - "name": "Identifier", - "src": "7376:27:35" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7410, - "type": "address", - "value": "depositer" - }, - "id": 7504, - "name": "Identifier", - "src": "7417:9:35" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7422, - "type": "uint256", - "value": "tokenID" - }, - "id": 7505, - "name": "Identifier", - "src": "7440:7:35" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7428, - "type": "bytes memory", - "value": "metaData" - }, - "id": 7506, - "name": "Identifier", - "src": "7461:8:35" - } - ], - "id": 7507, - "name": "FunctionCall", - "src": "7209:270:35" - } - ], - "id": 7508, - "name": "Assignment", - "src": "7157:322:35" - } - ], - "id": 7509, - "name": "ExpressionStatement", - "src": "7157:322:35" - } - ], - "id": 7510, - "name": "Block", - "src": "5308:2178:35" + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11009:4:21", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10976:3:21" + }, + "nodeType": "YulFunctionCall", + "src": "10976:38:21" } - ], - "id": 7511, - "name": "FunctionDefinition", - "src": "5030:2456:35" + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "10970:5:21" + }, + "nodeType": "YulFunctionCall", + "src": "10970:45:21" + }, + "variableNames": [ + { + "name": "recipientAddress", + "nodeType": "YulIdentifier", + "src": "10950:16:21" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2581, + "isOffset": false, + "isSlot": false, + "src": "10980:27:21", + "valueSize": 1 }, { - "attributes": { - "baseFunctions": [8244], - "functionSelector": "e248cff2", - "implemented": true, - "isConstructor": false, - "kind": "function", - "name": "executeProposal", - "scope": 7607, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" + "declaration": 2588, + "isOffset": false, + "isSlot": false, + "src": "10950:16:21", + "valueSize": 1 + } + ], + "id": 2590, + "nodeType": "InlineAssembly", + "src": "10926:100:21" + }, + { + "assignments": [ + 2592 + ], + "declarations": [ + { + "constant": false, + "id": 2592, + "mutability": "mutable", + "name": "tokenAddress", + "nameLocation": "11046:12:21", + "nodeType": "VariableDeclaration", + "scope": 2636, + "src": "11038:20:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2591, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11038:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 2596, + "initialValue": { + "baseExpression": { + "id": 2593, + "name": "_resourceIDToTokenContractAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3089, + "src": "11061:33:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + } + }, + "id": 2595, + "indexExpression": { + "id": 2594, + "name": "resourceID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2569, + "src": "11095:10:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11061:45:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11038:68:21" + }, + { + "expression": { + "arguments": [ + { + "baseExpression": { + "id": 2598, + "name": "_contractWhitelist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3097, + "src": "11125:18:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } }, - "children": [ + "id": 2603, + "indexExpression": { + "arguments": [ { - "attributes": { - "text": "@notice Proposal execution should be initiated when a proposal is finalized in the Bridge contract.\nby a relayer on the deposit's destination chain.\n@param data Consists of {tokenID}, {resourceID}, {lenDestinationRecipientAddress},\n{destinationRecipientAddress}, {lenMeta}, and {metaData} all padded to 32 bytes.\n@notice Data passed into the function should be constructed as follows:\ntokenID uint256 bytes 0 - 32\ndestinationRecipientAddress length uint256 bytes 32 - 64\ndestinationRecipientAddress bytes bytes 64 - (64 + len(destinationRecipientAddress))\nmetadata length uint256 bytes (64 + len(destinationRecipientAddress)) - (64 + len(destinationRecipientAddress) + 32)\nmetadata bytes bytes (64 + len(destinationRecipientAddress) + 32) - END" - }, - "id": 7512, - "name": "StructuredDocumentation", - "src": "7492:995:35" + "id": 2601, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2592, + "src": "11152:12:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2600, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11144:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" }, + "typeName": { + "id": 2599, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11144:7:21", + "typeDescriptions": {} + } + }, + "id": 2602, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11144:21:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11125:41:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "70726f766964656420746f6b656e41646472657373206973206e6f742077686974656c6973746564", + "id": 2604, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11168:42:21", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d6f36190bb0602e32e72016fc9d55735c428c14ee06e9999974578d6c009c7ad", + "typeString": "literal_string \"provided tokenAddress is not whitelisted\"" + }, + "value": "provided tokenAddress is not whitelisted" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d6f36190bb0602e32e72016fc9d55735c428c14ee06e9999974578d6c009c7ad", + "typeString": "literal_string \"provided tokenAddress is not whitelisted\"" + } + ], + "id": 2597, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "11117:7:21", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2605, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11117:94:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2606, + "nodeType": "ExpressionStatement", + "src": "11117:94:21" + }, + { + "condition": { + "baseExpression": { + "id": 2607, + "name": "_burnList", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3101, + "src": "11228:9:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2609, + "indexExpression": { + "id": 2608, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2592, + "src": "11238:12:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11228:23:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 2634, + "nodeType": "Block", + "src": "11356:105:21", + "statements": [ + { + "expression": { + "arguments": [ { - "attributes": { - "overrides": [null] - }, - "id": 7518, - "name": "OverrideSpecifier", - "src": "8567:8:35" + "id": 2622, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2592, + "src": "11385:12:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "resourceID", - "overrides": null, - "scope": 7582, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 7513, - "name": "ElementaryTypeName", - "src": "8517:7:35" - } - ], - "id": 7514, - "name": "VariableDeclaration", - "src": "8517:18:35" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "data", - "overrides": null, - "scope": 7582, - "stateVariable": false, - "storageLocation": "calldata", - "type": "bytes", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes", - "type": "bytes" - }, - "id": 7515, - "name": "ElementaryTypeName", - "src": "8537:5:35" - } - ], - "id": 7516, - "name": "VariableDeclaration", - "src": "8537:19:35" - } + "arguments": [ + { + "id": 2625, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967268, + "src": "11407:4:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721Handler_$2662", + "typeString": "contract ERC721Handler" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC721Handler_$2662", + "typeString": "contract ERC721Handler" + } ], - "id": 7517, - "name": "ParameterList", - "src": "8516:41:35" - }, - { - "attributes": { - "parameters": [null] + "id": 2624, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11399:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" }, - "children": [], - "id": 7521, - "name": "ParameterList", - "src": "8587:0:35" + "typeName": { + "id": 2623, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11399:7:21", + "typeDescriptions": {} + } + }, + "id": 2626, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11399:13:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, { - "attributes": { - "arguments": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 8062, - "type": "modifier ()", - "value": "onlyBridge" - }, - "id": 7519, - "name": "Identifier", - "src": "8576:10:35" - } + "arguments": [ + { + "id": 2629, + "name": "recipientAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2588, + "src": "11422:16:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes20", + "typeString": "bytes20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes20", + "typeString": "bytes20" + } ], - "id": 7520, - "name": "ModifierInvocation", - "src": "8576:10:35" + "id": 2628, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11414:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2627, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11414:7:21", + "typeDescriptions": {} + } + }, + "id": 2630, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11414:25:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, { - "children": [ - { - "attributes": { - "assignments": [7523], - "initialValue": null - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "tokenID", - "overrides": null, - "scope": 7581, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 7522, - "name": "ElementaryTypeName", - "src": "8597:7:35" - } - ], - "id": 7523, - "name": "VariableDeclaration", - "src": "8597:23:35" - } - ], - "id": 7524, - "name": "VariableDeclarationStatement", - "src": "8597:23:35" - }, - { - "attributes": { - "assignments": [7526], - "initialValue": null - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "destinationRecipientAddress", - "overrides": null, - "scope": 7581, - "stateVariable": false, - "storageLocation": "memory", - "type": "bytes", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes", - "type": "bytes" - }, - "id": 7525, - "name": "ElementaryTypeName", - "src": "8630:5:35" - } - ], - "id": 7526, - "name": "VariableDeclaration", - "src": "8630:43:35" - } - ], - "id": 7527, - "name": "VariableDeclarationStatement", - "src": "8630:43:35" - }, - { - "attributes": { - "assignments": [7529], - "initialValue": null - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "metaData", - "overrides": null, - "scope": 7581, - "stateVariable": false, - "storageLocation": "memory", - "type": "bytes", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes", - "type": "bytes" - }, - "id": 7528, - "name": "ElementaryTypeName", - "src": "8683:5:35" - } - ], - "id": 7529, - "name": "VariableDeclaration", - "src": "8683:24:35" - } - ], - "id": 7530, - "name": "VariableDeclarationStatement", - "src": "8683:24:35" - }, - { - "attributes": { - "evmVersion": "istanbul", - "externalReferences": [ - { - "declaration": 7526, - "isOffset": false, - "isSlot": false, - "src": "8838:27:35", - "valueSize": 1 - }, - { - "declaration": 7526, - "isOffset": false, - "isSlot": false, - "src": "9315:27:35", - "valueSize": 1 - }, - { - "declaration": 7526, - "isOffset": false, - "isSlot": false, - "src": "9450:27:35", - "valueSize": 1 - }, - { - "declaration": 7529, - "isOffset": false, - "isSlot": false, - "src": "10081:8:35", - "valueSize": 1 - }, - { - "declaration": 7529, - "isOffset": false, - "isSlot": false, - "src": "10435:8:35", - "valueSize": 1 - }, - { - "declaration": 7529, - "isOffset": false, - "isSlot": false, - "src": "9969:8:35", - "valueSize": 1 - }, - { - "declaration": 7523, - "isOffset": false, - "isSlot": false, - "src": "8741:7:35", - "valueSize": 1 - } - ], - "operations": "{\n tokenID := calldataload(0x64)\n destinationRecipientAddress := mload(0x40)\n let lenDestinationRecipientAddress := calldataload(0x84)\n let lenMeta := calldataload(add(0xA4, lenDestinationRecipientAddress))\n mstore(0x40, add(0x40, add(destinationRecipientAddress, lenDestinationRecipientAddress)))\n calldatacopy(destinationRecipientAddress, 0x84, sub(calldatasize(), add(0x84, add(0x20, lenMeta))))\n metaData := mload(0x40)\n mstore(0x40, add(0x40, add(metaData, lenMeta)))\n let metaDataLoc := add(0xA4, lenDestinationRecipientAddress)\n calldatacopy(metaData, metaDataLoc, sub(calldatasize(), metaDataLoc))\n}" - }, - "children": [], - "id": 7531, - "name": "InlineAssembly", - "src": "8718:1996:35" - }, - { - "attributes": { - "assignments": [7533], - "initialValue": null - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "recipientAddress", - "overrides": null, - "scope": 7581, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes20", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes20", - "type": "bytes20" - }, - "id": 7532, - "name": "ElementaryTypeName", - "src": "10724:7:35" - } - ], - "id": 7533, - "name": "VariableDeclaration", - "src": "10724:24:35" - } - ], - "id": 7534, - "name": "VariableDeclarationStatement", - "src": "10724:24:35" - }, - { - "attributes": { - "evmVersion": "istanbul", - "externalReferences": [ - { - "declaration": 7526, - "isOffset": false, - "isSlot": false, - "src": "10812:27:35", - "valueSize": 1 - }, - { - "declaration": 7533, - "isOffset": false, - "isSlot": false, - "src": "10782:16:35", - "valueSize": 1 - } - ], - "operations": "{\n recipientAddress := mload(add(destinationRecipientAddress, 0x20))\n}" - }, - "children": [], - "id": 7535, - "name": "InlineAssembly", - "src": "10759:98:35" - }, - { - "attributes": { - "assignments": [7537] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "tokenAddress", - "overrides": null, - "scope": 7581, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 7536, - "name": "ElementaryTypeName", - "src": "10867:7:35" - } - ], - "id": 7537, - "name": "VariableDeclaration", - "src": "10867:20:35" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 8039, - "type": "mapping(bytes32 => address)", - "value": "_resourceIDToTokenContractAddress" - }, - "id": 7538, - "name": "Identifier", - "src": "10890:33:35" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7514, - "type": "bytes32", - "value": "resourceID" - }, - "id": 7539, - "name": "Identifier", - "src": "10924:10:35" - } - ], - "id": 7540, - "name": "IndexAccess", - "src": "10890:45:35" - } - ], - "id": 7541, - "name": "VariableDeclarationStatement", - "src": "10867:68:35" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_d6f36190bb0602e32e72016fc9d55735c428c14ee06e9999974578d6c009c7ad", - "typeString": "literal_string \"provided tokenAddress is not whitelisted\"" - } - ], - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 7542, - "name": "Identifier", - "src": "10945:7:35" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 8047, - "type": "mapping(address => bool)", - "value": "_contractWhitelist" - }, - "id": 7543, - "name": "Identifier", - "src": "10953:18:35" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "address", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": null - }, - "id": 7544, - "name": "ElementaryTypeName", - "src": "10972:7:35" - } - ], - "id": 7545, - "name": "ElementaryTypeNameExpression", - "src": "10972:7:35" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7537, - "type": "address", - "value": "tokenAddress" - }, - "id": 7546, - "name": "Identifier", - "src": "10980:12:35" - } - ], - "id": 7547, - "name": "FunctionCall", - "src": "10972:21:35" - } - ], - "id": 7548, - "name": "IndexAccess", - "src": "10953:41:35" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "70726f766964656420746f6b656e41646472657373206973206e6f742077686974656c6973746564", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"provided tokenAddress is not whitelisted\"", - "value": "provided tokenAddress is not whitelisted" - }, - "id": 7549, - "name": "Literal", - "src": "10996:42:35" - } - ], - "id": 7550, - "name": "FunctionCall", - "src": "10945:94:35" - } - ], - "id": 7551, - "name": "ExpressionStatement", - "src": "10945:94:35" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 8051, - "type": "mapping(address => bool)", - "value": "_burnList" - }, - "id": 7552, - "name": "Identifier", - "src": "11054:9:35" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7537, - "type": "address", - "value": "tokenAddress" - }, - "id": 7553, - "name": "Identifier", - "src": "11064:12:35" - } - ], - "id": 7554, - "name": "IndexAccess", - "src": "11054:23:35" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 6212, - "type": "function (address,address,uint256,bytes memory)", - "value": "mintERC721" - }, - "id": 7555, - "name": "Identifier", - "src": "11093:10:35" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7537, - "type": "address", - "value": "tokenAddress" - }, - "id": 7556, - "name": "Identifier", - "src": "11104:12:35" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "address payable", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes20", - "typeString": "bytes20" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": null - }, - "id": 7557, - "name": "ElementaryTypeName", - "src": "11118:7:35" - } - ], - "id": 7558, - "name": "ElementaryTypeNameExpression", - "src": "11118:7:35" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7533, - "type": "bytes20", - "value": "recipientAddress" - }, - "id": 7559, - "name": "Identifier", - "src": "11126:16:35" - } - ], - "id": 7560, - "name": "FunctionCall", - "src": "11118:25:35" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7523, - "type": "uint256", - "value": "tokenID" - }, - "id": 7561, - "name": "Identifier", - "src": "11145:7:35" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7529, - "type": "bytes memory", - "value": "metaData" - }, - "id": 7562, - "name": "Identifier", - "src": "11154:8:35" - } - ], - "id": 7563, - "name": "FunctionCall", - "src": "11093:70:35" - } - ], - "id": 7564, - "name": "ExpressionStatement", - "src": "11093:70:35" - } - ], - "id": 7565, - "name": "Block", - "src": "11079:95:35" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 6182, - "type": "function (address,address,address,uint256)", - "value": "releaseERC721" - }, - "id": 7566, - "name": "Identifier", - "src": "11194:13:35" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7537, - "type": "address", - "value": "tokenAddress" - }, - "id": 7567, - "name": "Identifier", - "src": "11208:12:35" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "address", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_ERC721Handler_$7607", - "typeString": "contract ERC721Handler" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": null - }, - "id": 7568, - "name": "ElementaryTypeName", - "src": "11222:7:35" - } - ], - "id": 7569, - "name": "ElementaryTypeNameExpression", - "src": "11222:7:35" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": -28, - "type": "contract ERC721Handler", - "value": "this" - }, - "id": 7570, - "name": "Identifier", - "src": "11230:4:35" - } - ], - "id": 7571, - "name": "FunctionCall", - "src": "11222:13:35" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "address payable", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes20", - "typeString": "bytes20" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": null - }, - "id": 7572, - "name": "ElementaryTypeName", - "src": "11237:7:35" - } - ], - "id": 7573, - "name": "ElementaryTypeNameExpression", - "src": "11237:7:35" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7533, - "type": "bytes20", - "value": "recipientAddress" - }, - "id": 7574, - "name": "Identifier", - "src": "11245:16:35" - } - ], - "id": 7575, - "name": "FunctionCall", - "src": "11237:25:35" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7523, - "type": "uint256", - "value": "tokenID" - }, - "id": 7576, - "name": "Identifier", - "src": "11264:7:35" - } - ], - "id": 7577, - "name": "FunctionCall", - "src": "11194:78:35" - } - ], - "id": 7578, - "name": "ExpressionStatement", - "src": "11194:78:35" - } - ], - "id": 7579, - "name": "Block", - "src": "11180:103:35" - } - ], - "id": 7580, - "name": "IfStatement", - "src": "11050:233:35" - } - ], - "id": 7581, - "name": "Block", - "src": "8587:2702:35" + "id": 2631, + "name": "tokenID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2578, + "src": "11441:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } } - ], - "id": 7582, - "name": "FunctionDefinition", - "src": "8492:2797:35" - }, - { - "attributes": { - "baseFunctions": [8137], - "functionSelector": "d9caed12", - "implemented": true, - "isConstructor": false, - "kind": "function", - "name": "withdraw", - "scope": 7607, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2621, + "name": "releaseERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1800, + "src": "11371:13:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,address,uint256)" + } + }, + "id": 2632, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11371:78:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } }, - "children": [ - { - "attributes": { - "text": "@notice Used to manually release ERC721 tokens from ERC721Safe.\n@param tokenAddress Address of token contract to release.\n@param recipient Address to release token to.\n@param tokenID The ERC721 token ID to release." - }, - "id": 7583, - "name": "StructuredDocumentation", - "src": "11295:258:35" - }, + "id": 2633, + "nodeType": "ExpressionStatement", + "src": "11371:78:21" + } + ] + }, + "id": 2635, + "nodeType": "IfStatement", + "src": "11224:237:21", + "trueBody": { + "id": 2620, + "nodeType": "Block", + "src": "11253:97:21", + "statements": [ + { + "expression": { + "arguments": [ { - "attributes": { - "overrides": [null] - }, - "id": 7591, - "name": "OverrideSpecifier", - "src": "11640:8:35" + "id": 2611, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2592, + "src": "11279:12:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "tokenAddress", - "overrides": null, - "scope": 7606, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 7584, - "name": "ElementaryTypeName", - "src": "11576:7:35" - } - ], - "id": 7585, - "name": "VariableDeclaration", - "src": "11576:20:35" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "recipient", - "overrides": null, - "scope": 7606, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 7586, - "name": "ElementaryTypeName", - "src": "11598:7:35" - } - ], - "id": 7587, - "name": "VariableDeclaration", - "src": "11598:17:35" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "tokenID", - "overrides": null, - "scope": 7606, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint", - "type": "uint256" - }, - "id": 7588, - "name": "ElementaryTypeName", - "src": "11617:4:35" - } - ], - "id": 7589, - "name": "VariableDeclaration", - "src": "11617:12:35" - } + "arguments": [ + { + "id": 2614, + "name": "recipientAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2588, + "src": "11301:16:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes20", + "typeString": "bytes20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes20", + "typeString": "bytes20" + } ], - "id": 7590, - "name": "ParameterList", - "src": "11575:55:35" - }, - { - "attributes": { - "parameters": [null] + "id": 2613, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11293:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" }, - "children": [], - "id": 7594, - "name": "ParameterList", - "src": "11660:0:35" + "typeName": { + "id": 2612, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11293:7:21", + "typeDescriptions": {} + } + }, + "id": 2615, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11293:25:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, { - "attributes": { - "arguments": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 8062, - "type": "modifier ()", - "value": "onlyBridge" - }, - "id": 7592, - "name": "Identifier", - "src": "11649:10:35" - } - ], - "id": 7593, - "name": "ModifierInvocation", - "src": "11649:10:35" + "id": 2616, + "name": "tokenID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2578, + "src": "11320:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 6182, - "type": "function (address,address,address,uint256)", - "value": "releaseERC721" - }, - "id": 7595, - "name": "Identifier", - "src": "11670:13:35" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7585, - "type": "address", - "value": "tokenAddress" - }, - "id": 7596, - "name": "Identifier", - "src": "11684:12:35" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "address", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_ERC721Handler_$7607", - "typeString": "contract ERC721Handler" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": null - }, - "id": 7597, - "name": "ElementaryTypeName", - "src": "11698:7:35" - } - ], - "id": 7598, - "name": "ElementaryTypeNameExpression", - "src": "11698:7:35" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": -28, - "type": "contract ERC721Handler", - "value": "this" - }, - "id": 7599, - "name": "Identifier", - "src": "11706:4:35" - } - ], - "id": 7600, - "name": "FunctionCall", - "src": "11698:13:35" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7587, - "type": "address", - "value": "recipient" - }, - "id": 7601, - "name": "Identifier", - "src": "11713:9:35" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7589, - "type": "uint256", - "value": "tokenID" - }, - "id": 7602, - "name": "Identifier", - "src": "11724:7:35" - } - ], - "id": 7603, - "name": "FunctionCall", - "src": "11670:62:35" - } - ], - "id": 7604, - "name": "ExpressionStatement", - "src": "11670:62:35" - } - ], - "id": 7605, - "name": "Block", - "src": "11660:79:35" + "id": 2617, + "name": "metaData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2584, + "src": "11329:8:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } } - ], - "id": 7606, - "name": "FunctionDefinition", - "src": "11558:181:35" - } - ], - "id": 7607, - "name": "ContractDefinition", - "src": "511:11230:35" - } - ], - "id": 7608, - "name": "SourceUnit", - "src": "0:11742:35" - }, - "compiler": { - "name": "solc", - "version": "0.7.0+commit.9e61f92b.Emscripten.clang" - }, - "networks": { - "5": { - "events": {}, - "links": {}, - "address": "0x21605f71845f372A9ed84253d2D024B7B10999f4", - "transactionHash": "0x7fb2a19fdd8343c9d1949665806e5345e2a7db0f1e594391406abfffecd11170" - }, - "5777": { - "events": {}, - "links": {}, - "address": "0x805A7c3ee809FDF6A5D9256f2321526274CBAEce", - "transactionHash": "0x3bcd8ade951ed3d8279683767a9992b061119170fcf60da8da043aed7c307c81" - }, - "1658807992770": { - "events": {}, - "links": {}, - "address": "0x21605f71845f372A9ed84253d2D024B7B10999f4", - "transactionHash": "0xdefee8b25ed9cbb1274b6ab2a9fe276ceb984524153014ff51e9c9c2c3a9de4c" - } - }, - "schemaVersion": "3.4.8", - "updatedAt": "2022-07-27T05:41:34.683Z", - "networkType": "ethereum", - "devdoc": { - "author": "ChainSafe Systems.", - "kind": "dev", - "methods": { - "constructor": { - "details": "{initialResourceIDs} and {initialContractAddresses} must have the same length (one resourceID for every address). Also, these arrays must be ordered in the way that {initialResourceIDs}[0] is the intended resourceID for {initialContractAddresses}[0].", - "params": { - "bridgeAddress": "Contract address of previously deployed Bridge.", - "burnableContractAddresses": "These addresses will be set as burnable and when {deposit} is called, the deposited token will be burned. When {executeProposal} is called, new tokens will be minted.", - "initialContractAddresses": "These are the addresses the {initialResourceIDs} will point to, and are the contracts that will be called to perform various deposit calls.", - "initialResourceIDs": "Resource IDs are used to identify a specific contract address. These are the Resource IDs this contract will initially support." - } - }, - "deposit(bytes32,uint8,uint64,address,bytes)": { - "details": "Depending if the corresponding {tokenAddress} for the parsed {resourceID} is marked true in {_burnList}, deposited tokens will be burned, if not, they will be locked.", - "params": { - "data": "Consists of: {resourceID}, {tokenID}, {lenDestinationRecipientAddress}, and {destinationRecipientAddress} all padded to 32 bytes.", - "depositNonce": "This value is generated as an ID by the Bridge contract.", - "depositer": "Address of account making the deposit in the Bridge contract.", - "destinationChainID": "Chain ID of chain token is expected to be bridged to." - } - }, - "executeProposal(bytes32,bytes)": { - "params": { - "data": "Consists of {tokenID}, {resourceID}, {lenDestinationRecipientAddress}, {destinationRecipientAddress}, {lenMeta}, and {metaData} all padded to 32 bytes." + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2610, + "name": "mintERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1831, + "src": "11268:10:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,uint256,bytes memory)" + } + }, + "id": 2618, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11268:70:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2619, + "nodeType": "ExpressionStatement", + "src": "11268:70:21" + } + ] + } } + ] }, - "fundERC721(address,address,uint256)": { - "params": { - "owner": "Address of current token owner.", - "tokenAddress": "Address of ERC721 to transfer.", - "tokenID": "ID of token to transfer." - } + "documentation": { + "id": 2567, + "nodeType": "StructuredDocumentation", + "src": "7601:1006:21", + "text": "@notice Proposal execution should be initiated when a proposal is finalized in the Bridge contract.\nby a relayer on the deposit's destination chain.\n@param data Consists of {tokenID}, {resourceID}, {lenDestinationRecipientAddress},\n{destinationRecipientAddress}, {lenMeta}, and {metaData} all padded to 32 bytes.\n@notice Data passed into the function should be constructed as follows:\ntokenID uint256 bytes 0 - 32\ndestinationRecipientAddress length uint256 bytes 32 - 64\ndestinationRecipientAddress bytes bytes 64 - (64 + len(destinationRecipientAddress))\nmetadata length uint256 bytes (64 + len(destinationRecipientAddress)) - (64 + len(destinationRecipientAddress) + 32)\nmetadata bytes bytes (64 + len(destinationRecipientAddress) + 32) - END" }, - "getDepositRecord(uint64,uint8)": { - "params": { - "depositNonce": "This ID will have been generated by the Bridge contract.", - "destId": "ID of chain deposit will be bridged to." + "functionSelector": "e248cff2", + "id": 2637, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2575, + "kind": "modifierInvocation", + "modifierName": { + "id": 2574, + "name": "onlyBridge", + "nameLocations": [ + "8697:10:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3108, + "src": "8697:10:21" }, - "returns": { - "_0": "DepositRecord which consists of: - _tokenAddress Address used when {deposit} was executed. - _destinationChainID ChainID deposited tokens are intended to end up on. - _resourceID ResourceID used when {deposit} was executed. - _lenDestinationRecipientAddress Used to parse recipient's address from {_destinationRecipientAddress} - _destinationRecipientAddress Address tokens are intended to be deposited to on desitnation chain. - _depositer Address that initially called {deposit} in the Bridge contract. - _tokenID ID of ERC721. - _metaData Optional ERC721 metadata." - } - }, - "setBurnable(address)": { - "params": { - "contractAddress": "Address of contract to be used when making or executing deposits." - } + "nodeType": "ModifierInvocation", + "src": "8697:10:21" + } + ], + "name": "executeProposal", + "nameLocation": "8622:15:21", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 2573, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "8688:8:21" }, - "setDecimals(address,uint8,uint8)": { - "params": { - "contractAddress": "Address of contract to be used when making or eexcuting deposits.", - "destDecimals": "Decimals of this token on dest chain.", - "srcDecimals": "Decimals of this token on source chain" + "parameters": { + "id": 2572, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2569, + "mutability": "mutable", + "name": "resourceID", + "nameLocation": "8646:10:21", + "nodeType": "VariableDeclaration", + "scope": 2637, + "src": "8638:18:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2568, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8638:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2571, + "mutability": "mutable", + "name": "data", + "nameLocation": "8673:4:21", + "nodeType": "VariableDeclaration", + "scope": 2637, + "src": "8658:19:21", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2570, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "8658:5:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" } + ], + "src": "8637:41:21" }, - "setResource(bytes32,address)": { - "params": { - "contractAddress": "Address of contract to be called when a deposit is made and a deposited is executed.", - "resourceID": "ResourceID to be used when making deposits." - } + "returnParameters": { + "id": 2576, + "nodeType": "ParameterList", + "parameters": [], + "src": "8708:0:21" }, - "withdraw(address,address,uint256)": { - "params": { - "recipient": "Address to release token to.", - "tokenAddress": "Address of token contract to release.", - "tokenID": "The ERC721 token ID to release." + "scope": 2662, + "src": "8613:2855:21", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 3163 + ], + "body": { + "id": 2660, + "nodeType": "Block", + "src": "11847:81:21", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2651, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2640, + "src": "11872:12:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "id": 2654, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967268, + "src": "11894:4:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721Handler_$2662", + "typeString": "contract ERC721Handler" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC721Handler_$2662", + "typeString": "contract ERC721Handler" + } + ], + "id": 2653, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11886:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2652, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11886:7:21", + "typeDescriptions": {} + } + }, + "id": 2655, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11886:13:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2656, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2642, + "src": "11901:9:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2657, + "name": "tokenID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2644, + "src": "11912:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2650, + "name": "releaseERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1800, + "src": "11858:13:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,address,uint256)" + } + }, + "id": 2658, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11858:62:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2659, + "nodeType": "ExpressionStatement", + "src": "11858:62:21" } - } - }, - "title": "Handles ERC721 deposits and deposit executions.", - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": { - "deposit(bytes32,uint8,uint64,address,bytes)": { - "notice": "A deposit is initiatied by making a deposit in the Bridge contract.Data passed into the function should be constructed as follows: tokenID uint256 bytes 0 - 32 destinationRecipientAddress length uint256 bytes 32 - 64 destinationRecipientAddress bytes bytes 64 - (64 + len(destinationRecipientAddress))If the corresponding {tokenAddress} for the parsed {resourceID} supports {_INTERFACE_ERC721_METADATA}, then {metaData} will be set according to the {tokenURI} method in the token contract." + ] }, - "executeProposal(bytes32,bytes)": { - "notice": "Proposal execution should be initiated when a proposal is finalized in the Bridge contract. by a relayer on the deposit's destination chain.Data passed into the function should be constructed as follows: tokenID uint256 bytes 0 - 32 destinationRecipientAddress length uint256 bytes 32 - 64 destinationRecipientAddress bytes bytes 64 - (64 + len(destinationRecipientAddress)) metadata length uint256 bytes (64 + len(destinationRecipientAddress)) - (64 + len(destinationRecipientAddress) + 32) metadata bytes bytes (64 + len(destinationRecipientAddress) + 32) - END" + "documentation": { + "id": 2638, + "nodeType": "StructuredDocumentation", + "src": "11476:263:21", + "text": "@notice Used to manually release ERC721 tokens from ERC721Safe.\n@param tokenAddress Address of token contract to release.\n@param recipient Address to release token to.\n@param tokenID The ERC721 token ID to release." }, - "fundERC721(address,address,uint256)": { - "notice": "Used to transfer tokens into the safe to fund proposals." - }, - "setBurnable(address)": { - "notice": "First verifies {contractAddress} is whitelisted, then sets {_burnList}[{contractAddress}] to true." + "functionSelector": "d9caed12", + "id": 2661, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2648, + "kind": "modifierInvocation", + "modifierName": { + "id": 2647, + "name": "onlyBridge", + "nameLocations": [ + "11836:10:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3108, + "src": "11836:10:21" + }, + "nodeType": "ModifierInvocation", + "src": "11836:10:21" + } + ], + "name": "withdraw", + "nameLocation": "11754:8:21", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 2646, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "11827:8:21" }, - "setDecimals(address,uint8,uint8)": { - "notice": "First verifies {contractAddress} is whitelisted, then sets {_decimals}[{contractAddress}] to it's decimals value." + "parameters": { + "id": 2645, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2640, + "mutability": "mutable", + "name": "tokenAddress", + "nameLocation": "11771:12:21", + "nodeType": "VariableDeclaration", + "scope": 2661, + "src": "11763:20:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2639, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11763:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2642, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "11793:9:21", + "nodeType": "VariableDeclaration", + "scope": 2661, + "src": "11785:17:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2641, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11785:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2644, + "mutability": "mutable", + "name": "tokenID", + "nameLocation": "11809:7:21", + "nodeType": "VariableDeclaration", + "scope": 2661, + "src": "11804:12:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2643, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "11804:4:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11762:55:21" }, - "setResource(bytes32,address)": { - "notice": "First verifies {_resourceIDToContractAddress}[{resourceID}] and {_contractAddressToResourceID}[{contractAddress}] are not already set, then sets {_resourceIDToContractAddress} with {contractAddress}, {_contractAddressToResourceID} with {resourceID}, and {_contractWhitelist} to true for {contractAddress}." + "returnParameters": { + "id": 2649, + "nodeType": "ParameterList", + "parameters": [], + "src": "11847:0:21" }, - "withdraw(address,address,uint256)": { - "notice": "Used to manually release ERC721 tokens from ERC721Safe." - } + "scope": 2662, + "src": "11745:183:21", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 2663, + "src": "483:11448:21", + "usedErrors": [] + } + ], + "src": "33:11900:21" + }, + "compiler": { + "name": "solc", + "version": "0.8.19+commit.7dd6d404.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.4.16", + "updatedAt": "2024-05-15T07:58:14.411Z", + "devdoc": { + "author": "ChainSafe Systems.", + "kind": "dev", + "methods": { + "constructor": { + "details": "{initialResourceIDs} and {initialContractAddresses} must have the same length (one resourceID for every address). Also, these arrays must be ordered in the way that {initialResourceIDs}[0] is the intended resourceID for {initialContractAddresses}[0].", + "params": { + "bridgeAddress": "Contract address of previously deployed Bridge.", + "burnableContractAddresses": "These addresses will be set as burnable and when {deposit} is called, the deposited token will be burned. When {executeProposal} is called, new tokens will be minted.", + "initialContractAddresses": "These are the addresses the {initialResourceIDs} will point to, and are the contracts that will be called to perform various deposit calls.", + "initialResourceIDs": "Resource IDs are used to identify a specific contract address. These are the Resource IDs this contract will initially support." + } + }, + "deposit(bytes32,uint8,uint64,address,bytes)": { + "details": "Depending if the corresponding {tokenAddress} for the parsed {resourceID} is marked true in {_burnList}, deposited tokens will be burned, if not, they will be locked.", + "params": { + "data": "Consists of: {resourceID}, {tokenID}, {lenDestinationRecipientAddress}, and {destinationRecipientAddress} all padded to 32 bytes.", + "depositNonce": "This value is generated as an ID by the Bridge contract.", + "depositer": "Address of account making the deposit in the Bridge contract.", + "destinationChainID": "Chain ID of chain token is expected to be bridged to." + } + }, + "executeProposal(bytes32,bytes)": { + "params": { + "data": "Consists of {tokenID}, {resourceID}, {lenDestinationRecipientAddress}, {destinationRecipientAddress}, {lenMeta}, and {metaData} all padded to 32 bytes." + } + }, + "fundERC721(address,address,uint256)": { + "params": { + "owner": "Address of current token owner.", + "tokenAddress": "Address of ERC721 to transfer.", + "tokenID": "ID of token to transfer." + } + }, + "getDepositRecord(uint64,uint8)": { + "params": { + "depositNonce": "This ID will have been generated by the Bridge contract.", + "destId": "ID of chain deposit will be bridged to." }, - "notice": "This contract is intended to be used with the Bridge contract.", - "version": 1 - } -} + "returns": { + "_0": "DepositRecord which consists of: - _tokenAddress Address used when {deposit} was executed. - _destinationChainID ChainID deposited tokens are intended to end up on. - _resourceID ResourceID used when {deposit} was executed. - _lenDestinationRecipientAddress Used to parse recipient's address from {_destinationRecipientAddress} - _destinationRecipientAddress Address tokens are intended to be deposited to on desitnation chain. - _depositer Address that initially called {deposit} in the Bridge contract. - _tokenID ID of ERC721. - _metaData Optional ERC721 metadata." + } + }, + "setBurnable(address)": { + "params": { + "contractAddress": "Address of contract to be used when making or executing deposits." + } + }, + "setResource(bytes32,address)": { + "params": { + "contractAddress": "Address of contract to be called when a deposit is made and a deposited is executed.", + "resourceID": "ResourceID to be used when making deposits." + } + }, + "withdraw(address,address,uint256)": { + "params": { + "recipient": "Address to release token to.", + "tokenAddress": "Address of token contract to release.", + "tokenID": "The ERC721 token ID to release." + } + } + }, + "title": "Handles ERC721 deposits and deposit executions.", + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": { + "deposit(bytes32,uint8,uint64,address,bytes)": { + "notice": "A deposit is initiatied by making a deposit in the Bridge contract.Data passed into the function should be constructed as follows: tokenID uint256 bytes 0 - 32 destinationRecipientAddress length uint256 bytes 32 - 64 destinationRecipientAddress bytes bytes 64 - (64 + len(destinationRecipientAddress))If the corresponding {tokenAddress} for the parsed {resourceID} supports {_INTERFACE_ERC721_METADATA}, then {metaData} will be set according to the {tokenURI} method in the token contract." + }, + "executeProposal(bytes32,bytes)": { + "notice": "Proposal execution should be initiated when a proposal is finalized in the Bridge contract. by a relayer on the deposit's destination chain.Data passed into the function should be constructed as follows: tokenID uint256 bytes 0 - 32 destinationRecipientAddress length uint256 bytes 32 - 64 destinationRecipientAddress bytes bytes 64 - (64 + len(destinationRecipientAddress)) metadata length uint256 bytes (64 + len(destinationRecipientAddress)) - (64 + len(destinationRecipientAddress) + 32) metadata bytes bytes (64 + len(destinationRecipientAddress) + 32) - END" + }, + "fundERC721(address,address,uint256)": { + "notice": "Used to transfer tokens into the safe to fund proposals." + }, + "setBurnable(address)": { + "notice": "First verifies {contractAddress} is whitelisted, then sets {_burnList}[{contractAddress}] to true." + }, + "setResource(bytes32,address)": { + "notice": "First verifies {_resourceIDToContractAddress}[{resourceID}] and {_contractAddressToResourceID}[{contractAddress}] are not already set, then sets {_resourceIDToContractAddress} with {contractAddress}, {_contractAddressToResourceID} with {resourceID}, and {_contractWhitelist} to true for {contractAddress}." + }, + "withdraw(address,address,uint256)": { + "notice": "Used to manually release ERC721 tokens from ERC721Safe." + } + }, + "notice": "This contract is intended to be used with the Bridge contract.", + "version": 1 + } +} \ No newline at end of file diff --git a/ts-tests/common/abi/bridge/GenericHandler.json b/ts-tests/common/abi/bridge/GenericHandler.json index 5f4b2b069a..0152055b9a 100644 --- a/ts-tests/common/abi/bridge/GenericHandler.json +++ b/ts-tests/common/abi/bridge/GenericHandler.json @@ -1,11461 +1,24166 @@ { - "contractName": "GenericHandler", - "abi": [ + "contractName": "GenericHandler", + "abi": [ + { + "inputs": [ { - "inputs": [ - { - "internalType": "address", - "name": "bridgeAddress", - "type": "address" - }, - { - "internalType": "bytes32[]", - "name": "initialResourceIDs", - "type": "bytes32[]" - }, - { - "internalType": "address[]", - "name": "initialContractAddresses", - "type": "address[]" - }, - { - "internalType": "bytes4[]", - "name": "initialDepositFunctionSignatures", - "type": "bytes4[]" - }, - { - "internalType": "bytes4[]", - "name": "initialExecuteFunctionSignatures", - "type": "bytes4[]" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" + "internalType": "address", + "name": "bridgeAddress", + "type": "address" }, { - "inputs": [], - "name": "_bridgeAddress", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true + "internalType": "bytes32[]", + "name": "initialResourceIDs", + "type": "bytes32[]" }, { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "_contractAddressToDepositFunctionSignature", - "outputs": [ - { - "internalType": "bytes4", - "name": "", - "type": "bytes4" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true + "internalType": "address[]", + "name": "initialContractAddresses", + "type": "address[]" }, { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "_contractAddressToExecuteFunctionSignature", - "outputs": [ - { - "internalType": "bytes4", - "name": "", - "type": "bytes4" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true + "internalType": "bytes4[]", + "name": "initialDepositFunctionSignatures", + "type": "bytes4[]" }, { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "_contractAddressToResourceID", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true + "internalType": "bytes4[]", + "name": "initialExecuteFunctionSignatures", + "type": "bytes4[]" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "_bridgeAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "_contractAddressToDepositFunctionSignature", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "_contractAddressToExecuteFunctionSignature", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "_contractAddressToResourceID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "_contractWhitelist", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" }, { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "_contractWhitelist", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "name": "_depositRecords", + "outputs": [ + { + "internalType": "uint8", + "name": "_destinationChainID", + "type": "uint8" }, { - "inputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - }, + "internalType": "address", + "name": "_depositer", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "_resourceID", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "_metaData", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "_resourceIDToContractAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "depositNonce", + "type": "uint64" + }, + { + "internalType": "uint8", + "name": "destId", + "type": "uint8" + } + ], + "name": "getDepositRecord", + "outputs": [ + { + "components": [ + { + "internalType": "uint8", + "name": "_destinationChainID", + "type": "uint8" + }, + { + "internalType": "address", + "name": "_depositer", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "_resourceID", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "_metaData", + "type": "bytes" + } + ], + "internalType": "struct GenericHandler.DepositRecord", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "resourceID", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "contractAddress", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "depositFunctionSig", + "type": "bytes4" + }, + { + "internalType": "bytes4", + "name": "executeFunctionSig", + "type": "bytes4" + } + ], + "name": "setResource", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "resourceID", + "type": "bytes32" + }, + { + "internalType": "uint8", + "name": "destinationChainID", + "type": "uint8" + }, + { + "internalType": "uint64", + "name": "depositNonce", + "type": "uint64" + }, + { + "internalType": "address", + "name": "depositer", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "resourceID", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "executeProposal", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "metadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"bridgeAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"initialResourceIDs\",\"type\":\"bytes32[]\"},{\"internalType\":\"address[]\",\"name\":\"initialContractAddresses\",\"type\":\"address[]\"},{\"internalType\":\"bytes4[]\",\"name\":\"initialDepositFunctionSignatures\",\"type\":\"bytes4[]\"},{\"internalType\":\"bytes4[]\",\"name\":\"initialExecuteFunctionSignatures\",\"type\":\"bytes4[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"_bridgeAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"_contractAddressToDepositFunctionSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"_contractAddressToExecuteFunctionSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"_contractAddressToResourceID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"_contractWhitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"_depositRecords\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"_destinationChainID\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"_depositer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_metaData\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"_resourceIDToContractAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"destinationChainID\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"depositer\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"executeProposal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"destId\",\"type\":\"uint8\"}],\"name\":\"getDepositRecord\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"_destinationChainID\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"_depositer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_metaData\",\"type\":\"bytes\"}],\"internalType\":\"struct GenericHandler.DepositRecord\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"depositFunctionSig\",\"type\":\"bytes4\"},{\"internalType\":\"bytes4\",\"name\":\"executeFunctionSig\",\"type\":\"bytes4\"}],\"name\":\"setResource\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"ChainSafe Systems.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"{initialResourceIDs}, {initialContractAddresses}, {initialDepositFunctionSignatures}, and {initialExecuteFunctionSignatures} must all have the same length. Also, values must be ordered in the way that that index x of any mentioned array must be intended for value x of any other array, e.g. {initialContractAddresses}[0] is the intended address for {initialDepositFunctionSignatures}[0].\",\"params\":{\"bridgeAddress\":\"Contract address of previously deployed Bridge.\",\"initialContractAddresses\":\"These are the addresses the {initialResourceIDs} will point to, and are the contracts that will be called to perform deposit and execution calls.\",\"initialDepositFunctionSignatures\":\"These are the function signatures {initialContractAddresses} will point to, and are the function that will be called when executing {deposit}\",\"initialExecuteFunctionSignatures\":\"These are the function signatures {initialContractAddresses} will point to, and are the function that will be called when executing {executeProposal}\",\"initialResourceIDs\":\"Resource IDs used to identify a specific contract address. These are the Resource IDs this contract will initially support.\"}},\"deposit(bytes32,uint8,uint64,address,bytes)\":{\"params\":{\"data\":\"Consists of: {resourceID}, {lenMetaData}, and {metaData} all padded to 32 bytes.\",\"depositNonce\":\"This value is generated as an ID by the Bridge contract.\",\"depositer\":\"Address of account making the deposit in the Bridge contract.\",\"destinationChainID\":\"Chain ID deposit is expected to be bridged to.\"}},\"executeProposal(bytes32,bytes)\":{\"params\":{\"data\":\"Consists of {resourceID}, {lenMetaData}, and {metaData}.\"}},\"getDepositRecord(uint64,uint8)\":{\"params\":{\"depositNonce\":\"This ID will have been generated by the Bridge contract.\",\"destId\":\"ID of chain deposit will be bridged to.\"},\"returns\":{\"_0\":\"DepositRecord which consists of: - _destinationChainID ChainID deposited tokens are intended to end up on. - _resourceID ResourceID used when {deposit} was executed. - _depositer Address that initially called {deposit} in the Bridge contract. - _metaData Data to be passed to method executed in corresponding {resourceID} contract.\"}},\"setResource(bytes32,address,bytes4,bytes4)\":{\"params\":{\"contractAddress\":\"Address of contract to be called when a deposit is made and a deposited is executed.\",\"depositFunctionSig\":\"Function signature of method to be called in {contractAddress} when a deposit is made.\",\"executeFunctionSig\":\"Function signature of method to be called in {contractAddress} when a deposit is executed.\",\"resourceID\":\"ResourceID to be used when making deposits.\"}}},\"title\":\"Handles generic deposits and deposit executions.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"deposit(bytes32,uint8,uint64,address,bytes)\":{\"notice\":\"A deposit is initiatied by making a deposit in the Bridge contract.Data passed into the function should be constructed as follows: len(data) uint256 bytes 0 - 32 data bytes bytes 64 - END{contractAddress} is required to be whitelistedIf {_contractAddressToDepositFunctionSignature}[{contractAddress}] is set, {metaData} is expected to consist of needed function arguments.\"},\"executeProposal(bytes32,bytes)\":{\"notice\":\"Proposal execution should be initiated when a proposal is finalized in the Bridge contract.Data passed into the function should be constructed as follows: len(data) uint256 bytes 0 - 32 data bytes bytes 32 - END{contractAddress} is required to be whitelistedIf {_contractAddressToExecuteFunctionSignature}[{contractAddress}] is set, {metaData} is expected to consist of needed function arguments.\"},\"setResource(bytes32,address,bytes4,bytes4)\":{\"notice\":\"First verifies {_resourceIDToContractAddress}[{resourceID}] and {_contractAddressToResourceID}[{contractAddress}] are not already set, then sets {_resourceIDToContractAddress} with {contractAddress}, {_contractAddressToResourceID} with {resourceID}, {_contractAddressToDepositFunctionSignature} with {depositFunctionSig}, {_contractAddressToExecuteFunctionSignature} with {executeFunctionSig}, and {_contractWhitelist} to true for {contractAddress}.\"}},\"notice\":\"This contract is intended to be used with the Bridge contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/handlers/GenericHandler.sol\":\"GenericHandler\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"project:/contracts/handlers/GenericHandler.sol\":{\"keccak256\":\"0x061c9031250225c818d5b29c59efdaebad8b80f47ba713660d5af25b20a996fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c26655784821a4c1e463e36d8fbfb9e51de183e635b5324503e8688e93cd0940\",\"dweb:/ipfs/QmVGiPee3Y3RMJ1ELzKjLUKtUbcHW73jEeZcAWFToQViPT\"]},\"project:/contracts/interfaces/IGenericHandler.sol\":{\"keccak256\":\"0x8b56c7cb93a29d31d93e82d893edd547e8f6d141b062d38743cd91a1fcc56f30\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc339468c87abf44a5a137446761cafb0dc07ba76918999682c08c1a3c214e6e\",\"dweb:/ipfs/QmRe5JfQ7k9T8tQcEEPTgVuzGCiF4ExPR5fqnnJNPS46m9\"]}},\"version\":1}", + "bytecode": "0x60806040523480156200001157600080fd5b506040516200276c3803806200276c8339818101604052810190620000379190620007df565b82518451146200007e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000075906200096a565b60405180910390fd5b8151835114620000c5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000bc9062000a02565b60405180910390fd5b80518251146200010c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001039062000a9a565b60405180910390fd5b846000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060005b8451811015620001f757620001e185828151811062000173576200017262000abc565b5b602002602001015185838151811062000191576200019062000abc565b5b6020026020010151858481518110620001af57620001ae62000abc565b5b6020026020010151858581518110620001cd57620001cc62000abc565b5b60200260200101516200020360201b60201c565b8080620001ee9062000b24565b9150506200014f565b50505050505062000b71565b826002600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908360e01c021790555080600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908360e01c02179055506001600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050505050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620003ee82620003c1565b9050919050565b6200040081620003e1565b81146200040c57600080fd5b50565b6000815190506200042081620003f5565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b62000476826200042b565b810181811067ffffffffffffffff821117156200049857620004976200043c565b5b80604052505050565b6000620004ad620003ad565b9050620004bb82826200046b565b919050565b600067ffffffffffffffff821115620004de57620004dd6200043c565b5b602082029050602081019050919050565b600080fd5b6000819050919050565b6200050981620004f4565b81146200051557600080fd5b50565b6000815190506200052981620004fe565b92915050565b6000620005466200054084620004c0565b620004a1565b905080838252602082019050602084028301858111156200056c576200056b620004ef565b5b835b8181101562000599578062000584888262000518565b8452602084019350506020810190506200056e565b5050509392505050565b600082601f830112620005bb57620005ba62000426565b5b8151620005cd8482602086016200052f565b91505092915050565b600067ffffffffffffffff821115620005f457620005f36200043c565b5b602082029050602081019050919050565b60006200061c6200061684620005d6565b620004a1565b90508083825260208201905060208402830185811115620006425762000641620004ef565b5b835b818110156200066f57806200065a88826200040f565b84526020840193505060208101905062000644565b5050509392505050565b600082601f83011262000691576200069062000426565b5b8151620006a384826020860162000605565b91505092915050565b600067ffffffffffffffff821115620006ca57620006c96200043c565b5b602082029050602081019050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6200071281620006db565b81146200071e57600080fd5b50565b600081519050620007328162000707565b92915050565b60006200074f6200074984620006ac565b620004a1565b90508083825260208201905060208402830185811115620007755762000774620004ef565b5b835b81811015620007a257806200078d888262000721565b84526020840193505060208101905062000777565b5050509392505050565b600082601f830112620007c457620007c362000426565b5b8151620007d684826020860162000738565b91505092915050565b600080600080600060a08688031215620007fe57620007fd620003b7565b5b60006200080e888289016200040f565b955050602086015167ffffffffffffffff811115620008325762000831620003bc565b5b6200084088828901620005a3565b945050604086015167ffffffffffffffff811115620008645762000863620003bc565b5b620008728882890162000679565b935050606086015167ffffffffffffffff811115620008965762000895620003bc565b5b620008a488828901620007ac565b925050608086015167ffffffffffffffff811115620008c857620008c7620003bc565b5b620008d688828901620007ac565b9150509295509295909350565b600082825260208201905092915050565b7f696e697469616c5265736f7572636549447320616e6420696e697469616c436f60008201527f6e7472616374416464726573736573206c656e206d69736d6174636800000000602082015250565b600062000952603c83620008e3565b91506200095f82620008f4565b604082019050919050565b60006020820190508181036000830152620009858162000943565b9050919050565b7f70726f766964656420636f6e74726163742061646472657373657320616e642060008201527f66756e6374696f6e207369676e617475726573206c656e206d69736d61746368602082015250565b6000620009ea604083620008e3565b9150620009f7826200098c565b604082019050919050565b6000602082019050818103600083015262000a1d81620009db565b9050919050565b7f70726f7669646564206465706f73697420616e6420657865637574652066756e60008201527f6374696f6e207369676e617475726573206c656e206d69736d61746368000000602082015250565b600062000a82603d83620008e3565b915062000a8f8262000a24565b604082019050919050565b6000602082019050818103600083015262000ab58162000a73565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000819050919050565b600062000b318262000b1a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362000b665762000b6562000aeb565b5b600182019050919050565b611beb8062000b816000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063ba484c0911610071578063ba484c091461017b578063bba8185a146101ab578063c54c2a11146101c7578063cb624463146101f7578063e248cff214610227578063ec97d3b414610243576100a9565b8063318c136e146100ae57806338995da9146100cc5780634402027f146100e85780637f79bea81461011b578063a5c3a9851461014b575b600080fd5b6100b6610273565b6040516100c39190610ef7565b60405180910390f35b6100e660048036038101906100e1919061105c565b610297565b005b61010260048036038101906100fd91906110f6565b61065b565b60405161011294939291906111e4565b60405180910390f35b61013560048036038101906101309190611230565b61074d565b6040516101429190611278565b60405180910390f35b61016560048036038101906101609190611230565b61076d565b60405161017291906112ce565b60405180910390f35b610195600480360381019061019091906112e9565b61078d565b6040516101a29190611403565b60405180910390f35b6101c560048036038101906101c09190611451565b6108f5565b005b6101e160048036038101906101dc91906114b8565b61090f565b6040516101ee9190610ef7565b60405180910390f35b610211600480360381019061020c9190611230565b610942565b60405161021e91906112ce565b60405180910390f35b610241600480360381019061023c91906114e5565b610962565b005b61025d60048036038101906102589190611230565b610c20565b60405161026a9190611545565b60405180910390f35b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61029f610c38565b6000606083838101906102b29190611596565b915083836020908460206102c691906115f2565b926102d393929190611630565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505090506000600260008a815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166103dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d3906116ee565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460e01b9050600060e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461054c576000818460405160200161048b92919061176b565b604051602081830303815290604052905060008373ffffffffffffffffffffffffffffffffffffffff16826040516104c39190611793565b6000604051808303816000865af19150503d8060008114610500576040519150601f19603f3d011682016040523d82523d6000602084013e610505565b606091505b5050905080610549576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105409061181c565b60405180910390fd5b50505b60405180608001604052808a60ff1681526020018873ffffffffffffffffffffffffffffffffffffffff1681526020018b815260200184815250600160008b60ff1660ff16815260200190815260200160002060008a67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160010155606082015181600201908161064b9190611a77565b5090505050505050505050505050565b6001602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900460ff16908060000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020180546106ca9061189a565b80601f01602080910402602001604051908101604052809291908181526020018280546106f69061189a565b80156107435780601f1061071857610100808354040283529160200191610743565b820191906000526020600020905b81548152906001019060200180831161072657829003601f168201915b5050505050905084565b60066020528060005260406000206000915054906101000a900460ff1681565b60056020528060005260406000206000915054906101000a900460e01b81565b610795610e72565b600160008360ff1660ff16815260200190815260200160002060008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060800160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201805461086b9061189a565b80601f01602080910402602001604051908101604052809291908181526020018280546108979061189a565b80156108e45780601f106108b9576101008083540402835291602001916108e4565b820191906000526020600020905b8154815290600101906020018083116108c757829003601f168201915b505050505081525050905092915050565b6108fd610c38565b61090984848484610cc8565b50505050565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915054906101000a900460e01b81565b61096a610c38565b60006060838381019061097d9190611596565b9150838360209084602061099191906115f2565b9261099e93929190611630565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050905060006002600087815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610aa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9e906116ee565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460e01b9050600060e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614610c175760008184604051602001610b5692919061176b565b604051602081830303815290604052905060008373ffffffffffffffffffffffffffffffffffffffff1682604051610b8e9190611793565b6000604051808303816000865af19150503d8060008114610bcb576040519150601f19603f3d011682016040523d82523d6000602084013e610bd0565b606091505b5050905080610c14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0b9061181c565b60405180910390fd5b50505b50505050505050565b60036020528060005260406000206000915090505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbd90611b95565b60405180910390fd5b565b826002600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908360e01c021790555080600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908360e01c02179055506001600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050505050565b6040518060800160405280600060ff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008019168152602001606081525090565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610ee182610eb6565b9050919050565b610ef181610ed6565b82525050565b6000602082019050610f0c6000830184610ee8565b92915050565b600080fd5b600080fd5b6000819050919050565b610f2f81610f1c565b8114610f3a57600080fd5b50565b600081359050610f4c81610f26565b92915050565b600060ff82169050919050565b610f6881610f52565b8114610f7357600080fd5b50565b600081359050610f8581610f5f565b92915050565b600067ffffffffffffffff82169050919050565b610fa881610f8b565b8114610fb357600080fd5b50565b600081359050610fc581610f9f565b92915050565b610fd481610ed6565b8114610fdf57600080fd5b50565b600081359050610ff181610fcb565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261101c5761101b610ff7565b5b8235905067ffffffffffffffff81111561103957611038610ffc565b5b60208301915083600182028301111561105557611054611001565b5b9250929050565b60008060008060008060a0878903121561107957611078610f12565b5b600061108789828a01610f3d565b965050602061109889828a01610f76565b95505060406110a989828a01610fb6565b94505060606110ba89828a01610fe2565b935050608087013567ffffffffffffffff8111156110db576110da610f17565b5b6110e789828a01611006565b92509250509295509295509295565b6000806040838503121561110d5761110c610f12565b5b600061111b85828601610f76565b925050602061112c85828601610fb6565b9150509250929050565b61113f81610f52565b82525050565b61114e81610f1c565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561118e578082015181840152602081019050611173565b60008484015250505050565b6000601f19601f8301169050919050565b60006111b682611154565b6111c0818561115f565b93506111d0818560208601611170565b6111d98161119a565b840191505092915050565b60006080820190506111f96000830187611136565b6112066020830186610ee8565b6112136040830185611145565b818103606083015261122581846111ab565b905095945050505050565b60006020828403121561124657611245610f12565b5b600061125484828501610fe2565b91505092915050565b60008115159050919050565b6112728161125d565b82525050565b600060208201905061128d6000830184611269565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6112c881611293565b82525050565b60006020820190506112e360008301846112bf565b92915050565b60008060408385031215611300576112ff610f12565b5b600061130e85828601610fb6565b925050602061131f85828601610f76565b9150509250929050565b61133281610f52565b82525050565b61134181610ed6565b82525050565b61135081610f1c565b82525050565b600082825260208201905092915050565b600061137282611154565b61137c8185611356565b935061138c818560208601611170565b6113958161119a565b840191505092915050565b60006080830160008301516113b86000860182611329565b5060208301516113cb6020860182611338565b5060408301516113de6040860182611347565b50606083015184820360608601526113f68282611367565b9150508091505092915050565b6000602082019050818103600083015261141d81846113a0565b905092915050565b61142e81611293565b811461143957600080fd5b50565b60008135905061144b81611425565b92915050565b6000806000806080858703121561146b5761146a610f12565b5b600061147987828801610f3d565b945050602061148a87828801610fe2565b935050604061149b8782880161143c565b92505060606114ac8782880161143c565b91505092959194509250565b6000602082840312156114ce576114cd610f12565b5b60006114dc84828501610f3d565b91505092915050565b6000806000604084860312156114fe576114fd610f12565b5b600061150c86828701610f3d565b935050602084013567ffffffffffffffff81111561152d5761152c610f17565b5b61153986828701611006565b92509250509250925092565b600060208201905061155a6000830184611145565b92915050565b6000819050919050565b61157381611560565b811461157e57600080fd5b50565b6000813590506115908161156a565b92915050565b6000602082840312156115ac576115ab610f12565b5b60006115ba84828501611581565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006115fd82611560565b915061160883611560565b92508282019050808211156116205761161f6115c3565b5b92915050565b600080fd5b600080fd5b6000808585111561164457611643611626565b5b838611156116555761165461162b565b5b6001850283019150848603905094509492505050565b600082825260208201905092915050565b7f70726f766964656420636f6e747261637441646472657373206973206e6f742060008201527f77686974656c6973746564000000000000000000000000000000000000000000602082015250565b60006116d8602b8361166b565b91506116e38261167c565b604082019050919050565b60006020820190508181036000830152611707816116cb565b9050919050565b6000819050919050565b61172961172482611293565b61170e565b82525050565b600081905092915050565b600061174582611154565b61174f818561172f565b935061175f818560208601611170565b80840191505092915050565b60006117778285611718565b600482019150611787828461173a565b91508190509392505050565b600061179f828461173a565b915081905092915050565b7f64656c656761746563616c6c20746f20636f6e7472616374416464726573732060008201527f6661696c65640000000000000000000000000000000000000000000000000000602082015250565b600061180660268361166b565b9150611811826117aa565b604082019050919050565b60006020820190508181036000830152611835816117f9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806118b257607f821691505b6020821081036118c5576118c461186b565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261192d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826118f0565b61193786836118f0565b95508019841693508086168417925050509392505050565b6000819050919050565b600061197461196f61196a84611560565b61194f565b611560565b9050919050565b6000819050919050565b61198e83611959565b6119a261199a8261197b565b8484546118fd565b825550505050565b600090565b6119b76119aa565b6119c2818484611985565b505050565b5b818110156119e6576119db6000826119af565b6001810190506119c8565b5050565b601f821115611a2b576119fc816118cb565b611a05846118e0565b81016020851015611a14578190505b611a28611a20856118e0565b8301826119c7565b50505b505050565b600082821c905092915050565b6000611a4e60001984600802611a30565b1980831691505092915050565b6000611a678383611a3d565b9150826002028217905092915050565b611a8082611154565b67ffffffffffffffff811115611a9957611a9861183c565b5b611aa3825461189a565b611aae8282856119ea565b600060209050601f831160018114611ae15760008415611acf578287015190505b611ad98582611a5b565b865550611b41565b601f198416611aef866118cb565b60005b82811015611b1757848901518255600182019150602085019450602081019050611af2565b86831015611b345784890151611b30601f891682611a3d565b8355505b6001600288020188555050505b505050505050565b7f73656e646572206d7573742062652062726964676520636f6e74726163740000600082015250565b6000611b7f601e8361166b565b9150611b8a82611b49565b602082019050919050565b60006020820190508181036000830152611bae81611b72565b905091905056fea26469706673582212203519853128bc339fa1a4cd054a886eefb4c2d2ec17909685ae890e6d0c19cb5964736f6c63430008130033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c8063ba484c0911610071578063ba484c091461017b578063bba8185a146101ab578063c54c2a11146101c7578063cb624463146101f7578063e248cff214610227578063ec97d3b414610243576100a9565b8063318c136e146100ae57806338995da9146100cc5780634402027f146100e85780637f79bea81461011b578063a5c3a9851461014b575b600080fd5b6100b6610273565b6040516100c39190610ef7565b60405180910390f35b6100e660048036038101906100e1919061105c565b610297565b005b61010260048036038101906100fd91906110f6565b61065b565b60405161011294939291906111e4565b60405180910390f35b61013560048036038101906101309190611230565b61074d565b6040516101429190611278565b60405180910390f35b61016560048036038101906101609190611230565b61076d565b60405161017291906112ce565b60405180910390f35b610195600480360381019061019091906112e9565b61078d565b6040516101a29190611403565b60405180910390f35b6101c560048036038101906101c09190611451565b6108f5565b005b6101e160048036038101906101dc91906114b8565b61090f565b6040516101ee9190610ef7565b60405180910390f35b610211600480360381019061020c9190611230565b610942565b60405161021e91906112ce565b60405180910390f35b610241600480360381019061023c91906114e5565b610962565b005b61025d60048036038101906102589190611230565b610c20565b60405161026a9190611545565b60405180910390f35b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61029f610c38565b6000606083838101906102b29190611596565b915083836020908460206102c691906115f2565b926102d393929190611630565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505090506000600260008a815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166103dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d3906116ee565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460e01b9050600060e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461054c576000818460405160200161048b92919061176b565b604051602081830303815290604052905060008373ffffffffffffffffffffffffffffffffffffffff16826040516104c39190611793565b6000604051808303816000865af19150503d8060008114610500576040519150601f19603f3d011682016040523d82523d6000602084013e610505565b606091505b5050905080610549576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105409061181c565b60405180910390fd5b50505b60405180608001604052808a60ff1681526020018873ffffffffffffffffffffffffffffffffffffffff1681526020018b815260200184815250600160008b60ff1660ff16815260200190815260200160002060008a67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160010155606082015181600201908161064b9190611a77565b5090505050505050505050505050565b6001602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900460ff16908060000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020180546106ca9061189a565b80601f01602080910402602001604051908101604052809291908181526020018280546106f69061189a565b80156107435780601f1061071857610100808354040283529160200191610743565b820191906000526020600020905b81548152906001019060200180831161072657829003601f168201915b5050505050905084565b60066020528060005260406000206000915054906101000a900460ff1681565b60056020528060005260406000206000915054906101000a900460e01b81565b610795610e72565b600160008360ff1660ff16815260200190815260200160002060008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060800160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201805461086b9061189a565b80601f01602080910402602001604051908101604052809291908181526020018280546108979061189a565b80156108e45780601f106108b9576101008083540402835291602001916108e4565b820191906000526020600020905b8154815290600101906020018083116108c757829003601f168201915b505050505081525050905092915050565b6108fd610c38565b61090984848484610cc8565b50505050565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915054906101000a900460e01b81565b61096a610c38565b60006060838381019061097d9190611596565b9150838360209084602061099191906115f2565b9261099e93929190611630565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050905060006002600087815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610aa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9e906116ee565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460e01b9050600060e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614610c175760008184604051602001610b5692919061176b565b604051602081830303815290604052905060008373ffffffffffffffffffffffffffffffffffffffff1682604051610b8e9190611793565b6000604051808303816000865af19150503d8060008114610bcb576040519150601f19603f3d011682016040523d82523d6000602084013e610bd0565b606091505b5050905080610c14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0b9061181c565b60405180910390fd5b50505b50505050505050565b60036020528060005260406000206000915090505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbd90611b95565b60405180910390fd5b565b826002600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908360e01c021790555080600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908360e01c02179055506001600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050505050565b6040518060800160405280600060ff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008019168152602001606081525090565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610ee182610eb6565b9050919050565b610ef181610ed6565b82525050565b6000602082019050610f0c6000830184610ee8565b92915050565b600080fd5b600080fd5b6000819050919050565b610f2f81610f1c565b8114610f3a57600080fd5b50565b600081359050610f4c81610f26565b92915050565b600060ff82169050919050565b610f6881610f52565b8114610f7357600080fd5b50565b600081359050610f8581610f5f565b92915050565b600067ffffffffffffffff82169050919050565b610fa881610f8b565b8114610fb357600080fd5b50565b600081359050610fc581610f9f565b92915050565b610fd481610ed6565b8114610fdf57600080fd5b50565b600081359050610ff181610fcb565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261101c5761101b610ff7565b5b8235905067ffffffffffffffff81111561103957611038610ffc565b5b60208301915083600182028301111561105557611054611001565b5b9250929050565b60008060008060008060a0878903121561107957611078610f12565b5b600061108789828a01610f3d565b965050602061109889828a01610f76565b95505060406110a989828a01610fb6565b94505060606110ba89828a01610fe2565b935050608087013567ffffffffffffffff8111156110db576110da610f17565b5b6110e789828a01611006565b92509250509295509295509295565b6000806040838503121561110d5761110c610f12565b5b600061111b85828601610f76565b925050602061112c85828601610fb6565b9150509250929050565b61113f81610f52565b82525050565b61114e81610f1c565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561118e578082015181840152602081019050611173565b60008484015250505050565b6000601f19601f8301169050919050565b60006111b682611154565b6111c0818561115f565b93506111d0818560208601611170565b6111d98161119a565b840191505092915050565b60006080820190506111f96000830187611136565b6112066020830186610ee8565b6112136040830185611145565b818103606083015261122581846111ab565b905095945050505050565b60006020828403121561124657611245610f12565b5b600061125484828501610fe2565b91505092915050565b60008115159050919050565b6112728161125d565b82525050565b600060208201905061128d6000830184611269565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6112c881611293565b82525050565b60006020820190506112e360008301846112bf565b92915050565b60008060408385031215611300576112ff610f12565b5b600061130e85828601610fb6565b925050602061131f85828601610f76565b9150509250929050565b61133281610f52565b82525050565b61134181610ed6565b82525050565b61135081610f1c565b82525050565b600082825260208201905092915050565b600061137282611154565b61137c8185611356565b935061138c818560208601611170565b6113958161119a565b840191505092915050565b60006080830160008301516113b86000860182611329565b5060208301516113cb6020860182611338565b5060408301516113de6040860182611347565b50606083015184820360608601526113f68282611367565b9150508091505092915050565b6000602082019050818103600083015261141d81846113a0565b905092915050565b61142e81611293565b811461143957600080fd5b50565b60008135905061144b81611425565b92915050565b6000806000806080858703121561146b5761146a610f12565b5b600061147987828801610f3d565b945050602061148a87828801610fe2565b935050604061149b8782880161143c565b92505060606114ac8782880161143c565b91505092959194509250565b6000602082840312156114ce576114cd610f12565b5b60006114dc84828501610f3d565b91505092915050565b6000806000604084860312156114fe576114fd610f12565b5b600061150c86828701610f3d565b935050602084013567ffffffffffffffff81111561152d5761152c610f17565b5b61153986828701611006565b92509250509250925092565b600060208201905061155a6000830184611145565b92915050565b6000819050919050565b61157381611560565b811461157e57600080fd5b50565b6000813590506115908161156a565b92915050565b6000602082840312156115ac576115ab610f12565b5b60006115ba84828501611581565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006115fd82611560565b915061160883611560565b92508282019050808211156116205761161f6115c3565b5b92915050565b600080fd5b600080fd5b6000808585111561164457611643611626565b5b838611156116555761165461162b565b5b6001850283019150848603905094509492505050565b600082825260208201905092915050565b7f70726f766964656420636f6e747261637441646472657373206973206e6f742060008201527f77686974656c6973746564000000000000000000000000000000000000000000602082015250565b60006116d8602b8361166b565b91506116e38261167c565b604082019050919050565b60006020820190508181036000830152611707816116cb565b9050919050565b6000819050919050565b61172961172482611293565b61170e565b82525050565b600081905092915050565b600061174582611154565b61174f818561172f565b935061175f818560208601611170565b80840191505092915050565b60006117778285611718565b600482019150611787828461173a565b91508190509392505050565b600061179f828461173a565b915081905092915050565b7f64656c656761746563616c6c20746f20636f6e7472616374416464726573732060008201527f6661696c65640000000000000000000000000000000000000000000000000000602082015250565b600061180660268361166b565b9150611811826117aa565b604082019050919050565b60006020820190508181036000830152611835816117f9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806118b257607f821691505b6020821081036118c5576118c461186b565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261192d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826118f0565b61193786836118f0565b95508019841693508086168417925050509392505050565b6000819050919050565b600061197461196f61196a84611560565b61194f565b611560565b9050919050565b6000819050919050565b61198e83611959565b6119a261199a8261197b565b8484546118fd565b825550505050565b600090565b6119b76119aa565b6119c2818484611985565b505050565b5b818110156119e6576119db6000826119af565b6001810190506119c8565b5050565b601f821115611a2b576119fc816118cb565b611a05846118e0565b81016020851015611a14578190505b611a28611a20856118e0565b8301826119c7565b50505b505050565b600082821c905092915050565b6000611a4e60001984600802611a30565b1980831691505092915050565b6000611a678383611a3d565b9150826002028217905092915050565b611a8082611154565b67ffffffffffffffff811115611a9957611a9861183c565b5b611aa3825461189a565b611aae8282856119ea565b600060209050601f831160018114611ae15760008415611acf578287015190505b611ad98582611a5b565b865550611b41565b601f198416611aef866118cb565b60005b82811015611b1757848901518255600182019150602085019450602081019050611af2565b86831015611b345784890151611b30601f891682611a3d565b8355505b6001600288020188555050505b505050505050565b7f73656e646572206d7573742062652062726964676520636f6e74726163740000600082015250565b6000611b7f601e8361166b565b9150611b8a82611b49565b602082019050919050565b60006020820190508181036000830152611bae81611b72565b905091905056fea26469706673582212203519853128bc339fa1a4cd054a886eefb4c2d2ec17909685ae890e6d0c19cb5964736f6c63430008130033", + "immutableReferences": {}, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:12839:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "47:35:66", + "statements": [ { - "internalType": "uint64", - "name": "", - "type": "uint64" + "nodeType": "YulAssignment", + "src": "57:19:66", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "73:2:66", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "67:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "67:9:66" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "57:6:66" + } + ] } + ] + }, + "name": "allocate_unbounded", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "40:6:66", + "type": "" + } ], - "name": "_depositRecords", - "outputs": [ + "src": "7:75:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "177:28:66", + "statements": [ { - "internalType": "uint8", - "name": "_destinationChainID", - "type": "uint8" - }, - { - "internalType": "address", - "name": "_depositer", - "type": "address" - }, + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "194:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "197:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "187:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "187:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "187:12:66" + } + ] + }, + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulFunctionDefinition", + "src": "88:117:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "300:28:66", + "statements": [ { - "internalType": "bytes32", - "name": "_resourceID", - "type": "bytes32" - }, + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "317:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "320:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "310:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "310:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "310:12:66" + } + ] + }, + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulFunctionDefinition", + "src": "211:117:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "379:81:66", + "statements": [ { - "internalType": "bytes", - "name": "_metaData", - "type": "bytes" + "nodeType": "YulAssignment", + "src": "389:65:66", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "404:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "411:42:66", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "400:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "400:54:66" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "389:7:66" + } + ] } + ] + }, + "name": "cleanup_t_uint160", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "361:5:66", + "type": "" + } ], - "stateMutability": "view", - "type": "function", - "constant": true - }, - { - "inputs": [ + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "371:7:66", + "type": "" + } + ], + "src": "334:126:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "511:51:66", + "statements": [ { - "internalType": "bytes32", - "name": "", - "type": "bytes32" + "nodeType": "YulAssignment", + "src": "521:35:66", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "550:5:66" + } + ], + "functionName": { + "name": "cleanup_t_uint160", + "nodeType": "YulIdentifier", + "src": "532:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "532:24:66" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "521:7:66" + } + ] } + ] + }, + "name": "cleanup_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "493:5:66", + "type": "" + } ], - "name": "_resourceIDToContractAddress", - "outputs": [ + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "503:7:66", + "type": "" + } + ], + "src": "466:96:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "611:79:66", + "statements": [ { - "internalType": "address", - "name": "", - "type": "address" + "body": { + "nodeType": "YulBlock", + "src": "668:16:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "677:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "680:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "670:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "670:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "670:12:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "634:5:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "659:5:66" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "641:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "641:24:66" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "631:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "631:35:66" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "624:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "624:43:66" + }, + "nodeType": "YulIf", + "src": "621:63:66" } + ] + }, + "name": "validator_revert_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "604:5:66", + "type": "" + } ], - "stateMutability": "view", - "type": "function", - "constant": true - }, - { - "inputs": [ + "src": "568:122:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "759:80:66", + "statements": [ { - "internalType": "uint64", - "name": "depositNonce", - "type": "uint64" + "nodeType": "YulAssignment", + "src": "769:22:66", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "784:6:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "778:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "778:13:66" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "769:5:66" + } + ] }, { - "internalType": "uint8", - "name": "destId", - "type": "uint8" + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "827:5:66" + } + ], + "functionName": { + "name": "validator_revert_t_address", + "nodeType": "YulIdentifier", + "src": "800:26:66" + }, + "nodeType": "YulFunctionCall", + "src": "800:33:66" + }, + "nodeType": "YulExpressionStatement", + "src": "800:33:66" } + ] + }, + "name": "abi_decode_t_address_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "737:6:66", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "745:3:66", + "type": "" + } ], - "name": "getDepositRecord", - "outputs": [ + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "753:5:66", + "type": "" + } + ], + "src": "696:143:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "934:28:66", + "statements": [ { - "components": [ - { - "internalType": "uint8", - "name": "_destinationChainID", - "type": "uint8" - }, - { - "internalType": "address", - "name": "_depositer", - "type": "address" + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "951:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "954:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "944:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "944:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "944:12:66" + } + ] + }, + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulFunctionDefinition", + "src": "845:117:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1016:54:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1026:38:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1044:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1051:2:66", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1040:3:66" }, - { - "internalType": "bytes32", - "name": "_resourceID", - "type": "bytes32" + "nodeType": "YulFunctionCall", + "src": "1040:14:66" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1060:2:66", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "1056:3:66" }, - { - "internalType": "bytes", - "name": "_metaData", - "type": "bytes" - } + "nodeType": "YulFunctionCall", + "src": "1056:7:66" + } ], - "internalType": "struct GenericHandler.DepositRecord", - "name": "", - "type": "tuple" + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "1036:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "1036:28:66" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "1026:6:66" + } + ] } + ] + }, + "name": "round_up_to_mul_of_32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "999:5:66", + "type": "" + } ], - "stateMutability": "view", - "type": "function", - "constant": true - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "resourceID", - "type": "bytes32" - }, + "returnVariables": [ + { + "name": "result", + "nodeType": "YulTypedName", + "src": "1009:6:66", + "type": "" + } + ], + "src": "968:102:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1104:152:66", + "statements": [ { - "internalType": "address", - "name": "contractAddress", - "type": "address" + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1121:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1124:77:66", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1114:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "1114:88:66" + }, + "nodeType": "YulExpressionStatement", + "src": "1114:88:66" }, { - "internalType": "bytes4", - "name": "depositFunctionSig", - "type": "bytes4" + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1218:1:66", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1221:4:66", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1211:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "1211:15:66" + }, + "nodeType": "YulExpressionStatement", + "src": "1211:15:66" }, { - "internalType": "bytes4", - "name": "executeFunctionSig", - "type": "bytes4" + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1242:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1245:4:66", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1235:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "1235:15:66" + }, + "nodeType": "YulExpressionStatement", + "src": "1235:15:66" } - ], - "name": "setResource", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ + ] + }, + "name": "panic_error_0x41", + "nodeType": "YulFunctionDefinition", + "src": "1076:180:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1305:238:66", + "statements": [ { - "internalType": "bytes32", - "name": "resourceID", - "type": "bytes32" + "nodeType": "YulVariableDeclaration", + "src": "1315:58:66", + "value": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1337:6:66" + }, + { + "arguments": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "1367:4:66" + } + ], + "functionName": { + "name": "round_up_to_mul_of_32", + "nodeType": "YulIdentifier", + "src": "1345:21:66" + }, + "nodeType": "YulFunctionCall", + "src": "1345:27:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1333:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "1333:40:66" + }, + "variables": [ + { + "name": "newFreePtr", + "nodeType": "YulTypedName", + "src": "1319:10:66", + "type": "" + } + ] }, { - "internalType": "uint8", - "name": "destinationChainID", - "type": "uint8" + "body": { + "nodeType": "YulBlock", + "src": "1484:22:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "1486:16:66" + }, + "nodeType": "YulFunctionCall", + "src": "1486:18:66" + }, + "nodeType": "YulExpressionStatement", + "src": "1486:18:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "1427:10:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1439:18:66", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1424:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "1424:34:66" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "1463:10:66" + }, + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1475:6:66" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "1460:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "1460:22:66" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "1421:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "1421:62:66" + }, + "nodeType": "YulIf", + "src": "1418:88:66" }, { - "internalType": "uint64", - "name": "depositNonce", - "type": "uint64" - }, + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1522:2:66", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "1526:10:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1515:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "1515:22:66" + }, + "nodeType": "YulExpressionStatement", + "src": "1515:22:66" + } + ] + }, + "name": "finalize_allocation", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "1291:6:66", + "type": "" + }, + { + "name": "size", + "nodeType": "YulTypedName", + "src": "1299:4:66", + "type": "" + } + ], + "src": "1262:281:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1590:88:66", + "statements": [ { - "internalType": "address", - "name": "depositer", - "type": "address" + "nodeType": "YulAssignment", + "src": "1600:30:66", + "value": { + "arguments": [], + "functionName": { + "name": "allocate_unbounded", + "nodeType": "YulIdentifier", + "src": "1610:18:66" + }, + "nodeType": "YulFunctionCall", + "src": "1610:20:66" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1600:6:66" + } + ] }, { - "internalType": "bytes", - "name": "data", - "type": "bytes" + "expression": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "1659:6:66" + }, + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "1667:4:66" + } + ], + "functionName": { + "name": "finalize_allocation", + "nodeType": "YulIdentifier", + "src": "1639:19:66" + }, + "nodeType": "YulFunctionCall", + "src": "1639:33:66" + }, + "nodeType": "YulExpressionStatement", + "src": "1639:33:66" } + ] + }, + "name": "allocate_memory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "size", + "nodeType": "YulTypedName", + "src": "1574:4:66", + "type": "" + } ], - "name": "deposit", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "1583:6:66", + "type": "" + } + ], + "src": "1549:129:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1766:229:66", + "statements": [ { - "internalType": "bytes32", - "name": "resourceID", - "type": "bytes32" + "body": { + "nodeType": "YulBlock", + "src": "1871:22:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "1873:16:66" + }, + "nodeType": "YulFunctionCall", + "src": "1873:18:66" + }, + "nodeType": "YulExpressionStatement", + "src": "1873:18:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1843:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1851:18:66", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1840:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "1840:30:66" + }, + "nodeType": "YulIf", + "src": "1837:56:66" }, { - "internalType": "bytes", - "name": "data", - "type": "bytes" + "nodeType": "YulAssignment", + "src": "1903:25:66", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1915:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1923:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "1911:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "1911:17:66" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "1903:4:66" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1965:23:66", + "value": { + "arguments": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "1977:4:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1983:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1973:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "1973:15:66" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "1965:4:66" + } + ] } - ], - "name": "executeProposal", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "metadata": "{\"compiler\":{\"version\":\"0.7.0+commit.9e61f92b\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"bridgeAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"initialResourceIDs\",\"type\":\"bytes32[]\"},{\"internalType\":\"address[]\",\"name\":\"initialContractAddresses\",\"type\":\"address[]\"},{\"internalType\":\"bytes4[]\",\"name\":\"initialDepositFunctionSignatures\",\"type\":\"bytes4[]\"},{\"internalType\":\"bytes4[]\",\"name\":\"initialExecuteFunctionSignatures\",\"type\":\"bytes4[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"_bridgeAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"_contractAddressToDepositFunctionSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"_contractAddressToExecuteFunctionSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"_contractAddressToResourceID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"_contractWhitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"_depositRecords\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"_destinationChainID\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"_depositer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_metaData\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"_resourceIDToContractAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"destinationChainID\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"depositer\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"executeProposal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"destId\",\"type\":\"uint8\"}],\"name\":\"getDepositRecord\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"_destinationChainID\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"_depositer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_metaData\",\"type\":\"bytes\"}],\"internalType\":\"struct GenericHandler.DepositRecord\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"depositFunctionSig\",\"type\":\"bytes4\"},{\"internalType\":\"bytes4\",\"name\":\"executeFunctionSig\",\"type\":\"bytes4\"}],\"name\":\"setResource\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"ChainSafe Systems.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"{initialResourceIDs}, {initialContractAddresses}, {initialDepositFunctionSignatures}, and {initialExecuteFunctionSignatures} must all have the same length. Also, values must be ordered in the way that that index x of any mentioned array must be intended for value x of any other array, e.g. {initialContractAddresses}[0] is the intended address for {initialDepositFunctionSignatures}[0].\",\"params\":{\"bridgeAddress\":\"Contract address of previously deployed Bridge.\",\"initialContractAddresses\":\"These are the addresses the {initialResourceIDs} will point to, and are the contracts that will be called to perform deposit and execution calls.\",\"initialDepositFunctionSignatures\":\"These are the function signatures {initialContractAddresses} will point to, and are the function that will be called when executing {deposit}\",\"initialExecuteFunctionSignatures\":\"These are the function signatures {initialContractAddresses} will point to, and are the function that will be called when executing {executeProposal}\",\"initialResourceIDs\":\"Resource IDs used to identify a specific contract address. These are the Resource IDs this contract will initially support.\"}},\"deposit(bytes32,uint8,uint64,address,bytes)\":{\"params\":{\"data\":\"Consists of: {resourceID}, {lenMetaData}, and {metaData} all padded to 32 bytes.\",\"depositNonce\":\"This value is generated as an ID by the Bridge contract.\",\"depositer\":\"Address of account making the deposit in the Bridge contract.\",\"destinationChainID\":\"Chain ID deposit is expected to be bridged to.\"}},\"executeProposal(bytes32,bytes)\":{\"params\":{\"data\":\"Consists of {resourceID}, {lenMetaData}, and {metaData}.\"}},\"getDepositRecord(uint64,uint8)\":{\"params\":{\"depositNonce\":\"This ID will have been generated by the Bridge contract.\",\"destId\":\"ID of chain deposit will be bridged to.\"},\"returns\":{\"_0\":\"DepositRecord which consists of: - _destinationChainID ChainID deposited tokens are intended to end up on. - _resourceID ResourceID used when {deposit} was executed. - _depositer Address that initially called {deposit} in the Bridge contract. - _metaData Data to be passed to method executed in corresponding {resourceID} contract.\"}},\"setResource(bytes32,address,bytes4,bytes4)\":{\"params\":{\"contractAddress\":\"Address of contract to be called when a deposit is made and a deposited is executed.\",\"depositFunctionSig\":\"Function signature of method to be called in {contractAddress} when a deposit is made.\",\"executeFunctionSig\":\"Function signature of method to be called in {contractAddress} when a deposit is executed.\",\"resourceID\":\"ResourceID to be used when making deposits.\"}}},\"title\":\"Handles generic deposits and deposit executions.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"deposit(bytes32,uint8,uint64,address,bytes)\":{\"notice\":\"A deposit is initiatied by making a deposit in the Bridge contract.Data passed into the function should be constructed as follows: len(data) uint256 bytes 0 - 32 data bytes bytes 64 - END{contractAddress} is required to be whitelistedIf {_contractAddressToDepositFunctionSignature}[{contractAddress}] is set, {metaData} is expected to consist of needed function arguments.\"},\"executeProposal(bytes32,bytes)\":{\"notice\":\"Proposal execution should be initiated when a proposal is finalized in the Bridge contract.Data passed into the function should be constructed as follows: len(data) uint256 bytes 0 - 32 data bytes bytes 32 - END{contractAddress} is required to be whitelistedIf {_contractAddressToExecuteFunctionSignature}[{contractAddress}] is set, {metaData} is expected to consist of needed function arguments.\"},\"setResource(bytes32,address,bytes4,bytes4)\":{\"notice\":\"First verifies {_resourceIDToContractAddress}[{resourceID}] and {_contractAddressToResourceID}[{contractAddress}] are not already set, then sets {_resourceIDToContractAddress} with {contractAddress}, {_contractAddressToResourceID} with {resourceID}, {_contractAddressToDepositFunctionSignature} with {depositFunctionSig}, {_contractAddressToExecuteFunctionSignature} with {executeFunctionSig}, and {_contractWhitelist} to true for {contractAddress}.\"}},\"notice\":\"This contract is intended to be used with the Bridge contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/handlers/GenericHandler.sol\":\"GenericHandler\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"project:/contracts/handlers/GenericHandler.sol\":{\"keccak256\":\"0x8f683301bc9cb43688e307824d597f9cbdf05bde2ab8d617bc217b8a429609f9\",\"urls\":[\"bzz-raw://1ca5a17732856d35b37fdc5c01b498712f589b3728a795418dd36476891a1cd8\",\"dweb:/ipfs/QmRXhkbz6uqZFMek89mmG4Vr48GbNe8WhX8ahZXED19Fnv\"]},\"project:/contracts/interfaces/IGenericHandler.sol\":{\"keccak256\":\"0xe21a9a6933121c92c170b3792d9858b9f627879759e29b71dfac856b7268a10d\",\"urls\":[\"bzz-raw://4ac531c6ff3850972023fd3bdd09e0a2b85c322bba0c5560a8eb634531fae120\",\"dweb:/ipfs/QmXESqB3SrEhY4ozFpG1bsvVD5342SkhYndS9eyq6oSq2r\"]}},\"version\":1}", - "bytecode": "0x60806040523480156200001157600080fd5b50604051620022993803806200229983398181016040528101906200003791906200056d565b82518451146200007e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000075906200078b565b60405180910390fd5b8151835114620000c5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000bc90620007cf565b60405180910390fd5b80518251146200010c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200010390620007ad565b60405180910390fd5b846000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060005b8451811015620001cb57620001bd8582815181106200016a57fe5b60200260200101518583815181106200017f57fe5b60200260200101518584815181106200019457fe5b6020026020010151858581518110620001a957fe5b6020026020010151620001d760201b60201c565b80806001019150506200014f565b50505050505062000963565b826002600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908360e01c021790555080600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908360e01c02179055506001600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050505050565b600081519050620003928162000915565b92915050565b600082601f830112620003aa57600080fd5b8151620003c1620003bb826200081f565b620007f1565b91508181835260208401935060208101905083856020840282011115620003e757600080fd5b60005b838110156200041b578162000400888262000381565b845260208401935060208301925050600181019050620003ea565b5050505092915050565b600082601f8301126200043757600080fd5b81516200044e620004488262000848565b620007f1565b915081818352602084019350602081019050838560208402820111156200047457600080fd5b60005b83811015620004a857816200048d88826200053f565b84526020840193506020830192505060018101905062000477565b5050505092915050565b600082601f830112620004c457600080fd5b8151620004db620004d58262000871565b620007f1565b915081818352602084019350602081019050838560208402820111156200050157600080fd5b60005b838110156200053557816200051a888262000556565b84526020840193506020830192505060018101905062000504565b5050505092915050565b60008151905062000550816200092f565b92915050565b600081519050620005678162000949565b92915050565b600080600080600060a086880312156200058657600080fd5b6000620005968882890162000381565b955050602086015167ffffffffffffffff811115620005b457600080fd5b620005c28882890162000425565b945050604086015167ffffffffffffffff811115620005e057600080fd5b620005ee8882890162000398565b935050606086015167ffffffffffffffff8111156200060c57600080fd5b6200061a88828901620004b2565b925050608086015167ffffffffffffffff8111156200063857600080fd5b6200064688828901620004b2565b9150509295509295909350565b600062000662603c836200089a565b91507f696e697469616c5265736f7572636549447320616e6420696e697469616c436f60008301527f6e7472616374416464726573736573206c656e206d69736d61746368000000006020830152604082019050919050565b6000620006ca603d836200089a565b91507f70726f7669646564206465706f73697420616e6420657865637574652066756e60008301527f6374696f6e207369676e617475726573206c656e206d69736d617463680000006020830152604082019050919050565b6000620007326040836200089a565b91507f70726f766964656420636f6e74726163742061646472657373657320616e642060008301527f66756e6374696f6e207369676e617475726573206c656e206d69736d617463686020830152604082019050919050565b60006020820190508181036000830152620007a68162000653565b9050919050565b60006020820190508181036000830152620007c881620006bb565b9050919050565b60006020820190508181036000830152620007ea8162000723565b9050919050565b6000604051905081810181811067ffffffffffffffff821117156200081557600080fd5b8060405250919050565b600067ffffffffffffffff8211156200083757600080fd5b602082029050602081019050919050565b600067ffffffffffffffff8211156200086057600080fd5b602082029050602081019050919050565b600067ffffffffffffffff8211156200088957600080fd5b602082029050602081019050919050565b600082825260208201905092915050565b6000620008b882620008f5565b9050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6200092081620008ab565b81146200092c57600080fd5b50565b6200093a81620008bf565b81146200094657600080fd5b50565b6200095481620008c9565b81146200096057600080fd5b50565b61192680620009736000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063ba484c0911610071578063ba484c091461017b578063bba8185a146101ab578063c54c2a11146101c7578063cb624463146101f7578063e248cff214610227578063ec97d3b414610243576100a9565b8063318c136e146100ae57806338995da9146100cc5780634402027f146100e85780637f79bea81461011b578063a5c3a9851461014b575b600080fd5b6100b6610273565b6040516100c391906115ab565b60405180910390f35b6100e660048036038101906100e191906111d7565b610297565b005b61010260048036038101906100fd91906112ce565b6106a6565b60405161011294939291906116bb565b60405180910390f35b610135600480360381019061013091906110ca565b6107a8565b60405161014291906115c6565b60405180910390f35b610165600480360381019061016091906110ca565b6107c8565b60405161017291906115fc565b60405180910390f35b61019560048036038101906101909190611292565b6107e8565b6040516101a29190611699565b60405180910390f35b6101c560048036038101906101c0919061111c565b610960565b005b6101e160048036038101906101dc91906110f3565b61097a565b6040516101ee91906115ab565b60405180910390f35b610211600480360381019061020c91906110ca565b6109ad565b60405161021e91906115fc565b60405180910390f35b610241600480360381019061023c919061117f565b6109cd565b005b61025d600480360381019061025891906110ca565b610ccf565b60405161026a91906115e1565b60405180910390f35b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61029f610ce7565b6000606083838101906102b29190611269565b9150838360209084602001926102ca93929190611750565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505090506000600260008a815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166103d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ca90611679565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460e01b9050600060e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461059057606081846040516024016104819190611617565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060008373ffffffffffffffffffffffffffffffffffffffff16826040516105079190611594565b6000604051808303816000865af19150503d8060008114610544576040519150601f19603f3d011682016040523d82523d6000602084013e610549565b606091505b505090508061058d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058490611659565b60405180910390fd5b50505b60405180608001604052808a60ff1681526020018873ffffffffffffffffffffffffffffffffffffffff1681526020018b815260200184815250600160008b60ff1660ff16815260200190815260200160002060008a67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600101556060820151816002019080519060200190610696929190610f21565b5090505050505050505050505050565b6001602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900460ff16908060000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015490806002018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561079e5780601f106107735761010080835404028352916020019161079e565b820191906000526020600020905b81548152906001019060200180831161078157829003601f168201915b5050505050905084565b60066020528060005260406000206000915054906101000a900460ff1681565b60056020528060005260406000206000915054906101000a900460e01b81565b6107f0610fa1565b600160008360ff1660ff16815260200190815260200160002060008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060800160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201548152602001600282018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561094f5780601f106109245761010080835404028352916020019161094f565b820191906000526020600020905b81548152906001019060200180831161093257829003601f168201915b505050505081525050905092915050565b610968610ce7565b61097484848484610d77565b50505050565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915054906101000a900460e01b81565b6109d5610ce7565b6000606083838101906109e89190611269565b915083836020908460200192610a0093929190611750565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050905060006002600087815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610b09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0090611679565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460e01b9050600060e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614610cc65760608184604051602401610bb79190611617565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060008373ffffffffffffffffffffffffffffffffffffffff1682604051610c3d9190611594565b6000604051808303816000865af19150503d8060008114610c7a576040519150601f19603f3d011682016040523d82523d6000602084013e610c7f565b606091505b5050905080610cc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cba90611659565b60405180910390fd5b50505b50505050505050565b60036020528060005260406000206000915090505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6c90611639565b60405180910390fd5b565b826002600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908360e01c021790555080600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908360e01c02179055506001600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610f6257805160ff1916838001178555610f90565b82800160010185558215610f90579182015b82811115610f8f578251825591602001919060010190610f74565b5b509050610f9d9190610fe5565b5090565b6040518060800160405280600060ff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008019168152602001606081525090565b5b80821115610ffe576000816000905550600101610fe6565b5090565b60008135905061101181611866565b92915050565b6000813590506110268161187d565b92915050565b60008135905061103b81611894565b92915050565b60008083601f84011261105357600080fd5b8235905067ffffffffffffffff81111561106c57600080fd5b60208301915083600182028301111561108457600080fd5b9250929050565b60008135905061109a816118ab565b92915050565b6000813590506110af816118c2565b92915050565b6000813590506110c4816118d9565b92915050565b6000602082840312156110dc57600080fd5b60006110ea84828501611002565b91505092915050565b60006020828403121561110557600080fd5b600061111384828501611017565b91505092915050565b6000806000806080858703121561113257600080fd5b600061114087828801611017565b945050602061115187828801611002565b93505060406111628782880161102c565b92505060606111738782880161102c565b91505092959194509250565b60008060006040848603121561119457600080fd5b60006111a286828701611017565b935050602084013567ffffffffffffffff8111156111bf57600080fd5b6111cb86828701611041565b92509250509250925092565b60008060008060008060a087890312156111f057600080fd5b60006111fe89828a01611017565b965050602061120f89828a016110b5565b955050604061122089828a016110a0565b945050606061123189828a01611002565b935050608087013567ffffffffffffffff81111561124e57600080fd5b61125a89828a01611041565b92509250509295509295509295565b60006020828403121561127b57600080fd5b60006112898482850161108b565b91505092915050565b600080604083850312156112a557600080fd5b60006112b3858286016110a0565b92505060206112c4858286016110b5565b9150509250929050565b600080604083850312156112e157600080fd5b60006112ef858286016110b5565b9250506020611300858286016110a0565b9150509250929050565b61131381611783565b82525050565b61132281611783565b82525050565b61133181611795565b82525050565b611340816117a1565b82525050565b61134f816117a1565b82525050565b61135e816117ab565b82525050565b600061136f82611707565b6113798185611712565b9350611389818560208601611822565b61139281611855565b840191505092915050565b60006113a882611707565b6113b28185611723565b93506113c2818560208601611822565b6113cb81611855565b840191505092915050565b60006113e182611707565b6113eb8185611734565b93506113fb818560208601611822565b80840191505092915050565b6000611414601e8361173f565b91507f73656e646572206d7573742062652062726964676520636f6e747261637400006000830152602082019050919050565b600061145460268361173f565b91507f64656c656761746563616c6c20746f20636f6e7472616374416464726573732060008301527f6661696c656400000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006114ba602b8361173f565b91507f70726f766964656420636f6e747261637441646472657373206973206e6f742060008301527f77686974656c69737465640000000000000000000000000000000000000000006020830152604082019050919050565b600060808301600083015161152b6000860182611576565b50602083015161153e602086018261130a565b5060408301516115516040860182611337565b50606083015184820360608601526115698282611364565b9150508091505092915050565b61157f81611815565b82525050565b61158e81611815565b82525050565b60006115a082846113d6565b915081905092915050565b60006020820190506115c06000830184611319565b92915050565b60006020820190506115db6000830184611328565b92915050565b60006020820190506115f66000830184611346565b92915050565b60006020820190506116116000830184611355565b92915050565b60006020820190508181036000830152611631818461139d565b905092915050565b6000602082019050818103600083015261165281611407565b9050919050565b6000602082019050818103600083015261167281611447565b9050919050565b60006020820190508181036000830152611692816114ad565b9050919050565b600060208201905081810360008301526116b38184611513565b905092915050565b60006080820190506116d06000830187611585565b6116dd6020830186611319565b6116ea6040830185611346565b81810360608301526116fc818461139d565b905095945050505050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000808585111561176057600080fd5b8386111561176d57600080fd5b6001850283019150848603905094509492505050565b600061178e826117d7565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b600060ff82169050919050565b60005b83811015611840578082015181840152602081019050611825565b8381111561184f576000848401525b50505050565b6000601f19601f8301169050919050565b61186f81611783565b811461187a57600080fd5b50565b611886816117a1565b811461189157600080fd5b50565b61189d816117ab565b81146118a857600080fd5b50565b6118b4816117f7565b81146118bf57600080fd5b50565b6118cb81611801565b81146118d657600080fd5b50565b6118e281611815565b81146118ed57600080fd5b5056fea2646970667358221220858ff65e74ee9e765b161c7a568ae0d59fd5590b7c822bab5e49acea2955847d64736f6c63430007000033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c8063ba484c0911610071578063ba484c091461017b578063bba8185a146101ab578063c54c2a11146101c7578063cb624463146101f7578063e248cff214610227578063ec97d3b414610243576100a9565b8063318c136e146100ae57806338995da9146100cc5780634402027f146100e85780637f79bea81461011b578063a5c3a9851461014b575b600080fd5b6100b6610273565b6040516100c391906115ab565b60405180910390f35b6100e660048036038101906100e191906111d7565b610297565b005b61010260048036038101906100fd91906112ce565b6106a6565b60405161011294939291906116bb565b60405180910390f35b610135600480360381019061013091906110ca565b6107a8565b60405161014291906115c6565b60405180910390f35b610165600480360381019061016091906110ca565b6107c8565b60405161017291906115fc565b60405180910390f35b61019560048036038101906101909190611292565b6107e8565b6040516101a29190611699565b60405180910390f35b6101c560048036038101906101c0919061111c565b610960565b005b6101e160048036038101906101dc91906110f3565b61097a565b6040516101ee91906115ab565b60405180910390f35b610211600480360381019061020c91906110ca565b6109ad565b60405161021e91906115fc565b60405180910390f35b610241600480360381019061023c919061117f565b6109cd565b005b61025d600480360381019061025891906110ca565b610ccf565b60405161026a91906115e1565b60405180910390f35b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61029f610ce7565b6000606083838101906102b29190611269565b9150838360209084602001926102ca93929190611750565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505090506000600260008a815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166103d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ca90611679565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460e01b9050600060e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461059057606081846040516024016104819190611617565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060008373ffffffffffffffffffffffffffffffffffffffff16826040516105079190611594565b6000604051808303816000865af19150503d8060008114610544576040519150601f19603f3d011682016040523d82523d6000602084013e610549565b606091505b505090508061058d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058490611659565b60405180910390fd5b50505b60405180608001604052808a60ff1681526020018873ffffffffffffffffffffffffffffffffffffffff1681526020018b815260200184815250600160008b60ff1660ff16815260200190815260200160002060008a67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600101556060820151816002019080519060200190610696929190610f21565b5090505050505050505050505050565b6001602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900460ff16908060000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015490806002018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561079e5780601f106107735761010080835404028352916020019161079e565b820191906000526020600020905b81548152906001019060200180831161078157829003601f168201915b5050505050905084565b60066020528060005260406000206000915054906101000a900460ff1681565b60056020528060005260406000206000915054906101000a900460e01b81565b6107f0610fa1565b600160008360ff1660ff16815260200190815260200160002060008467ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206040518060800160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201548152602001600282018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561094f5780601f106109245761010080835404028352916020019161094f565b820191906000526020600020905b81548152906001019060200180831161093257829003601f168201915b505050505081525050905092915050565b610968610ce7565b61097484848484610d77565b50505050565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915054906101000a900460e01b81565b6109d5610ce7565b6000606083838101906109e89190611269565b915083836020908460200192610a0093929190611750565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050905060006002600087815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610b09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0090611679565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460e01b9050600060e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614610cc65760608184604051602401610bb79190611617565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060008373ffffffffffffffffffffffffffffffffffffffff1682604051610c3d9190611594565b6000604051808303816000865af19150503d8060008114610c7a576040519150601f19603f3d011682016040523d82523d6000602084013e610c7f565b606091505b5050905080610cc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cba90611659565b60405180910390fd5b50505b50505050505050565b60036020528060005260406000206000915090505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6c90611639565b60405180910390fd5b565b826002600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908360e01c021790555080600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908360e01c02179055506001600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610f6257805160ff1916838001178555610f90565b82800160010185558215610f90579182015b82811115610f8f578251825591602001919060010190610f74565b5b509050610f9d9190610fe5565b5090565b6040518060800160405280600060ff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008019168152602001606081525090565b5b80821115610ffe576000816000905550600101610fe6565b5090565b60008135905061101181611866565b92915050565b6000813590506110268161187d565b92915050565b60008135905061103b81611894565b92915050565b60008083601f84011261105357600080fd5b8235905067ffffffffffffffff81111561106c57600080fd5b60208301915083600182028301111561108457600080fd5b9250929050565b60008135905061109a816118ab565b92915050565b6000813590506110af816118c2565b92915050565b6000813590506110c4816118d9565b92915050565b6000602082840312156110dc57600080fd5b60006110ea84828501611002565b91505092915050565b60006020828403121561110557600080fd5b600061111384828501611017565b91505092915050565b6000806000806080858703121561113257600080fd5b600061114087828801611017565b945050602061115187828801611002565b93505060406111628782880161102c565b92505060606111738782880161102c565b91505092959194509250565b60008060006040848603121561119457600080fd5b60006111a286828701611017565b935050602084013567ffffffffffffffff8111156111bf57600080fd5b6111cb86828701611041565b92509250509250925092565b60008060008060008060a087890312156111f057600080fd5b60006111fe89828a01611017565b965050602061120f89828a016110b5565b955050604061122089828a016110a0565b945050606061123189828a01611002565b935050608087013567ffffffffffffffff81111561124e57600080fd5b61125a89828a01611041565b92509250509295509295509295565b60006020828403121561127b57600080fd5b60006112898482850161108b565b91505092915050565b600080604083850312156112a557600080fd5b60006112b3858286016110a0565b92505060206112c4858286016110b5565b9150509250929050565b600080604083850312156112e157600080fd5b60006112ef858286016110b5565b9250506020611300858286016110a0565b9150509250929050565b61131381611783565b82525050565b61132281611783565b82525050565b61133181611795565b82525050565b611340816117a1565b82525050565b61134f816117a1565b82525050565b61135e816117ab565b82525050565b600061136f82611707565b6113798185611712565b9350611389818560208601611822565b61139281611855565b840191505092915050565b60006113a882611707565b6113b28185611723565b93506113c2818560208601611822565b6113cb81611855565b840191505092915050565b60006113e182611707565b6113eb8185611734565b93506113fb818560208601611822565b80840191505092915050565b6000611414601e8361173f565b91507f73656e646572206d7573742062652062726964676520636f6e747261637400006000830152602082019050919050565b600061145460268361173f565b91507f64656c656761746563616c6c20746f20636f6e7472616374416464726573732060008301527f6661696c656400000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006114ba602b8361173f565b91507f70726f766964656420636f6e747261637441646472657373206973206e6f742060008301527f77686974656c69737465640000000000000000000000000000000000000000006020830152604082019050919050565b600060808301600083015161152b6000860182611576565b50602083015161153e602086018261130a565b5060408301516115516040860182611337565b50606083015184820360608601526115698282611364565b9150508091505092915050565b61157f81611815565b82525050565b61158e81611815565b82525050565b60006115a082846113d6565b915081905092915050565b60006020820190506115c06000830184611319565b92915050565b60006020820190506115db6000830184611328565b92915050565b60006020820190506115f66000830184611346565b92915050565b60006020820190506116116000830184611355565b92915050565b60006020820190508181036000830152611631818461139d565b905092915050565b6000602082019050818103600083015261165281611407565b9050919050565b6000602082019050818103600083015261167281611447565b9050919050565b60006020820190508181036000830152611692816114ad565b9050919050565b600060208201905081810360008301526116b38184611513565b905092915050565b60006080820190506116d06000830187611585565b6116dd6020830186611319565b6116ea6040830185611346565b81810360608301526116fc818461139d565b905095945050505050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000808585111561176057600080fd5b8386111561176d57600080fd5b6001850283019150848603905094509492505050565b600061178e826117d7565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b600060ff82169050919050565b60005b83811015611840578082015181840152602081019050611825565b8381111561184f576000848401525b50505050565b6000601f19601f8301169050919050565b61186f81611783565b811461187a57600080fd5b50565b611886816117a1565b811461189157600080fd5b50565b61189d816117ab565b81146118a857600080fd5b50565b6118b4816117f7565b81146118bf57600080fd5b50565b6118cb81611801565b81146118d657600080fd5b50565b6118e281611815565b81146118ed57600080fd5b5056fea2646970667358221220858ff65e74ee9e765b161c7a568ae0d59fd5590b7c822bab5e49acea2955847d64736f6c63430007000033", - "immutableReferences": {}, - "sourceMap": "277:9478:36:-:0;;;2731:1129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3057:24;:31;3028:18;:25;:60;3020:145;;;;;;;;;;;;:::i;:::-;;;;;;;;;3219:32;:39;3184:24;:31;:74;3176:163;;;;;;;;;;;;:::i;:::-;;;;;;;;;3401:32;:39;3358:32;:39;:82;3350:168;;;;;;;;;;;;:::i;:::-;;;;;;;;;3546:13;3529:14;;:30;;;;;;;;;;;;;;;;;;3575:9;3570:284;3594:18;:25;3590:1;:29;3570:284;;;3640:203;3670:18;3689:1;3670:21;;;;;;;;;;;;;;3709:24;3734:1;3709:27;;;;;;;;;;;;;;3754:32;3787:1;3754:35;;;;;;;;;;;;;;3807:32;3840:1;3807:35;;;;;;;;;;;;;;3640:12;;;:203;;:::i;:::-;3621:3;;;;;;;3570:284;;;;2731:1129;;;;;277:9478;;9209:544;9430:15;9387:28;:40;9416:10;9387:40;;;;;;;;;;;;:58;;;;;;;;;;;;;;;;;;9503:10;9455:28;:45;9484:15;9455:45;;;;;;;;;;;;;;;:58;;;;9585:18;9523:42;:59;9566:15;9523:59;;;;;;;;;;;;;;;;:80;;;;;;;;;;;;;;;;;;9675:18;9613:42;:59;9656:15;9613:59;;;;;;;;;;;;;;;;:80;;;;;;;;;;;;;;;;;;9742:4;9704:18;:35;9723:15;9704:35;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;9209:544;;;;:::o;5:134:-1:-;;89:6;83:13;74:22;;101:33;128:5;101:33;:::i;:::-;68:71;;;;:::o;164:722::-;;292:3;285:4;277:6;273:17;269:27;259:2;;310:1;307;300:12;259:2;340:6;334:13;362:80;377:64;434:6;377:64;:::i;:::-;362:80;:::i;:::-;353:89;;459:5;484:6;477:5;470:21;514:4;506:6;502:17;492:27;;536:4;531:3;527:14;520:21;;589:6;636:3;628:4;620:6;616:17;611:3;607:27;604:36;601:2;;;653:1;650;643:12;601:2;678:1;663:217;688:6;685:1;682:13;663:217;;;746:3;768:48;812:3;800:10;768:48;:::i;:::-;763:3;756:61;840:4;835:3;831:14;824:21;;868:4;863:3;859:14;852:21;;720:160;710:1;707;703:9;698:14;;663:217;;;667:14;252:634;;;;;;;:::o;912:722::-;;1040:3;1033:4;1025:6;1021:17;1017:27;1007:2;;1058:1;1055;1048:12;1007:2;1088:6;1082:13;1110:80;1125:64;1182:6;1125:64;:::i;:::-;1110:80;:::i;:::-;1101:89;;1207:5;1232:6;1225:5;1218:21;1262:4;1254:6;1250:17;1240:27;;1284:4;1279:3;1275:14;1268:21;;1337:6;1384:3;1376:4;1368:6;1364:17;1359:3;1355:27;1352:36;1349:2;;;1401:1;1398;1391:12;1349:2;1426:1;1411:217;1436:6;1433:1;1430:13;1411:217;;;1494:3;1516:48;1560:3;1548:10;1516:48;:::i;:::-;1511:3;1504:61;1588:4;1583:3;1579:14;1572:21;;1616:4;1611:3;1607:14;1600:21;;1468:160;1458:1;1455;1451:9;1446:14;;1411:217;;;1415:14;1000:634;;;;;;;:::o;1659:719::-;;1786:3;1779:4;1771:6;1767:17;1763:27;1753:2;;1804:1;1801;1794:12;1753:2;1834:6;1828:13;1856:79;1871:63;1927:6;1871:63;:::i;:::-;1856:79;:::i;:::-;1847:88;;1952:5;1977:6;1970:5;1963:21;2007:4;1999:6;1995:17;1985:27;;2029:4;2024:3;2020:14;2013:21;;2082:6;2129:3;2121:4;2113:6;2109:17;2104:3;2100:27;2097:36;2094:2;;;2146:1;2143;2136:12;2094:2;2171:1;2156:216;2181:6;2178:1;2175:13;2156:216;;;2239:3;2261:47;2304:3;2292:10;2261:47;:::i;:::-;2256:3;2249:60;2332:4;2327:3;2323:14;2316:21;;2360:4;2355:3;2351:14;2344:21;;2213:159;2203:1;2200;2196:9;2191:14;;2156:216;;;2160:14;1746:632;;;;;;;:::o;2386:134::-;;2470:6;2464:13;2455:22;;2482:33;2509:5;2482:33;:::i;:::-;2449:71;;;;:::o;2527:132::-;;2610:6;2604:13;2595:22;;2622:32;2648:5;2622:32;:::i;:::-;2589:70;;;;:::o;2666:1321::-;;;;;;2947:3;2935:9;2926:7;2922:23;2918:33;2915:2;;;2964:1;2961;2954:12;2915:2;2999:1;3016:64;3072:7;3063:6;3052:9;3048:22;3016:64;:::i;:::-;3006:74;;2978:108;3138:2;3127:9;3123:18;3117:25;3162:18;3154:6;3151:30;3148:2;;;3194:1;3191;3184:12;3148:2;3214:89;3295:7;3286:6;3275:9;3271:22;3214:89;:::i;:::-;3204:99;;3096:213;3361:2;3350:9;3346:18;3340:25;3385:18;3377:6;3374:30;3371:2;;;3417:1;3414;3407:12;3371:2;3437:89;3518:7;3509:6;3498:9;3494:22;3437:89;:::i;:::-;3427:99;;3319:213;3584:2;3573:9;3569:18;3563:25;3608:18;3600:6;3597:30;3594:2;;;3640:1;3637;3630:12;3594:2;3660:88;3740:7;3731:6;3720:9;3716:22;3660:88;:::i;:::-;3650:98;;3542:212;3806:3;3795:9;3791:19;3785:26;3831:18;3823:6;3820:30;3817:2;;;3863:1;3860;3853:12;3817:2;3883:88;3963:7;3954:6;3943:9;3939:22;3883:88;:::i;:::-;3873:98;;3764:213;2909:1078;;;;;;;;:::o;3995:397::-;;4155:67;4219:2;4214:3;4155:67;:::i;:::-;4148:74;;4255:34;4251:1;4246:3;4242:11;4235:55;4324:30;4319:2;4314:3;4310:12;4303:52;4383:2;4378:3;4374:12;4367:19;;4141:251;;;:::o;4401:398::-;;4561:67;4625:2;4620:3;4561:67;:::i;:::-;4554:74;;4661:34;4657:1;4652:3;4648:11;4641:55;4730:31;4725:2;4720:3;4716:12;4709:53;4790:2;4785:3;4781:12;4774:19;;4547:252;;;:::o;4808:401::-;;4968:67;5032:2;5027:3;4968:67;:::i;:::-;4961:74;;5068:34;5064:1;5059:3;5055:11;5048:55;5137:34;5132:2;5127:3;5123:12;5116:56;5200:2;5195:3;5191:12;5184:19;;4954:255;;;:::o;5217:416::-;;5417:2;5406:9;5402:18;5394:26;;5467:9;5461:4;5457:20;5453:1;5442:9;5438:17;5431:47;5492:131;5618:4;5492:131;:::i;:::-;5484:139;;5388:245;;;:::o;5640:416::-;;5840:2;5829:9;5825:18;5817:26;;5890:9;5884:4;5880:20;5876:1;5865:9;5861:17;5854:47;5915:131;6041:4;5915:131;:::i;:::-;5907:139;;5811:245;;;:::o;6063:416::-;;6263:2;6252:9;6248:18;6240:26;;6313:9;6307:4;6303:20;6299:1;6288:9;6284:17;6277:47;6338:131;6464:4;6338:131;:::i;:::-;6330:139;;6234:245;;;:::o;6486:256::-;;6548:2;6542:9;6532:19;;6586:4;6578:6;6574:17;6685:6;6673:10;6670:22;6649:18;6637:10;6634:34;6631:62;6628:2;;;6706:1;6703;6696:12;6628:2;6726:10;6722:2;6715:22;6526:216;;;;:::o;6749:304::-;;6908:18;6900:6;6897:30;6894:2;;;6940:1;6937;6930:12;6894:2;6975:4;6967:6;6963:17;6955:25;;7038:4;7032;7028:15;7020:23;;6831:222;;;:::o;7060:304::-;;7219:18;7211:6;7208:30;7205:2;;;7251:1;7248;7241:12;7205:2;7286:4;7278:6;7274:17;7266:25;;7349:4;7343;7339:15;7331:23;;7142:222;;;:::o;7371:303::-;;7529:18;7521:6;7518:30;7515:2;;;7561:1;7558;7551:12;7515:2;7596:4;7588:6;7584:17;7576:25;;7659:4;7653;7649:15;7641:23;;7452:222;;;:::o;7682:163::-;;7797:6;7792:3;7785:19;7834:4;7829:3;7825:14;7810:29;;7778:67;;;;:::o;7853:91::-;;7915:24;7933:5;7915:24;:::i;:::-;7904:35;;7898:46;;;:::o;7951:72::-;;8013:5;8002:16;;7996:27;;;:::o;8030:144::-;;8102:66;8095:5;8091:78;8080:89;;8074:100;;;:::o;8181:121::-;;8254:42;8247:5;8243:54;8232:65;;8226:76;;;:::o;8309:117::-;8378:24;8396:5;8378:24;:::i;:::-;8371:5;8368:35;8358:2;;8417:1;8414;8407:12;8358:2;8352:74;:::o;8433:117::-;8502:24;8520:5;8502:24;:::i;:::-;8495:5;8492:35;8482:2;;8541:1;8538;8531:12;8482:2;8476:74;:::o;8557:115::-;8625:23;8642:5;8625:23;:::i;:::-;8618:5;8615:34;8605:2;;8663:1;8660;8653:12;8605:2;8599:73;:::o;277:9478:36:-;;;;;;;", - "deployedSourceMap": "277:9478:36:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;326:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6745:1020;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;555:74;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;1187:51;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1055:77;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4408:167;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5543:286;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;674:64;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;908:77;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8428:775;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;783:64;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;326:29;;;;;;;;;;;;:::o;6745:1020::-;1277:13;:11;:13::i;:::-;6899:24:::1;6933:21;6990:4;;6979:27;;;;;;;:::i;:::-;6965:41;;7033:4;;7038:2;7033:25;7046:11;7041:2;:16;7033:25;;;;;;;:::i;:::-;7016:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7070:23;7096:28;:40;7125:10;7096:40;;;;;;;;;;;;;;;;;;;;;7070:66;;7154:18;:35;7173:15;7154:35;;;;;;;;;;;;;;;;;;;;;;;;;7146:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;7248:10;7261:42;:59;7304:15;7261:59;;;;;;;;;;;;;;;;;;;;;;;;;7248:72;;7348:1;7341:9;;7334:16;;;:3;:16;;;;7330:242;;7366:21;7413:3;7418:8;7390:37;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7366:61;;7442:12;7459:15;:20;;7480:8;7459:30;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7441:48;;;7511:7;7503:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;7330:242;;;7634:124;;;;;;;;7661:18;7634:124;;;;;;7693:9;7634:124;;;;;;7716:10;7634:124;;;;7740:8;7634:124;;::::0;7582:15:::1;:35;7598:18;7582:35;;;;;;;;;;;;;;;:49;7618:12;7582:49;;;;;;;;;;;;;;;:176;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;1300:1;;;;6745:1020:::0;;;;;;:::o;555:74::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1187:51::-;;;;;;;;;;;;;;;;;;;;;;:::o;1055:77::-;;;;;;;;;;;;;;;;;;;;;;:::o;4408:167::-;4492:20;;:::i;:::-;4531:15;:23;4547:6;4531:23;;;;;;;;;;;;;;;:37;4555:12;4531:37;;;;;;;;;;;;;;;4524:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4408:167;;;;:::o;5543:286::-;1277:13;:11;:13::i;:::-;5741:81:::1;5754:10;5766:15;5783:18;5803;5741:12;:81::i;:::-;5543:286:::0;;;;:::o;674:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;908:77::-;;;;;;;;;;;;;;;;;;;;;;:::o;8428:775::-;1277:13;:11;:13::i;:::-;8524:24:::1;8558:21;8615:4;;8604:27;;;;;;;:::i;:::-;8590:41;;8658:4;;8663:2;8658:25;8671:11;8666:2;:16;8658:25;;;;;;;:::i;:::-;8641:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8695:23;8721:28;:40;8750:10;8721:40;;;;;;;;;;;;;;;;;;;;;8695:66;;8779:18;:35;8798:15;8779:35;;;;;;;;;;;;;;;;;;;;;;;;;8771:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;8873:10;8886:42;:59;8929:15;8886:59;;;;;;;;;;;;;;;;;;;;;;;;;8873:72;;8973:1;8966:9;;8959:16;;;:3;:16;;;;8955:242;;8991:21;9038:3;9043:8;9015:37;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8991:61;;9067:12;9084:15;:20;;9105:8;9084:30;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9066:48;;;9136:7;9128:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;8955:242;;;1300:1;;;;8428:775:::0;;;:::o;783:64::-;;;;;;;;;;;;;;;;;:::o;1314:120::-;1378:14;;;;;;;;;;1364:28;;:10;:28;;;1356:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;1314:120::o;9209:544::-;9430:15;9387:28;:40;9416:10;9387:40;;;;;;;;;;;;:58;;;;;;;;;;;;;;;;;;9503:10;9455:28;:45;9484:15;9455:45;;;;;;;;;;;;;;;:58;;;;9585:18;9523:42;:59;9566:15;9523:59;;;;;;;;;;;;;;;;:80;;;;;;;;;;;;;;;;;;9675:18;9613:42;:59;9656:15;9613:59;;;;;;;;;;;;;;;;:80;;;;;;;;;;;;;;;;;;9742:4;9704:18;:35;9723:15;9704:35;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;9209:544;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;5:130::-;;85:6;72:20;63:29;;97:33;124:5;97:33;:::i;:::-;57:78;;;;:::o;142:130::-;;222:6;209:20;200:29;;234:33;261:5;234:33;:::i;:::-;194:78;;;;:::o;279:128::-;;358:6;345:20;336:29;;370:32;396:5;370:32;:::i;:::-;330:77;;;;:::o;428:336::-;;;542:3;535:4;527:6;523:17;519:27;509:2;;560:1;557;550:12;509:2;593:6;580:20;570:30;;620:18;612:6;609:30;606:2;;;652:1;649;642:12;606:2;686:4;678:6;674:17;662:29;;737:3;729:4;721:6;717:17;707:8;703:32;700:41;697:2;;;754:1;751;744:12;697:2;502:262;;;;;:::o;772:130::-;;852:6;839:20;830:29;;864:33;891:5;864:33;:::i;:::-;824:78;;;;:::o;909:128::-;;988:6;975:20;966:29;;1000:32;1026:5;1000:32;:::i;:::-;960:77;;;;:::o;1044:126::-;;1122:6;1109:20;1100:29;;1134:31;1159:5;1134:31;:::i;:::-;1094:76;;;;:::o;1177:241::-;;1281:2;1269:9;1260:7;1256:23;1252:32;1249:2;;;1297:1;1294;1287:12;1249:2;1332:1;1349:53;1394:7;1385:6;1374:9;1370:22;1349:53;:::i;:::-;1339:63;;1311:97;1243:175;;;;:::o;1425:241::-;;1529:2;1517:9;1508:7;1504:23;1500:32;1497:2;;;1545:1;1542;1535:12;1497:2;1580:1;1597:53;1642:7;1633:6;1622:9;1618:22;1597:53;:::i;:::-;1587:63;;1559:97;1491:175;;;;:::o;1673:613::-;;;;;1826:3;1814:9;1805:7;1801:23;1797:33;1794:2;;;1843:1;1840;1833:12;1794:2;1878:1;1895:53;1940:7;1931:6;1920:9;1916:22;1895:53;:::i;:::-;1885:63;;1857:97;1985:2;2003:53;2048:7;2039:6;2028:9;2024:22;2003:53;:::i;:::-;1993:63;;1964:98;2093:2;2111:52;2155:7;2146:6;2135:9;2131:22;2111:52;:::i;:::-;2101:62;;2072:97;2200:2;2218:52;2262:7;2253:6;2242:9;2238:22;2218:52;:::i;:::-;2208:62;;2179:97;1788:498;;;;;;;:::o;2293:490::-;;;;2433:2;2421:9;2412:7;2408:23;2404:32;2401:2;;;2449:1;2446;2439:12;2401:2;2484:1;2501:53;2546:7;2537:6;2526:9;2522:22;2501:53;:::i;:::-;2491:63;;2463:97;2619:2;2608:9;2604:18;2591:32;2643:18;2635:6;2632:30;2629:2;;;2675:1;2672;2665:12;2629:2;2703:64;2759:7;2750:6;2739:9;2735:22;2703:64;:::i;:::-;2685:82;;;;2570:203;2395:388;;;;;:::o;2790:861::-;;;;;;;2978:3;2966:9;2957:7;2953:23;2949:33;2946:2;;;2995:1;2992;2985:12;2946:2;3030:1;3047:53;3092:7;3083:6;3072:9;3068:22;3047:53;:::i;:::-;3037:63;;3009:97;3137:2;3155:51;3198:7;3189:6;3178:9;3174:22;3155:51;:::i;:::-;3145:61;;3116:96;3243:2;3261:52;3305:7;3296:6;3285:9;3281:22;3261:52;:::i;:::-;3251:62;;3222:97;3350:2;3368:53;3413:7;3404:6;3393:9;3389:22;3368:53;:::i;:::-;3358:63;;3329:98;3486:3;3475:9;3471:19;3458:33;3511:18;3503:6;3500:30;3497:2;;;3543:1;3540;3533:12;3497:2;3571:64;3627:7;3618:6;3607:9;3603:22;3571:64;:::i;:::-;3553:82;;;;3437:204;2940:711;;;;;;;;:::o;3658:241::-;;3762:2;3750:9;3741:7;3737:23;3733:32;3730:2;;;3778:1;3775;3768:12;3730:2;3813:1;3830:53;3875:7;3866:6;3855:9;3851:22;3830:53;:::i;:::-;3820:63;;3792:97;3724:175;;;;:::o;3906:360::-;;;4024:2;4012:9;4003:7;3999:23;3995:32;3992:2;;;4040:1;4037;4030:12;3992:2;4075:1;4092:52;4136:7;4127:6;4116:9;4112:22;4092:52;:::i;:::-;4082:62;;4054:96;4181:2;4199:51;4242:7;4233:6;4222:9;4218:22;4199:51;:::i;:::-;4189:61;;4160:96;3986:280;;;;;:::o;4273:360::-;;;4391:2;4379:9;4370:7;4366:23;4362:32;4359:2;;;4407:1;4404;4397:12;4359:2;4442:1;4459:51;4502:7;4493:6;4482:9;4478:22;4459:51;:::i;:::-;4449:61;;4421:95;4547:2;4565:52;4609:7;4600:6;4589:9;4585:22;4565:52;:::i;:::-;4555:62;;4526:97;4353:280;;;;;:::o;4640:103::-;4713:24;4731:5;4713:24;:::i;:::-;4708:3;4701:37;4695:48;;:::o;4750:113::-;4833:24;4851:5;4833:24;:::i;:::-;4828:3;4821:37;4815:48;;:::o;4870:104::-;4947:21;4962:5;4947:21;:::i;:::-;4942:3;4935:34;4929:45;;:::o;4981:103::-;5054:24;5072:5;5054:24;:::i;:::-;5049:3;5042:37;5036:48;;:::o;5091:113::-;5174:24;5192:5;5174:24;:::i;:::-;5169:3;5162:37;5156:48;;:::o;5211:110::-;5292:23;5309:5;5292:23;:::i;:::-;5287:3;5280:36;5274:47;;:::o;5328:323::-;;5428:38;5460:5;5428:38;:::i;:::-;5478:60;5531:6;5526:3;5478:60;:::i;:::-;5471:67;;5543:52;5588:6;5583:3;5576:4;5569:5;5565:16;5543:52;:::i;:::-;5616:29;5638:6;5616:29;:::i;:::-;5611:3;5607:39;5600:46;;5408:243;;;;;:::o;5658:343::-;;5768:38;5800:5;5768:38;:::i;:::-;5818:70;5881:6;5876:3;5818:70;:::i;:::-;5811:77;;5893:52;5938:6;5933:3;5926:4;5919:5;5915:16;5893:52;:::i;:::-;5966:29;5988:6;5966:29;:::i;:::-;5961:3;5957:39;5950:46;;5748:253;;;;;:::o;6008:356::-;;6136:38;6168:5;6136:38;:::i;:::-;6186:88;6267:6;6262:3;6186:88;:::i;:::-;6179:95;;6279:52;6324:6;6319:3;6312:4;6305:5;6301:16;6279:52;:::i;:::-;6352:6;6347:3;6343:16;6336:23;;6116:248;;;;;:::o;6372:330::-;;6532:67;6596:2;6591:3;6532:67;:::i;:::-;6525:74;;6632:32;6628:1;6623:3;6619:11;6612:53;6693:2;6688:3;6684:12;6677:19;;6518:184;;;:::o;6711:375::-;;6871:67;6935:2;6930:3;6871:67;:::i;:::-;6864:74;;6971:34;6967:1;6962:3;6958:11;6951:55;7040:8;7035:2;7030:3;7026:12;7019:30;7077:2;7072:3;7068:12;7061:19;;6857:229;;;:::o;7095:380::-;;7255:67;7319:2;7314:3;7255:67;:::i;:::-;7248:74;;7355:34;7351:1;7346:3;7342:11;7335:55;7424:13;7419:2;7414:3;7410:12;7403:35;7466:2;7461:3;7457:12;7450:19;;7241:234;;;:::o;7564:918::-;;7727:4;7722:3;7718:14;7825:4;7818:5;7814:16;7808:23;7837:59;7890:4;7885:3;7881:14;7867:12;7837:59;:::i;:::-;7747:155;7981:4;7974:5;7970:16;7964:23;7993:63;8050:4;8045:3;8041:14;8027:12;7993:63;:::i;:::-;7912:150;8142:4;8135:5;8131:16;8125:23;8154:63;8211:4;8206:3;8202:14;8188:12;8154:63;:::i;:::-;8072:151;8301:4;8294:5;8290:16;8284:23;8353:3;8347:4;8343:14;8336:4;8331:3;8327:14;8320:38;8373:71;8439:4;8425:12;8373:71;:::i;:::-;8365:79;;8233:223;8473:4;8466:11;;7700:782;;;;;:::o;8489:97::-;8558:22;8574:5;8558:22;:::i;:::-;8553:3;8546:35;8540:46;;:::o;8593:107::-;8672:22;8688:5;8672:22;:::i;:::-;8667:3;8660:35;8654:46;;:::o;8707:271::-;;8860:93;8949:3;8940:6;8860:93;:::i;:::-;8853:100;;8970:3;8963:10;;8841:137;;;;:::o;8985:222::-;;9112:2;9101:9;9097:18;9089:26;;9126:71;9194:1;9183:9;9179:17;9170:6;9126:71;:::i;:::-;9083:124;;;;:::o;9214:210::-;;9335:2;9324:9;9320:18;9312:26;;9349:65;9411:1;9400:9;9396:17;9387:6;9349:65;:::i;:::-;9306:118;;;;:::o;9431:222::-;;9558:2;9547:9;9543:18;9535:26;;9572:71;9640:1;9629:9;9625:17;9616:6;9572:71;:::i;:::-;9529:124;;;;:::o;9660:218::-;;9785:2;9774:9;9770:18;9762:26;;9799:69;9865:1;9854:9;9850:17;9841:6;9799:69;:::i;:::-;9756:122;;;;:::o;9885:306::-;;10030:2;10019:9;10015:18;10007:26;;10080:9;10074:4;10070:20;10066:1;10055:9;10051:17;10044:47;10105:76;10176:4;10167:6;10105:76;:::i;:::-;10097:84;;10001:190;;;;:::o;10198:416::-;;10398:2;10387:9;10383:18;10375:26;;10448:9;10442:4;10438:20;10434:1;10423:9;10419:17;10412:47;10473:131;10599:4;10473:131;:::i;:::-;10465:139;;10369:245;;;:::o;10621:416::-;;10821:2;10810:9;10806:18;10798:26;;10871:9;10865:4;10861:20;10857:1;10846:9;10842:17;10835:47;10896:131;11022:4;10896:131;:::i;:::-;10888:139;;10792:245;;;:::o;11044:416::-;;11244:2;11233:9;11229:18;11221:26;;11294:9;11288:4;11284:20;11280:1;11269:9;11265:17;11258:47;11319:131;11445:4;11319:131;:::i;:::-;11311:139;;11215:245;;;:::o;11467:394::-;;11656:2;11645:9;11641:18;11633:26;;11706:9;11700:4;11696:20;11692:1;11681:9;11677:17;11670:47;11731:120;11846:4;11837:6;11731:120;:::i;:::-;11723:128;;11627:234;;;;:::o;11868:632::-;;12093:3;12082:9;12078:19;12070:27;;12108:67;12172:1;12161:9;12157:17;12148:6;12108:67;:::i;:::-;12186:72;12254:2;12243:9;12239:18;12230:6;12186:72;:::i;:::-;12269;12337:2;12326:9;12322:18;12313:6;12269:72;:::i;:::-;12389:9;12383:4;12379:20;12374:2;12363:9;12359:18;12352:48;12414:76;12485:4;12476:6;12414:76;:::i;:::-;12406:84;;12064:436;;;;;;;:::o;12507:121::-;;12600:5;12594:12;12584:22;;12565:63;;;:::o;12636:152::-;;12740:6;12735:3;12728:19;12777:4;12772:3;12768:14;12753:29;;12721:67;;;;:::o;12797:162::-;;12911:6;12906:3;12899:19;12948:4;12943:3;12939:14;12924:29;;12892:67;;;;:::o;12968:144::-;;13103:3;13088:18;;13081:31;;;;:::o;13121:163::-;;13236:6;13231:3;13224:19;13273:4;13268:3;13264:14;13249:29;;13217:67;;;;:::o;13292:318::-;;;13442:8;13430:10;13427:24;13424:2;;;13464:1;13461;13454:12;13424:2;13489:6;13479:8;13476:20;13473:2;;;13509:1;13506;13499:12;13473:2;13559:1;13547:10;13543:18;13535:6;13531:31;13518:44;;13594:10;13584:8;13580:25;13567:38;;13418:192;;;;;;;:::o;13617:91::-;;13679:24;13697:5;13679:24;:::i;:::-;13668:35;;13662:46;;;:::o;13715:85::-;;13788:5;13781:13;13774:21;13763:32;;13757:43;;;:::o;13807:72::-;;13869:5;13858:16;;13852:27;;;:::o;13886:144::-;;13958:66;13951:5;13947:78;13936:89;;13930:100;;;:::o;14037:121::-;;14110:42;14103:5;14099:54;14088:65;;14082:76;;;:::o;14165:72::-;;14227:5;14216:16;;14210:27;;;:::o;14244:96::-;;14316:18;14309:5;14305:30;14294:41;;14288:52;;;:::o;14347:81::-;;14418:4;14411:5;14407:16;14396:27;;14390:38;;;:::o;14436:268::-;14501:1;14508:101;14522:6;14519:1;14516:13;14508:101;;;14598:1;14593:3;14589:11;14583:18;14579:1;14574:3;14570:11;14563:39;14544:2;14541:1;14537:10;14532:15;;14508:101;;;14624:6;14621:1;14618:13;14615:2;;;14689:1;14680:6;14675:3;14671:16;14664:27;14615:2;14485:219;;;;:::o;14712:97::-;;14800:2;14796:7;14791:2;14784:5;14780:14;14776:28;14766:38;;14760:49;;;:::o;14817:117::-;14886:24;14904:5;14886:24;:::i;:::-;14879:5;14876:35;14866:2;;14925:1;14922;14915:12;14866:2;14860:74;:::o;14941:117::-;15010:24;15028:5;15010:24;:::i;:::-;15003:5;15000:35;14990:2;;15049:1;15046;15039:12;14990:2;14984:74;:::o;15065:115::-;15133:23;15150:5;15133:23;:::i;:::-;15126:5;15123:34;15113:2;;15171:1;15168;15161:12;15113:2;15107:73;:::o;15187:117::-;15256:24;15274:5;15256:24;:::i;:::-;15249:5;15246:35;15236:2;;15295:1;15292;15285:12;15236:2;15230:74;:::o;15311:115::-;15379:23;15396:5;15379:23;:::i;:::-;15372:5;15369:34;15359:2;;15417:1;15414;15407:12;15359:2;15353:73;:::o;15433:113::-;15500:22;15516:5;15500:22;:::i;:::-;15493:5;15490:33;15480:2;;15537:1;15534;15527:12;15480:2;15474:72;:::o", - "source": "pragma solidity 0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"../interfaces/IGenericHandler.sol\";\n\n/**\n @title Handles generic deposits and deposit executions.\n @author ChainSafe Systems.\n @notice This contract is intended to be used with the Bridge contract.\n */\ncontract GenericHandler is IGenericHandler {\n address public _bridgeAddress;\n\n struct DepositRecord {\n uint8 _destinationChainID;\n address _depositer;\n bytes32 _resourceID;\n bytes _metaData;\n }\n\n // depositNonce => Deposit Record\n mapping (uint8 => mapping(uint64 => DepositRecord)) public _depositRecords;\n\n // resourceID => contract address\n mapping (bytes32 => address) public _resourceIDToContractAddress;\n\n // contract address => resourceID\n mapping (address => bytes32) public _contractAddressToResourceID;\n\n // contract address => deposit function signature\n mapping (address => bytes4) public _contractAddressToDepositFunctionSignature;\n\n // contract address => execute proposal function signature\n mapping (address => bytes4) public _contractAddressToExecuteFunctionSignature;\n\n // token contract address => is whitelisted\n mapping (address => bool) public _contractWhitelist;\n\n modifier onlyBridge() {\n _onlyBridge();\n _;\n }\n\n function _onlyBridge() private {\n require(msg.sender == _bridgeAddress, \"sender must be bridge contract\");\n }\n\n /**\n @param bridgeAddress Contract address of previously deployed Bridge.\n @param initialResourceIDs Resource IDs used to identify a specific contract address.\n These are the Resource IDs this contract will initially support.\n @param initialContractAddresses These are the addresses the {initialResourceIDs} will point to, and are the contracts that will be\n called to perform deposit and execution calls.\n @param initialDepositFunctionSignatures These are the function signatures {initialContractAddresses} will point to,\n and are the function that will be called when executing {deposit}\n @param initialExecuteFunctionSignatures These are the function signatures {initialContractAddresses} will point to,\n and are the function that will be called when executing {executeProposal}\n\n @dev {initialResourceIDs}, {initialContractAddresses}, {initialDepositFunctionSignatures},\n and {initialExecuteFunctionSignatures} must all have the same length. Also,\n values must be ordered in the way that that index x of any mentioned array\n must be intended for value x of any other array, e.g. {initialContractAddresses}[0]\n is the intended address for {initialDepositFunctionSignatures}[0].\n */\n constructor(\n address bridgeAddress,\n bytes32[] memory initialResourceIDs,\n address[] memory initialContractAddresses,\n bytes4[] memory initialDepositFunctionSignatures,\n bytes4[] memory initialExecuteFunctionSignatures\n ) public {\n require(initialResourceIDs.length == initialContractAddresses.length,\n \"initialResourceIDs and initialContractAddresses len mismatch\");\n\n require(initialContractAddresses.length == initialDepositFunctionSignatures.length,\n \"provided contract addresses and function signatures len mismatch\");\n\n require(initialDepositFunctionSignatures.length == initialExecuteFunctionSignatures.length,\n \"provided deposit and execute function signatures len mismatch\");\n\n _bridgeAddress = bridgeAddress;\n\n for (uint256 i = 0; i < initialResourceIDs.length; i++) {\n _setResource(\n initialResourceIDs[i],\n initialContractAddresses[i],\n initialDepositFunctionSignatures[i],\n initialExecuteFunctionSignatures[i]);\n }\n }\n\n /**\n @param depositNonce This ID will have been generated by the Bridge contract.\n @param destId ID of chain deposit will be bridged to.\n @return DepositRecord which consists of:\n - _destinationChainID ChainID deposited tokens are intended to end up on.\n - _resourceID ResourceID used when {deposit} was executed.\n - _depositer Address that initially called {deposit} in the Bridge contract.\n - _metaData Data to be passed to method executed in corresponding {resourceID} contract.\n */\n function getDepositRecord(uint64 depositNonce, uint8 destId) external view returns (DepositRecord memory) {\n return _depositRecords[destId][depositNonce];\n }\n\n /**\n @notice First verifies {_resourceIDToContractAddress}[{resourceID}] and\n {_contractAddressToResourceID}[{contractAddress}] are not already set,\n then sets {_resourceIDToContractAddress} with {contractAddress},\n {_contractAddressToResourceID} with {resourceID},\n {_contractAddressToDepositFunctionSignature} with {depositFunctionSig},\n {_contractAddressToExecuteFunctionSignature} with {executeFunctionSig},\n and {_contractWhitelist} to true for {contractAddress}.\n @param resourceID ResourceID to be used when making deposits.\n @param contractAddress Address of contract to be called when a deposit is made and a deposited is executed.\n @param depositFunctionSig Function signature of method to be called in {contractAddress} when a deposit is made.\n @param executeFunctionSig Function signature of method to be called in {contractAddress} when a deposit is executed.\n */\n function setResource(\n bytes32 resourceID,\n address contractAddress,\n bytes4 depositFunctionSig,\n bytes4 executeFunctionSig\n ) external onlyBridge override {\n\n _setResource(resourceID, contractAddress, depositFunctionSig, executeFunctionSig);\n }\n\n /**\n @notice A deposit is initiatied by making a deposit in the Bridge contract.\n @param destinationChainID Chain ID deposit is expected to be bridged to.\n @param depositNonce This value is generated as an ID by the Bridge contract.\n @param depositer Address of account making the deposit in the Bridge contract.\n @param data Consists of: {resourceID}, {lenMetaData}, and {metaData} all padded to 32 bytes.\n @notice Data passed into the function should be constructed as follows:\n len(data) uint256 bytes 0 - 32\n data bytes bytes 64 - END\n @notice {contractAddress} is required to be whitelisted\n @notice If {_contractAddressToDepositFunctionSignature}[{contractAddress}] is set,\n {metaData} is expected to consist of needed function arguments.\n */\n function deposit(bytes32 resourceID, uint8 destinationChainID, uint64 depositNonce, address depositer, bytes calldata data) external onlyBridge {\n uint256 lenMetadata;\n bytes memory metadata;\n\n lenMetadata = abi.decode(data, (uint256));\n metadata = bytes(data[32:32 + lenMetadata]);\n\n address contractAddress = _resourceIDToContractAddress[resourceID];\n require(_contractWhitelist[contractAddress], \"provided contractAddress is not whitelisted\");\n\n bytes4 sig = _contractAddressToDepositFunctionSignature[contractAddress];\n if (sig != bytes4(0)) {\n bytes memory callData = abi.encodeWithSelector(sig, metadata);\n (bool success,) = contractAddress.call(callData);\n require(success, \"delegatecall to contractAddress failed\");\n }\n\n _depositRecords[destinationChainID][depositNonce] = DepositRecord(\n destinationChainID,\n depositer,\n resourceID,\n metadata\n );\n }\n\n /**\n @notice Proposal execution should be initiated when a proposal is finalized in the Bridge contract.\n @param data Consists of {resourceID}, {lenMetaData}, and {metaData}.\n @notice Data passed into the function should be constructed as follows:\n len(data) uint256 bytes 0 - 32\n data bytes bytes 32 - END\n @notice {contractAddress} is required to be whitelisted\n @notice If {_contractAddressToExecuteFunctionSignature}[{contractAddress}] is set,\n {metaData} is expected to consist of needed function arguments.\n */\n function executeProposal(bytes32 resourceID, bytes calldata data) external onlyBridge {\n uint256 lenMetadata;\n bytes memory metaData;\n\n lenMetadata = abi.decode(data, (uint256));\n metaData = bytes(data[32:32 + lenMetadata]);\n\n address contractAddress = _resourceIDToContractAddress[resourceID];\n require(_contractWhitelist[contractAddress], \"provided contractAddress is not whitelisted\");\n\n bytes4 sig = _contractAddressToExecuteFunctionSignature[contractAddress];\n if (sig != bytes4(0)) {\n bytes memory callData = abi.encodeWithSelector(sig, metaData);\n (bool success,) = contractAddress.call(callData);\n require(success, \"delegatecall to contractAddress failed\");\n }\n }\n\n function _setResource(\n bytes32 resourceID,\n address contractAddress,\n bytes4 depositFunctionSig,\n bytes4 executeFunctionSig\n ) internal {\n _resourceIDToContractAddress[resourceID] = contractAddress;\n _contractAddressToResourceID[contractAddress] = resourceID;\n _contractAddressToDepositFunctionSignature[contractAddress] = depositFunctionSig;\n _contractAddressToExecuteFunctionSignature[contractAddress] = executeFunctionSig;\n\n _contractWhitelist[contractAddress] = true;\n }\n}\n", - "sourcePath": "/root/dev-spaces/me/chainbridge-solidity/contracts/handlers/GenericHandler.sol", - "ast": { - "absolutePath": "project:/contracts/handlers/GenericHandler.sol", - "exportedSymbols": { - "GenericHandler": [8022] - }, - "id": 8023, - "license": null, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 7609, - "literals": ["solidity", "0.7", ".0"], - "nodeType": "PragmaDirective", - "src": "0:22:36" + ] }, - { - "id": 7610, - "literals": ["experimental", "ABIEncoderV2"], - "nodeType": "PragmaDirective", - "src": "23:33:36" + "name": "array_allocation_size_t_array$_t_bytes32_$dyn_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "1750:6:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "size", + "nodeType": "YulTypedName", + "src": "1761:4:66", + "type": "" + } + ], + "src": "1684:311:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2090:28:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2107:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2110:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2100:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "2100:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "2100:12:66" + } + ] }, - { - "absolutePath": "project:/contracts/interfaces/IGenericHandler.sol", - "file": "../interfaces/IGenericHandler.sol", - "id": 7611, - "nodeType": "ImportDirective", - "scope": 8023, - "sourceUnit": 8300, - "src": "58:43:36", - "symbolAliases": [], - "unitAlias": "" + "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", + "nodeType": "YulFunctionDefinition", + "src": "2001:117:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2169:32:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2179:16:66", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2190:5:66" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "2179:7:66" + } + ] + } + ] }, - { - "abstract": false, - "baseContracts": [ - { - "arguments": null, - "baseName": { - "contractScope": null, - "id": 7613, - "name": "IGenericHandler", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 8299, - "src": "304:15:36", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IGenericHandler_$8299", - "typeString": "contract IGenericHandler" + "name": "cleanup_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2151:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "2161:7:66", + "type": "" + } + ], + "src": "2124:77:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2250:79:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2307:16:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2316:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2319:1:66", + "type": "", + "value": "0" } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2309:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "2309:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "2309:12:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2273:5:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2298:5:66" + } + ], + "functionName": { + "name": "cleanup_t_bytes32", + "nodeType": "YulIdentifier", + "src": "2280:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "2280:24:66" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "2270:2:66" }, - "id": 7614, - "nodeType": "InheritanceSpecifier", - "src": "304:15:36" - } - ], - "contractDependencies": [8299], - "contractKind": "contract", - "documentation": { - "id": 7612, - "nodeType": "StructuredDocumentation", - "src": "103:173:36", - "text": "@title Handles generic deposits and deposit executions.\n@author ChainSafe Systems.\n@notice This contract is intended to be used with the Bridge contract." - }, - "fullyImplemented": true, - "id": 8022, - "linearizedBaseContracts": [8022, 8299], - "name": "GenericHandler", - "nodeType": "ContractDefinition", - "nodes": [ + "nodeType": "YulFunctionCall", + "src": "2270:35:66" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "2263:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "2263:43:66" + }, + "nodeType": "YulIf", + "src": "2260:63:66" + } + ] + }, + "name": "validator_revert_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2243:5:66", + "type": "" + } + ], + "src": "2207:122:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2398:80:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2408:22:66", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2423:6:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "2417:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "2417:13:66" + }, + "variableNames": [ { - "constant": false, - "functionSelector": "318c136e", - "id": 7616, - "mutability": "mutable", - "name": "_bridgeAddress", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 8022, - "src": "326:29:36", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "name": "value", + "nodeType": "YulIdentifier", + "src": "2408:5:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2466:5:66" + } + ], + "functionName": { + "name": "validator_revert_t_bytes32", + "nodeType": "YulIdentifier", + "src": "2439:26:66" + }, + "nodeType": "YulFunctionCall", + "src": "2439:33:66" + }, + "nodeType": "YulExpressionStatement", + "src": "2439:33:66" + } + ] + }, + "name": "abi_decode_t_bytes32_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "2376:6:66", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "2384:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2392:5:66", + "type": "" + } + ], + "src": "2335:143:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2614:619:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2624:90:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2706:6:66" + } + ], + "functionName": { + "name": "array_allocation_size_t_array$_t_bytes32_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "2649:56:66" }, - "typeName": { - "id": 7615, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "326:7:36", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } + "nodeType": "YulFunctionCall", + "src": "2649:64:66" + } + ], + "functionName": { + "name": "allocate_memory", + "nodeType": "YulIdentifier", + "src": "2633:15:66" + }, + "nodeType": "YulFunctionCall", + "src": "2633:81:66" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "2624:5:66" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2723:16:66", + "value": { + "name": "array", + "nodeType": "YulIdentifier", + "src": "2734:5:66" + }, + "variables": [ + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "2727:3:66", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "2756:5:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2763:6:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2749:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "2749:21:66" + }, + "nodeType": "YulExpressionStatement", + "src": "2749:21:66" + }, + { + "nodeType": "YulAssignment", + "src": "2779:23:66", + "value": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "2790:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2797:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2786:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "2786:16:66" + }, + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "2779:3:66" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2812:44:66", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2830:6:66" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2842:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2850:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "2838:3:66" }, - "value": null, - "visibility": "public" + "nodeType": "YulFunctionCall", + "src": "2838:17:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2826:3:66" }, + "nodeType": "YulFunctionCall", + "src": "2826:30:66" + }, + "variables": [ { - "canonicalName": "GenericHandler.DepositRecord", - "id": 7625, - "members": [ + "name": "srcEnd", + "nodeType": "YulTypedName", + "src": "2816:6:66", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2884:103:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", + "nodeType": "YulIdentifier", + "src": "2898:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "2898:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "2898:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "2871:6:66" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "2879:3:66" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "2868:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "2868:15:66" + }, + "nodeType": "YulIf", + "src": "2865:122:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3072:155:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "3087:21:66", + "value": { + "name": "src", + "nodeType": "YulIdentifier", + "src": "3105:3:66" + }, + "variables": [ + { + "name": "elementPos", + "nodeType": "YulTypedName", + "src": "3091:10:66", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ { - "constant": false, - "id": 7618, - "mutability": "mutable", - "name": "_destinationChainID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7625, - "src": "393:27:36", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 7617, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "393:5:36", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3129:3:66" }, { - "constant": false, - "id": 7620, - "mutability": "mutable", - "name": "_depositer", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7625, - "src": "430:18:36", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 7619, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "430:7:36", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } + "arguments": [ + { + "name": "elementPos", + "nodeType": "YulIdentifier", + "src": "3166:10:66" }, - "value": null, - "visibility": "internal" - }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "3178:3:66" + } + ], + "functionName": { + "name": "abi_decode_t_bytes32_fromMemory", + "nodeType": "YulIdentifier", + "src": "3134:31:66" + }, + "nodeType": "YulFunctionCall", + "src": "3134:48:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3122:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "3122:61:66" + }, + "nodeType": "YulExpressionStatement", + "src": "3122:61:66" + }, + { + "nodeType": "YulAssignment", + "src": "3196:21:66", + "value": { + "arguments": [ { - "constant": false, - "id": 7622, - "mutability": "mutable", - "name": "_resourceID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7625, - "src": "458:19:36", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 7621, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "458:7:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3207:3:66" }, { - "constant": false, - "id": 7624, - "mutability": "mutable", - "name": "_metaData", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7625, - "src": "487:17:36", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 7623, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "487:5:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" + "kind": "number", + "nodeType": "YulLiteral", + "src": "3212:4:66", + "type": "", + "value": "0x20" } - ], - "name": "DepositRecord", - "nodeType": "StructDefinition", - "scope": 8022, - "src": "362:149:36", - "visibility": "public" - }, - { - "constant": false, - "functionSelector": "4402027f", - "id": 7631, - "mutability": "mutable", - "name": "_depositRecords", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 8022, - "src": "555:74:36", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint8_$_t_mapping$_t_uint64_$_t_struct$_DepositRecord_$7625_storage_$_$", - "typeString": "mapping(uint8 => mapping(uint64 => struct GenericHandler.DepositRecord))" + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3203:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "3203:14:66" }, - "typeName": { - "id": 7630, - "keyType": { - "id": 7626, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "564:5:36", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3196:3:66" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "3025:3:66" + }, + { + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "3030:6:66" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "3022:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "3022:15:66" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "3038:25:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3040:21:66", + "value": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "3051:3:66" }, - "nodeType": "Mapping", - "src": "555:51:36", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint8_$_t_mapping$_t_uint64_$_t_struct$_DepositRecord_$7625_storage_$_$", - "typeString": "mapping(uint8 => mapping(uint64 => struct GenericHandler.DepositRecord))" - }, - "valueType": { - "id": 7629, - "keyType": { - "id": 7627, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "581:6:36", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "nodeType": "Mapping", - "src": "573:32:36", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_DepositRecord_$7625_storage_$", - "typeString": "mapping(uint64 => struct GenericHandler.DepositRecord)" - }, - "valueType": { - "contractScope": null, - "id": 7628, - "name": "DepositRecord", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 7625, - "src": "591:13:36", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DepositRecord_$7625_storage_ptr", - "typeString": "struct GenericHandler.DepositRecord" - } - } + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3056:4:66", + "type": "", + "value": "0x20" } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3047:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "3047:14:66" }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "functionSelector": "c54c2a11", - "id": 7635, - "mutability": "mutable", - "name": "_resourceIDToContractAddress", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 8022, - "src": "674:64:36", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", - "typeString": "mapping(bytes32 => address)" + "variableNames": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "3040:3:66" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "3000:21:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "3002:17:66", + "value": { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3013:6:66" }, - "typeName": { - "id": 7634, - "keyType": { - "id": 7632, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "683:7:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Mapping", - "src": "674:28:36", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", - "typeString": "mapping(bytes32 => address)" + "variables": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "3006:3:66", + "type": "" + } + ] + } + ] + }, + "src": "2996:231:66" + } + ] + }, + "name": "abi_decode_available_length_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "2584:6:66", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "2592:6:66", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "2600:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "2608:5:66", + "type": "" + } + ], + "src": "2501:732:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3344:297:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3393:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulIdentifier", + "src": "3395:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "3395:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "3395:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3372:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3380:4:66", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3368:3:66" }, - "valueType": { - "id": 7633, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "694:7:36", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } + "nodeType": "YulFunctionCall", + "src": "3368:17:66" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "3387:3:66" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "3364:3:66" }, - "value": null, - "visibility": "public" + "nodeType": "YulFunctionCall", + "src": "3364:27:66" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3357:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "3357:35:66" + }, + "nodeType": "YulIf", + "src": "3354:122:66" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3485:27:66", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3505:6:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "3499:5:66" }, + "nodeType": "YulFunctionCall", + "src": "3499:13:66" + }, + "variables": [ { - "constant": false, - "functionSelector": "ec97d3b4", - "id": 7639, - "mutability": "mutable", - "name": "_contractAddressToResourceID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 8022, - "src": "783:64:36", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bytes32_$", - "typeString": "mapping(address => bytes32)" - }, - "typeName": { - "id": 7638, - "keyType": { - "id": 7636, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "792:7:36", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "783:28:36", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bytes32_$", - "typeString": "mapping(address => bytes32)" - }, - "valueType": { - "id": 7637, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "803:7:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } + "name": "length", + "nodeType": "YulTypedName", + "src": "3489:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3521:114:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3608:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3616:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3604:3:66" }, - "value": null, - "visibility": "public" + "nodeType": "YulFunctionCall", + "src": "3604:17:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "3623:6:66" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "3631:3:66" + } + ], + "functionName": { + "name": "abi_decode_available_length_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory", + "nodeType": "YulIdentifier", + "src": "3530:73:66" }, + "nodeType": "YulFunctionCall", + "src": "3530:105:66" + }, + "variableNames": [ { - "constant": false, - "functionSelector": "cb624463", - "id": 7643, - "mutability": "mutable", - "name": "_contractAddressToDepositFunctionSignature", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 8022, - "src": "908:77:36", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bytes4_$", - "typeString": "mapping(address => bytes4)" - }, - "typeName": { - "id": 7642, - "keyType": { - "id": 7640, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "917:7:36", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "908:27:36", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bytes4_$", - "typeString": "mapping(address => bytes4)" - }, - "valueType": { - "id": 7641, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "928:6:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - } + "name": "array", + "nodeType": "YulIdentifier", + "src": "3521:5:66" + } + ] + } + ] + }, + "name": "abi_decode_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "3322:6:66", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "3330:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "3338:5:66", + "type": "" + } + ], + "src": "3256:385:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3729:229:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3834:22:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "3836:16:66" + }, + "nodeType": "YulFunctionCall", + "src": "3836:18:66" }, - "value": null, - "visibility": "public" + "nodeType": "YulExpressionStatement", + "src": "3836:18:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "3806:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3814:18:66", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "3803:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "3803:30:66" + }, + "nodeType": "YulIf", + "src": "3800:56:66" + }, + { + "nodeType": "YulAssignment", + "src": "3866:25:66", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "3878:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3886:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "3874:3:66" }, + "nodeType": "YulFunctionCall", + "src": "3874:17:66" + }, + "variableNames": [ { - "constant": false, - "functionSelector": "a5c3a985", - "id": 7647, - "mutability": "mutable", - "name": "_contractAddressToExecuteFunctionSignature", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 8022, - "src": "1055:77:36", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bytes4_$", - "typeString": "mapping(address => bytes4)" - }, - "typeName": { - "id": 7646, - "keyType": { - "id": 7644, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1064:7:36", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "1055:27:36", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bytes4_$", - "typeString": "mapping(address => bytes4)" - }, - "valueType": { - "id": 7645, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "1075:6:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - } - }, - "value": null, - "visibility": "public" + "name": "size", + "nodeType": "YulIdentifier", + "src": "3866:4:66" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3928:23:66", + "value": { + "arguments": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "3940:4:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3946:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3936:3:66" }, + "nodeType": "YulFunctionCall", + "src": "3936:15:66" + }, + "variableNames": [ { - "constant": false, - "functionSelector": "7f79bea8", - "id": 7651, - "mutability": "mutable", - "name": "_contractWhitelist", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 8022, - "src": "1187:51:36", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "typeName": { - "id": 7650, - "keyType": { - "id": 7648, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1196:7:36", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "1187:25:36", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "valueType": { - "id": 7649, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1207:4:36", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } + "name": "size", + "nodeType": "YulIdentifier", + "src": "3928:4:66" + } + ] + } + ] + }, + "name": "array_allocation_size_t_array$_t_address_$dyn_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "3713:6:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "size", + "nodeType": "YulTypedName", + "src": "3724:4:66", + "type": "" + } + ], + "src": "3647:311:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4094:619:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4104:90:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "4186:6:66" + } + ], + "functionName": { + "name": "array_allocation_size_t_array$_t_address_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "4129:56:66" }, - "value": null, - "visibility": "public" + "nodeType": "YulFunctionCall", + "src": "4129:64:66" + } + ], + "functionName": { + "name": "allocate_memory", + "nodeType": "YulIdentifier", + "src": "4113:15:66" }, + "nodeType": "YulFunctionCall", + "src": "4113:81:66" + }, + "variableNames": [ { - "body": { - "id": 7657, - "nodeType": "Block", - "src": "1267:41:36", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 7653, - "name": "_onlyBridge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7670, - "src": "1277:11:36", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", - "typeString": "function ()" - } - }, - "id": 7654, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1277:13:36", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 7655, - "nodeType": "ExpressionStatement", - "src": "1277:13:36" - }, - { - "id": 7656, - "nodeType": "PlaceholderStatement", - "src": "1300:1:36" - } - ] - }, - "documentation": null, - "id": 7658, - "name": "onlyBridge", - "nodeType": "ModifierDefinition", - "overrides": null, - "parameters": { - "id": 7652, - "nodeType": "ParameterList", - "parameters": [], - "src": "1264:2:36" - }, - "src": "1245:63:36", - "virtual": false, - "visibility": "internal" + "name": "array", + "nodeType": "YulIdentifier", + "src": "4104:5:66" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "4203:16:66", + "value": { + "name": "array", + "nodeType": "YulIdentifier", + "src": "4214:5:66" + }, + "variables": [ + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "4207:3:66", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "4236:5:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "4243:6:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4229:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "4229:21:66" + }, + "nodeType": "YulExpressionStatement", + "src": "4229:21:66" + }, + { + "nodeType": "YulAssignment", + "src": "4259:23:66", + "value": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "4270:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4277:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4266:3:66" }, + "nodeType": "YulFunctionCall", + "src": "4266:16:66" + }, + "variableNames": [ { - "body": { - "id": 7669, - "nodeType": "Block", - "src": "1345:89:36", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 7665, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 7662, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "1364:3:36", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 7663, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1364:10:36", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 7664, - "name": "_bridgeAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7616, - "src": "1378:14:36", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "1364:28:36", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "73656e646572206d7573742062652062726964676520636f6e7472616374", - "id": 7666, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1394:32:36", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_0febc0fc8991eb26dfaaceeb4d73d25b76da338550ed76c60410fec84388058e", - "typeString": "literal_string \"sender must be bridge contract\"" - }, - "value": "sender must be bridge contract" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_0febc0fc8991eb26dfaaceeb4d73d25b76da338550ed76c60410fec84388058e", - "typeString": "literal_string \"sender must be bridge contract\"" - } - ], - "id": 7661, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "1356:7:36", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 7667, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1356:71:36", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 7668, - "nodeType": "ExpressionStatement", - "src": "1356:71:36" - } - ] + "name": "dst", + "nodeType": "YulIdentifier", + "src": "4259:3:66" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "4292:44:66", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4310:6:66" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "4322:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4330:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "4318:3:66" }, - "documentation": null, - "id": 7670, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_onlyBridge", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 7659, - "nodeType": "ParameterList", - "parameters": [], - "src": "1334:2:36" - }, - "returnParameters": { - "id": 7660, - "nodeType": "ParameterList", - "parameters": [], - "src": "1345:0:36" - }, - "scope": 8022, - "src": "1314:120:36", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "private" + "nodeType": "YulFunctionCall", + "src": "4318:17:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4306:3:66" }, + "nodeType": "YulFunctionCall", + "src": "4306:30:66" + }, + "variables": [ { - "body": { - "id": 7747, - "nodeType": "Block", - "src": "3010:850:36", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7693, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 7689, - "name": "initialResourceIDs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7676, - "src": "3028:18:36", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - }, - "id": 7690, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3028:25:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 7691, - "name": "initialContractAddresses", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7679, - "src": "3057:24:36", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 7692, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3057:31:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3028:60:36", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "696e697469616c5265736f7572636549447320616e6420696e697469616c436f6e7472616374416464726573736573206c656e206d69736d61746368", - "id": 7694, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3102:62:36", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_4ad26bc3c99f2850e5fe1de98475000419054e7d49a87288c0e5940e995dd510", - "typeString": "literal_string \"initialResourceIDs and initialContractAddresses len mismatch\"" - }, - "value": "initialResourceIDs and initialContractAddresses len mismatch" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_4ad26bc3c99f2850e5fe1de98475000419054e7d49a87288c0e5940e995dd510", - "typeString": "literal_string \"initialResourceIDs and initialContractAddresses len mismatch\"" - } - ], - "id": 7688, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "3020:7:36", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 7695, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3020:145:36", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 7696, - "nodeType": "ExpressionStatement", - "src": "3020:145:36" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7702, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 7698, - "name": "initialContractAddresses", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7679, - "src": "3184:24:36", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 7699, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3184:31:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 7700, - "name": "initialDepositFunctionSignatures", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7682, - "src": "3219:32:36", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr", - "typeString": "bytes4[] memory" - } - }, - "id": 7701, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3219:39:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3184:74:36", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "70726f766964656420636f6e74726163742061646472657373657320616e642066756e6374696f6e207369676e617475726573206c656e206d69736d61746368", - "id": 7703, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3272:66:36", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_b746ce628071fcac0bf096a6e7891ff5a23e8d585affec3cf59959f2a03a9fe0", - "typeString": "literal_string \"provided contract addresses and function signatures len mismatch\"" - }, - "value": "provided contract addresses and function signatures len mismatch" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_b746ce628071fcac0bf096a6e7891ff5a23e8d585affec3cf59959f2a03a9fe0", - "typeString": "literal_string \"provided contract addresses and function signatures len mismatch\"" - } - ], - "id": 7697, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "3176:7:36", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 7704, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3176:163:36", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 7705, - "nodeType": "ExpressionStatement", - "src": "3176:163:36" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7711, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 7707, - "name": "initialDepositFunctionSignatures", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7682, - "src": "3358:32:36", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr", - "typeString": "bytes4[] memory" - } - }, - "id": 7708, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3358:39:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 7709, - "name": "initialExecuteFunctionSignatures", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7685, - "src": "3401:32:36", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr", - "typeString": "bytes4[] memory" - } - }, - "id": 7710, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3401:39:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3358:82:36", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "70726f7669646564206465706f73697420616e6420657865637574652066756e6374696f6e207369676e617475726573206c656e206d69736d61746368", - "id": 7712, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3454:63:36", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_9131b91c39cfdeebf122a7e28defa3834f957032b39040decdc270fb62be6d96", - "typeString": "literal_string \"provided deposit and execute function signatures len mismatch\"" - }, - "value": "provided deposit and execute function signatures len mismatch" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_9131b91c39cfdeebf122a7e28defa3834f957032b39040decdc270fb62be6d96", - "typeString": "literal_string \"provided deposit and execute function signatures len mismatch\"" - } - ], - "id": 7706, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "3350:7:36", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 7713, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3350:168:36", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 7714, - "nodeType": "ExpressionStatement", - "src": "3350:168:36" - }, - { - "expression": { - "argumentTypes": null, - "id": 7717, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 7715, - "name": "_bridgeAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7616, - "src": "3529:14:36", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 7716, - "name": "bridgeAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7673, - "src": "3546:13:36", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "3529:30:36", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 7718, - "nodeType": "ExpressionStatement", - "src": "3529:30:36" - }, - { - "body": { - "id": 7745, - "nodeType": "Block", - "src": "3626:228:36", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 7731, - "name": "initialResourceIDs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7676, - "src": "3670:18:36", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - }, - "id": 7733, - "indexExpression": { - "argumentTypes": null, - "id": 7732, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7720, - "src": "3689:1:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3670:21:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 7734, - "name": "initialContractAddresses", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7679, - "src": "3709:24:36", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 7736, - "indexExpression": { - "argumentTypes": null, - "id": 7735, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7720, - "src": "3734:1:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3709:27:36", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 7737, - "name": "initialDepositFunctionSignatures", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7682, - "src": "3754:32:36", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr", - "typeString": "bytes4[] memory" - } - }, - "id": 7739, - "indexExpression": { - "argumentTypes": null, - "id": 7738, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7720, - "src": "3787:1:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3754:35:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 7740, - "name": "initialExecuteFunctionSignatures", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7685, - "src": "3807:32:36", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr", - "typeString": "bytes4[] memory" - } - }, - "id": 7742, - "indexExpression": { - "argumentTypes": null, - "id": 7741, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7720, - "src": "3840:1:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3807:35:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - ], - "id": 7730, - "name": "_setResource", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8021, - "src": "3640:12:36", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_bytes4_$_t_bytes4_$returns$__$", - "typeString": "function (bytes32,address,bytes4,bytes4)" - } - }, - "id": 7743, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3640:203:36", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 7744, - "nodeType": "ExpressionStatement", - "src": "3640:203:36" - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7726, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 7723, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7720, - "src": "3590:1:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 7724, - "name": "initialResourceIDs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7676, - "src": "3594:18:36", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - }, - "id": 7725, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3594:25:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3590:29:36", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 7746, - "initializationExpression": { - "assignments": [7720], - "declarations": [ - { - "constant": false, - "id": 7720, - "mutability": "mutable", - "name": "i", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7746, - "src": "3575:9:36", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 7719, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3575:7:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 7722, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 7721, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3587:1:36", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "3575:13:36" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 7728, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "3621:3:36", - "subExpression": { - "argumentTypes": null, - "id": 7727, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7720, - "src": "3621:1:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7729, - "nodeType": "ExpressionStatement", - "src": "3621:3:36" - }, - "nodeType": "ForStatement", - "src": "3570:284:36" - } - ] + "name": "srcEnd", + "nodeType": "YulTypedName", + "src": "4296:6:66", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4364:103:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", + "nodeType": "YulIdentifier", + "src": "4378:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "4378:79:66" }, - "documentation": { - "id": 7671, - "nodeType": "StructuredDocumentation", - "src": "1440:1286:36", - "text": "@param bridgeAddress Contract address of previously deployed Bridge.\n@param initialResourceIDs Resource IDs used to identify a specific contract address.\nThese are the Resource IDs this contract will initially support.\n@param initialContractAddresses These are the addresses the {initialResourceIDs} will point to, and are the contracts that will be\ncalled to perform deposit and execution calls.\n@param initialDepositFunctionSignatures These are the function signatures {initialContractAddresses} will point to,\nand are the function that will be called when executing {deposit}\n@param initialExecuteFunctionSignatures These are the function signatures {initialContractAddresses} will point to,\nand are the function that will be called when executing {executeProposal}\n@dev {initialResourceIDs}, {initialContractAddresses}, {initialDepositFunctionSignatures},\nand {initialExecuteFunctionSignatures} must all have the same length. Also,\nvalues must be ordered in the way that that index x of any mentioned array\nmust be intended for value x of any other array, e.g. {initialContractAddresses}[0]\nis the intended address for {initialDepositFunctionSignatures}[0]." - }, - "id": 7748, - "implemented": true, - "kind": "constructor", - "modifiers": [], - "name": "", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 7686, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 7673, - "mutability": "mutable", - "name": "bridgeAddress", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7748, - "src": "2752:30:36", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 7672, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2752:7:36", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 7676, - "mutability": "mutable", - "name": "initialResourceIDs", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7748, - "src": "2792:35:36", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[]" - }, - "typeName": { - "baseType": { - "id": 7674, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2792:7:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 7675, - "length": null, - "nodeType": "ArrayTypeName", - "src": "2792:9:36", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[]" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 7679, - "mutability": "mutable", - "name": "initialContractAddresses", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7748, - "src": "2837:41:36", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[]" - }, - "typeName": { - "baseType": { - "id": 7677, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2837:7:36", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 7678, - "length": null, - "nodeType": "ArrayTypeName", - "src": "2837:9:36", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - }, - "value": null, - "visibility": "internal" - }, + "nodeType": "YulExpressionStatement", + "src": "4378:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "4351:6:66" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "4359:3:66" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "4348:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "4348:15:66" + }, + "nodeType": "YulIf", + "src": "4345:122:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4552:155:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "4567:21:66", + "value": { + "name": "src", + "nodeType": "YulIdentifier", + "src": "4585:3:66" + }, + "variables": [ + { + "name": "elementPos", + "nodeType": "YulTypedName", + "src": "4571:10:66", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "4609:3:66" + }, + { + "arguments": [ { - "constant": false, - "id": 7682, - "mutability": "mutable", - "name": "initialDepositFunctionSignatures", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7748, - "src": "2888:49:36", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr", - "typeString": "bytes4[]" - }, - "typeName": { - "baseType": { - "id": 7680, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "2888:6:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "id": 7681, - "length": null, - "nodeType": "ArrayTypeName", - "src": "2888:8:36", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr", - "typeString": "bytes4[]" - } - }, - "value": null, - "visibility": "internal" + "name": "elementPos", + "nodeType": "YulIdentifier", + "src": "4646:10:66" }, { - "constant": false, - "id": 7685, - "mutability": "mutable", - "name": "initialExecuteFunctionSignatures", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7748, - "src": "2947:49:36", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr", - "typeString": "bytes4[]" - }, - "typeName": { - "baseType": { - "id": 7683, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "2947:6:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "id": 7684, - "length": null, - "nodeType": "ArrayTypeName", - "src": "2947:8:36", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr", - "typeString": "bytes4[]" - } - }, - "value": null, - "visibility": "internal" + "name": "end", + "nodeType": "YulIdentifier", + "src": "4658:3:66" } - ], - "src": "2742:260:36" + ], + "functionName": { + "name": "abi_decode_t_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "4614:31:66" + }, + "nodeType": "YulFunctionCall", + "src": "4614:48:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4602:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "4602:61:66" }, - "returnParameters": { - "id": 7687, - "nodeType": "ParameterList", - "parameters": [], - "src": "3010:0:36" + "nodeType": "YulExpressionStatement", + "src": "4602:61:66" + }, + { + "nodeType": "YulAssignment", + "src": "4676:21:66", + "value": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "4687:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4692:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4683:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "4683:14:66" }, - "scope": 8022, - "src": "2731:1129:36", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "4676:3:66" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "4505:3:66" + }, + { + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "4510:6:66" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "4502:2:66" }, - { - "body": { - "id": 7764, - "nodeType": "Block", - "src": "4514:61:36", - "statements": [ - { - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 7758, - "name": "_depositRecords", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7631, - "src": "4531:15:36", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint8_$_t_mapping$_t_uint64_$_t_struct$_DepositRecord_$7625_storage_$_$", - "typeString": "mapping(uint8 => mapping(uint64 => struct GenericHandler.DepositRecord storage ref))" - } - }, - "id": 7760, - "indexExpression": { - "argumentTypes": null, - "id": 7759, - "name": "destId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7753, - "src": "4547:6:36", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4531:23:36", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_DepositRecord_$7625_storage_$", - "typeString": "mapping(uint64 => struct GenericHandler.DepositRecord storage ref)" - } - }, - "id": 7762, - "indexExpression": { - "argumentTypes": null, - "id": 7761, - "name": "depositNonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7751, - "src": "4555:12:36", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4531:37:36", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DepositRecord_$7625_storage", - "typeString": "struct GenericHandler.DepositRecord storage ref" - } - }, - "functionReturnParameters": 7757, - "id": 7763, - "nodeType": "Return", - "src": "4524:44:36" - } - ] + "nodeType": "YulFunctionCall", + "src": "4502:15:66" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "4518:25:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4520:21:66", + "value": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "4531:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4536:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4527:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "4527:14:66" }, - "documentation": { - "id": 7749, - "nodeType": "StructuredDocumentation", - "src": "3866:537:36", - "text": "@param depositNonce This ID will have been generated by the Bridge contract.\n@param destId ID of chain deposit will be bridged to.\n@return DepositRecord which consists of:\n- _destinationChainID ChainID deposited tokens are intended to end up on.\n- _resourceID ResourceID used when {deposit} was executed.\n- _depositer Address that initially called {deposit} in the Bridge contract.\n- _metaData Data to be passed to method executed in corresponding {resourceID} contract." - }, - "functionSelector": "ba484c09", - "id": 7765, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getDepositRecord", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 7754, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 7751, - "mutability": "mutable", - "name": "depositNonce", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7765, - "src": "4434:19:36", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 7750, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "4434:6:36", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 7753, - "mutability": "mutable", - "name": "destId", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7765, - "src": "4455:12:36", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 7752, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "4455:5:36", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4433:35:36" + "variableNames": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "4520:3:66" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "4480:21:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "4482:17:66", + "value": { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4493:6:66" }, - "returnParameters": { - "id": 7757, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 7756, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7765, - "src": "4492:20:36", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DepositRecord_$7625_memory_ptr", - "typeString": "struct GenericHandler.DepositRecord" - }, - "typeName": { - "contractScope": null, - "id": 7755, - "name": "DepositRecord", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 7625, - "src": "4492:13:36", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DepositRecord_$7625_storage_ptr", - "typeString": "struct GenericHandler.DepositRecord" - } - }, - "value": null, - "visibility": "internal" - } + "variables": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "4486:3:66", + "type": "" + } + ] + } + ] + }, + "src": "4476:231:66" + } + ] + }, + "name": "abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "4064:6:66", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "4072:6:66", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "4080:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "4088:5:66", + "type": "" + } + ], + "src": "3981:732:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4824:297:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "4873:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulIdentifier", + "src": "4875:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "4875:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "4875:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4852:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4860:4:66", + "type": "", + "value": "0x1f" + } ], - "src": "4491:22:36" + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4848:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "4848:17:66" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "4867:3:66" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "4844:3:66" }, - "scope": 8022, - "src": "4408:167:36", - "stateMutability": "view", - "virtual": false, - "visibility": "external" + "nodeType": "YulFunctionCall", + "src": "4844:27:66" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "4837:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "4837:35:66" + }, + "nodeType": "YulIf", + "src": "4834:122:66" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "4965:27:66", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4985:6:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "4979:5:66" }, + "nodeType": "YulFunctionCall", + "src": "4979:13:66" + }, + "variables": [ { - "baseFunctions": [8298], - "body": { - "id": 7787, - "nodeType": "Block", - "src": "5730:99:36", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 7781, - "name": "resourceID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7768, - "src": "5754:10:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 7782, - "name": "contractAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7770, - "src": "5766:15:36", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 7783, - "name": "depositFunctionSig", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7772, - "src": "5783:18:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - { - "argumentTypes": null, - "id": 7784, - "name": "executeFunctionSig", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7774, - "src": "5803:18:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - ], - "id": 7780, - "name": "_setResource", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8021, - "src": "5741:12:36", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_bytes4_$_t_bytes4_$returns$__$", - "typeString": "function (bytes32,address,bytes4,bytes4)" - } - }, - "id": 7785, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5741:81:36", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 7786, - "nodeType": "ExpressionStatement", - "src": "5741:81:36" - } - ] - }, - "documentation": { - "id": 7766, - "nodeType": "StructuredDocumentation", - "src": "4581:957:36", - "text": "@notice First verifies {_resourceIDToContractAddress}[{resourceID}] and\n{_contractAddressToResourceID}[{contractAddress}] are not already set,\nthen sets {_resourceIDToContractAddress} with {contractAddress},\n{_contractAddressToResourceID} with {resourceID},\n{_contractAddressToDepositFunctionSignature} with {depositFunctionSig},\n{_contractAddressToExecuteFunctionSignature} with {executeFunctionSig},\nand {_contractWhitelist} to true for {contractAddress}.\n@param resourceID ResourceID to be used when making deposits.\n@param contractAddress Address of contract to be called when a deposit is made and a deposited is executed.\n@param depositFunctionSig Function signature of method to be called in {contractAddress} when a deposit is made.\n@param executeFunctionSig Function signature of method to be called in {contractAddress} when a deposit is executed." - }, - "functionSelector": "bba8185a", - "id": 7788, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": null, - "id": 7777, - "modifierName": { - "argumentTypes": null, - "id": 7776, - "name": "onlyBridge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7658, - "src": "5710:10:36", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "5710:10:36" - } + "name": "length", + "nodeType": "YulTypedName", + "src": "4969:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5001:114:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5088:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5096:4:66", + "type": "", + "value": "0x20" + } ], - "name": "setResource", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 7778, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "5721:8:36" - }, - "parameters": { - "id": 7775, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 7768, - "mutability": "mutable", - "name": "resourceID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7788, - "src": "5573:18:36", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 7767, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "5573:7:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 7770, - "mutability": "mutable", - "name": "contractAddress", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7788, - "src": "5601:23:36", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 7769, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5601:7:36", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 7772, - "mutability": "mutable", - "name": "depositFunctionSig", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7788, - "src": "5634:25:36", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "typeName": { - "id": 7771, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "5634:6:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 7774, - "mutability": "mutable", - "name": "executeFunctionSig", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7788, - "src": "5669:25:36", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "typeName": { - "id": 7773, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "5669:6:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "5563:137:36" - }, - "returnParameters": { - "id": 7779, - "nodeType": "ParameterList", - "parameters": [], - "src": "5730:0:36" + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5084:3:66" }, - "scope": 8022, - "src": "5543:286:36", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" + "nodeType": "YulFunctionCall", + "src": "5084:17:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "5103:6:66" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "5111:3:66" + } + ], + "functionName": { + "name": "abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr_fromMemory", + "nodeType": "YulIdentifier", + "src": "5010:73:66" }, + "nodeType": "YulFunctionCall", + "src": "5010:105:66" + }, + "variableNames": [ { - "body": { - "id": 7892, - "nodeType": "Block", - "src": "6889:876:36", - "statements": [ - { - "assignments": [7805], - "declarations": [ - { - "constant": false, - "id": 7805, - "mutability": "mutable", - "name": "lenMetadata", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7892, - "src": "6899:24:36", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 7804, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6899:7:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 7806, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "6899:24:36" - }, + "name": "array", + "nodeType": "YulIdentifier", + "src": "5001:5:66" + } + ] + } + ] + }, + "name": "abi_decode_t_array$_t_address_$dyn_memory_ptr_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "4802:6:66", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "4810:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "4818:5:66", + "type": "" + } + ], + "src": "4736:385:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5208:229:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "5313:22:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "5315:16:66" + }, + "nodeType": "YulFunctionCall", + "src": "5315:18:66" + }, + "nodeType": "YulExpressionStatement", + "src": "5315:18:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "5285:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5293:18:66", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "5282:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "5282:30:66" + }, + "nodeType": "YulIf", + "src": "5279:56:66" + }, + { + "nodeType": "YulAssignment", + "src": "5345:25:66", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "5357:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5365:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "5353:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "5353:17:66" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "5345:4:66" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5407:23:66", + "value": { + "arguments": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "5419:4:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5425:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5415:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "5415:15:66" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "5407:4:66" + } + ] + } + ] + }, + "name": "array_allocation_size_t_array$_t_bytes4_$dyn_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "5192:6:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "size", + "nodeType": "YulTypedName", + "src": "5203:4:66", + "type": "" + } + ], + "src": "5127:310:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5487:105:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5497:89:66", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5512:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5519:66:66", + "type": "", + "value": "0xffffffff00000000000000000000000000000000000000000000000000000000" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "5508:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "5508:78:66" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "5497:7:66" + } + ] + } + ] + }, + "name": "cleanup_t_bytes4", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "5469:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "5479:7:66", + "type": "" + } + ], + "src": "5443:149:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5640:78:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "5696:16:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5705:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5708:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "5698:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "5698:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "5698:12:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5663:5:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5687:5:66" + } + ], + "functionName": { + "name": "cleanup_t_bytes4", + "nodeType": "YulIdentifier", + "src": "5670:16:66" + }, + "nodeType": "YulFunctionCall", + "src": "5670:23:66" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "5660:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "5660:34:66" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "5653:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "5653:42:66" + }, + "nodeType": "YulIf", + "src": "5650:62:66" + } + ] + }, + "name": "validator_revert_t_bytes4", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "5633:5:66", + "type": "" + } + ], + "src": "5598:120:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5786:79:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5796:22:66", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "5811:6:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "5805:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "5805:13:66" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5796:5:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5853:5:66" + } + ], + "functionName": { + "name": "validator_revert_t_bytes4", + "nodeType": "YulIdentifier", + "src": "5827:25:66" + }, + "nodeType": "YulFunctionCall", + "src": "5827:32:66" + }, + "nodeType": "YulExpressionStatement", + "src": "5827:32:66" + } + ] + }, + "name": "abi_decode_t_bytes4_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "5764:6:66", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "5772:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "5780:5:66", + "type": "" + } + ], + "src": "5724:141:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5999:617:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6009:89:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "6090:6:66" + } + ], + "functionName": { + "name": "array_allocation_size_t_array$_t_bytes4_$dyn_memory_ptr", + "nodeType": "YulIdentifier", + "src": "6034:55:66" + }, + "nodeType": "YulFunctionCall", + "src": "6034:63:66" + } + ], + "functionName": { + "name": "allocate_memory", + "nodeType": "YulIdentifier", + "src": "6018:15:66" + }, + "nodeType": "YulFunctionCall", + "src": "6018:80:66" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "6009:5:66" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "6107:16:66", + "value": { + "name": "array", + "nodeType": "YulIdentifier", + "src": "6118:5:66" + }, + "variables": [ + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "6111:3:66", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "6140:5:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "6147:6:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6133:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "6133:21:66" + }, + "nodeType": "YulExpressionStatement", + "src": "6133:21:66" + }, + { + "nodeType": "YulAssignment", + "src": "6163:23:66", + "value": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "6174:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6181:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6170:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "6170:16:66" + }, + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "6163:3:66" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "6196:44:66", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6214:6:66" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "6226:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6234:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "6222:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "6222:17:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6210:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "6210:30:66" + }, + "variables": [ + { + "name": "srcEnd", + "nodeType": "YulTypedName", + "src": "6200:6:66", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6268:103:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", + "nodeType": "YulIdentifier", + "src": "6282:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "6282:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "6282:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "6255:6:66" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "6263:3:66" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "6252:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "6252:15:66" + }, + "nodeType": "YulIf", + "src": "6249:122:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6456:154:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "6471:21:66", + "value": { + "name": "src", + "nodeType": "YulIdentifier", + "src": "6489:3:66" + }, + "variables": [ + { + "name": "elementPos", + "nodeType": "YulTypedName", + "src": "6475:10:66", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "6513:3:66" + }, + { + "arguments": [ { - "assignments": [7808], - "declarations": [ - { - "constant": false, - "id": 7808, - "mutability": "mutable", - "name": "metadata", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7892, - "src": "6933:21:36", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 7807, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "6933:5:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 7809, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "6933:21:36" + "name": "elementPos", + "nodeType": "YulIdentifier", + "src": "6549:10:66" }, { - "expression": { - "argumentTypes": null, - "id": 7818, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 7810, - "name": "lenMetadata", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7805, - "src": "6965:11:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 7813, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7799, - "src": "6990:4:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "id": 7815, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "6997:7:36", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 7814, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6997:7:36", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - } - ], - "id": 7816, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "6996:9:36", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - }, - { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - } - ], - "expression": { - "argumentTypes": null, - "id": 7811, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "6979:3:36", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 7812, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "decode", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "6979:10:36", - "typeDescriptions": { - "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 7817, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6979:27:36", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6965:41:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7819, - "nodeType": "ExpressionStatement", - "src": "6965:41:36" - }, + "name": "end", + "nodeType": "YulIdentifier", + "src": "6561:3:66" + } + ], + "functionName": { + "name": "abi_decode_t_bytes4_fromMemory", + "nodeType": "YulIdentifier", + "src": "6518:30:66" + }, + "nodeType": "YulFunctionCall", + "src": "6518:47:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6506:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "6506:60:66" + }, + "nodeType": "YulExpressionStatement", + "src": "6506:60:66" + }, + { + "nodeType": "YulAssignment", + "src": "6579:21:66", + "value": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "6590:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6595:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6586:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "6586:14:66" + }, + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "6579:3:66" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "6409:3:66" + }, + { + "name": "srcEnd", + "nodeType": "YulIdentifier", + "src": "6414:6:66" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "6406:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "6406:15:66" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "6422:25:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6424:21:66", + "value": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "6435:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6440:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6431:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "6431:14:66" + }, + "variableNames": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "6424:3:66" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "6384:21:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "6386:17:66", + "value": { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6397:6:66" + }, + "variables": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "6390:3:66", + "type": "" + } + ] + } + ] + }, + "src": "6380:230:66" + } + ] + }, + "name": "abi_decode_available_length_t_array$_t_bytes4_$dyn_memory_ptr_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "5969:6:66", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "5977:6:66", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "5985:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "5993:5:66", + "type": "" + } + ], + "src": "5887:729:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6725:296:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "6774:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulIdentifier", + "src": "6776:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "6776:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "6776:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6753:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6761:4:66", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6749:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "6749:17:66" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "6768:3:66" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "6745:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "6745:27:66" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "6738:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "6738:35:66" + }, + "nodeType": "YulIf", + "src": "6735:122:66" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "6866:27:66", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6886:6:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "6880:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "6880:13:66" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "6870:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "6902:113:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6988:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6996:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6984:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "6984:17:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "7003:6:66" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "7011:3:66" + } + ], + "functionName": { + "name": "abi_decode_available_length_t_array$_t_bytes4_$dyn_memory_ptr_fromMemory", + "nodeType": "YulIdentifier", + "src": "6911:72:66" + }, + "nodeType": "YulFunctionCall", + "src": "6911:104:66" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "6902:5:66" + } + ] + } + ] + }, + "name": "abi_decode_t_array$_t_bytes4_$dyn_memory_ptr_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "6703:6:66", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "6711:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "6719:5:66", + "type": "" + } + ], + "src": "6638:383:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7270:1542:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "7317:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "7319:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "7319:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "7319:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "7291:7:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7300:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "7287:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "7287:23:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7312:3:66", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "7283:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "7283:33:66" + }, + "nodeType": "YulIf", + "src": "7280:120:66" + }, + { + "nodeType": "YulBlock", + "src": "7410:128:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "7425:15:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7439:1:66", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "7429:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "7454:74:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7500:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "7511:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7496:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "7496:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "7520:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "7464:31:66" + }, + "nodeType": "YulFunctionCall", + "src": "7464:64:66" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "7454:6:66" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "7548:307:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "7563:39:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7587:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7598:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7583:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "7583:18:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "7577:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "7577:25:66" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "7567:6:66", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7649:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "7651:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "7651:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "7651:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "7621:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7629:18:66", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "7618:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "7618:30:66" + }, + "nodeType": "YulIf", + "src": "7615:117:66" + }, + { + "nodeType": "YulAssignment", + "src": "7746:99:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7817:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "7828:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7813:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "7813:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "7837:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory", + "nodeType": "YulIdentifier", + "src": "7756:56:66" + }, + "nodeType": "YulFunctionCall", + "src": "7756:89:66" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "7746:6:66" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "7865:307:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "7880:39:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7904:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7915:2:66", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7900:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "7900:18:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "7894:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "7894:25:66" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "7884:6:66", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7966:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "7968:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "7968:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "7968:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "7938:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7946:18:66", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "7935:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "7935:30:66" + }, + "nodeType": "YulIf", + "src": "7932:117:66" + }, + { + "nodeType": "YulAssignment", + "src": "8063:99:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8134:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "8145:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8130:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "8130:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "8154:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_array$_t_address_$dyn_memory_ptr_fromMemory", + "nodeType": "YulIdentifier", + "src": "8073:56:66" + }, + "nodeType": "YulFunctionCall", + "src": "8073:89:66" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "8063:6:66" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "8182:306:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "8197:39:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8221:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8232:2:66", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8217:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "8217:18:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "8211:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "8211:25:66" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "8201:6:66", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8283:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "8285:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "8285:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "8285:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "8255:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8263:18:66", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "8252:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "8252:30:66" + }, + "nodeType": "YulIf", + "src": "8249:117:66" + }, + { + "nodeType": "YulAssignment", + "src": "8380:98:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8450:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "8461:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8446:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "8446:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "8470:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_array$_t_bytes4_$dyn_memory_ptr_fromMemory", + "nodeType": "YulIdentifier", + "src": "8390:55:66" + }, + "nodeType": "YulFunctionCall", + "src": "8390:88:66" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "8380:6:66" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "8498:307:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "8513:40:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8537:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8548:3:66", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8533:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "8533:19:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "8527:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "8527:26:66" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "8517:6:66", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8600:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "8602:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "8602:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "8602:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "8572:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8580:18:66", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "8569:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "8569:30:66" + }, + "nodeType": "YulIf", + "src": "8566:117:66" + }, + { + "nodeType": "YulAssignment", + "src": "8697:98:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8767:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "8778:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8763:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "8763:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "8787:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_array$_t_bytes4_$dyn_memory_ptr_fromMemory", + "nodeType": "YulIdentifier", + "src": "8707:55:66" + }, + "nodeType": "YulFunctionCall", + "src": "8707:88:66" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "8697:6:66" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_array$_t_bytes32_$dyn_memory_ptrt_array$_t_address_$dyn_memory_ptrt_array$_t_bytes4_$dyn_memory_ptrt_array$_t_bytes4_$dyn_memory_ptr_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "7208:9:66", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "7219:7:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "7231:6:66", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "7239:6:66", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "7247:6:66", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "7255:6:66", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "7263:6:66", + "type": "" + } + ], + "src": "7027:1785:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8914:73:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "8931:3:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "8936:6:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8924:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "8924:19:66" + }, + "nodeType": "YulExpressionStatement", + "src": "8924:19:66" + }, + { + "nodeType": "YulAssignment", + "src": "8952:29:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "8971:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8976:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8967:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "8967:14:66" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "8952:11:66" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "8886:3:66", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "8891:6:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "8902:11:66", + "type": "" + } + ], + "src": "8818:169:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9099:141:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "9121:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9129:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9117:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "9117:14:66" + }, + { + "hexValue": "696e697469616c5265736f7572636549447320616e6420696e697469616c436f", + "kind": "string", + "nodeType": "YulLiteral", + "src": "9133:34:66", + "type": "", + "value": "initialResourceIDs and initialCo" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9110:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "9110:58:66" + }, + "nodeType": "YulExpressionStatement", + "src": "9110:58:66" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "9189:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9197:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9185:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "9185:15:66" + }, + { + "hexValue": "6e7472616374416464726573736573206c656e206d69736d61746368", + "kind": "string", + "nodeType": "YulLiteral", + "src": "9202:30:66", + "type": "", + "value": "ntractAddresses len mismatch" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9178:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "9178:55:66" + }, + "nodeType": "YulExpressionStatement", + "src": "9178:55:66" + } + ] + }, + "name": "store_literal_in_memory_4ad26bc3c99f2850e5fe1de98475000419054e7d49a87288c0e5940e995dd510", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "9091:6:66", + "type": "" + } + ], + "src": "8993:247:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9392:220:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "9402:74:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "9468:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9473:2:66", + "type": "", + "value": "60" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "9409:58:66" + }, + "nodeType": "YulFunctionCall", + "src": "9409:67:66" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "9402:3:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "9574:3:66" + } + ], + "functionName": { + "name": "store_literal_in_memory_4ad26bc3c99f2850e5fe1de98475000419054e7d49a87288c0e5940e995dd510", + "nodeType": "YulIdentifier", + "src": "9485:88:66" + }, + "nodeType": "YulFunctionCall", + "src": "9485:93:66" + }, + "nodeType": "YulExpressionStatement", + "src": "9485:93:66" + }, + { + "nodeType": "YulAssignment", + "src": "9587:19:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "9598:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9603:2:66", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9594:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "9594:12:66" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "9587:3:66" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_4ad26bc3c99f2850e5fe1de98475000419054e7d49a87288c0e5940e995dd510_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "9380:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "9388:3:66", + "type": "" + } + ], + "src": "9246:366:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9789:248:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "9799:26:66", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9811:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9822:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9807:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "9807:18:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "9799:4:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9846:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9857:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9842:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "9842:17:66" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "9865:4:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9871:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "9861:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "9861:20:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "9835:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "9835:47:66" + }, + "nodeType": "YulExpressionStatement", + "src": "9835:47:66" + }, + { + "nodeType": "YulAssignment", + "src": "9891:139:66", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "10025:4:66" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_4ad26bc3c99f2850e5fe1de98475000419054e7d49a87288c0e5940e995dd510_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "9899:124:66" + }, + "nodeType": "YulFunctionCall", + "src": "9899:131:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "9891:4:66" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_4ad26bc3c99f2850e5fe1de98475000419054e7d49a87288c0e5940e995dd510__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "9769:9:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "9784:4:66", + "type": "" + } + ], + "src": "9618:419:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10149:145:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "10171:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10179:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10167:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "10167:14:66" + }, + { + "hexValue": "70726f766964656420636f6e74726163742061646472657373657320616e6420", + "kind": "string", + "nodeType": "YulLiteral", + "src": "10183:34:66", + "type": "", + "value": "provided contract addresses and " + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10160:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "10160:58:66" + }, + "nodeType": "YulExpressionStatement", + "src": "10160:58:66" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "10239:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10247:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10235:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "10235:15:66" + }, + { + "hexValue": "66756e6374696f6e207369676e617475726573206c656e206d69736d61746368", + "kind": "string", + "nodeType": "YulLiteral", + "src": "10252:34:66", + "type": "", + "value": "function signatures len mismatch" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10228:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "10228:59:66" + }, + "nodeType": "YulExpressionStatement", + "src": "10228:59:66" + } + ] + }, + "name": "store_literal_in_memory_b746ce628071fcac0bf096a6e7891ff5a23e8d585affec3cf59959f2a03a9fe0", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "10141:6:66", + "type": "" + } + ], + "src": "10043:251:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10446:220:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "10456:74:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "10522:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10527:2:66", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "10463:58:66" + }, + "nodeType": "YulFunctionCall", + "src": "10463:67:66" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "10456:3:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "10628:3:66" + } + ], + "functionName": { + "name": "store_literal_in_memory_b746ce628071fcac0bf096a6e7891ff5a23e8d585affec3cf59959f2a03a9fe0", + "nodeType": "YulIdentifier", + "src": "10539:88:66" + }, + "nodeType": "YulFunctionCall", + "src": "10539:93:66" + }, + "nodeType": "YulExpressionStatement", + "src": "10539:93:66" + }, + { + "nodeType": "YulAssignment", + "src": "10641:19:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "10652:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10657:2:66", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10648:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "10648:12:66" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "10641:3:66" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_b746ce628071fcac0bf096a6e7891ff5a23e8d585affec3cf59959f2a03a9fe0_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "10434:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "10442:3:66", + "type": "" + } + ], + "src": "10300:366:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10843:248:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "10853:26:66", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10865:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10876:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10861:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "10861:18:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "10853:4:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10900:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10911:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10896:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "10896:17:66" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "10919:4:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10925:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "10915:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "10915:20:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10889:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "10889:47:66" + }, + "nodeType": "YulExpressionStatement", + "src": "10889:47:66" + }, + { + "nodeType": "YulAssignment", + "src": "10945:139:66", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "11079:4:66" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_b746ce628071fcac0bf096a6e7891ff5a23e8d585affec3cf59959f2a03a9fe0_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "10953:124:66" + }, + "nodeType": "YulFunctionCall", + "src": "10953:131:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "10945:4:66" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_b746ce628071fcac0bf096a6e7891ff5a23e8d585affec3cf59959f2a03a9fe0__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "10823:9:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "10838:4:66", + "type": "" + } + ], + "src": "10672:419:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11203:142:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "11225:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11233:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11221:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "11221:14:66" + }, + { + "hexValue": "70726f7669646564206465706f73697420616e6420657865637574652066756e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "11237:34:66", + "type": "", + "value": "provided deposit and execute fun" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11214:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "11214:58:66" + }, + "nodeType": "YulExpressionStatement", + "src": "11214:58:66" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "11293:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11301:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11289:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "11289:15:66" + }, + { + "hexValue": "6374696f6e207369676e617475726573206c656e206d69736d61746368", + "kind": "string", + "nodeType": "YulLiteral", + "src": "11306:31:66", + "type": "", + "value": "ction signatures len mismatch" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11282:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "11282:56:66" + }, + "nodeType": "YulExpressionStatement", + "src": "11282:56:66" + } + ] + }, + "name": "store_literal_in_memory_9131b91c39cfdeebf122a7e28defa3834f957032b39040decdc270fb62be6d96", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "11195:6:66", + "type": "" + } + ], + "src": "11097:248:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11497:220:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "11507:74:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11573:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11578:2:66", + "type": "", + "value": "61" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "11514:58:66" + }, + "nodeType": "YulFunctionCall", + "src": "11514:67:66" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11507:3:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11679:3:66" + } + ], + "functionName": { + "name": "store_literal_in_memory_9131b91c39cfdeebf122a7e28defa3834f957032b39040decdc270fb62be6d96", + "nodeType": "YulIdentifier", + "src": "11590:88:66" + }, + "nodeType": "YulFunctionCall", + "src": "11590:93:66" + }, + "nodeType": "YulExpressionStatement", + "src": "11590:93:66" + }, + { + "nodeType": "YulAssignment", + "src": "11692:19:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11703:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11708:2:66", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11699:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "11699:12:66" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "11692:3:66" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_9131b91c39cfdeebf122a7e28defa3834f957032b39040decdc270fb62be6d96_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "11485:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "11493:3:66", + "type": "" + } + ], + "src": "11351:366:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11894:248:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "11904:26:66", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11916:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11927:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11912:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "11912:18:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "11904:4:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11951:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11962:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11947:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "11947:17:66" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "11970:4:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11976:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "11966:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "11966:20:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11940:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "11940:47:66" + }, + "nodeType": "YulExpressionStatement", + "src": "11940:47:66" + }, + { + "nodeType": "YulAssignment", + "src": "11996:139:66", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "12130:4:66" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_9131b91c39cfdeebf122a7e28defa3834f957032b39040decdc270fb62be6d96_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "12004:124:66" + }, + "nodeType": "YulFunctionCall", + "src": "12004:131:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "11996:4:66" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_9131b91c39cfdeebf122a7e28defa3834f957032b39040decdc270fb62be6d96__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "11874:9:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "11889:4:66", + "type": "" + } + ], + "src": "11723:419:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12176:152:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12193:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12196:77:66", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12186:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "12186:88:66" + }, + "nodeType": "YulExpressionStatement", + "src": "12186:88:66" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12290:1:66", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12293:4:66", + "type": "", + "value": "0x32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12283:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "12283:15:66" + }, + "nodeType": "YulExpressionStatement", + "src": "12283:15:66" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12314:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12317:4:66", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "12307:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "12307:15:66" + }, + "nodeType": "YulExpressionStatement", + "src": "12307:15:66" + } + ] + }, + "name": "panic_error_0x32", + "nodeType": "YulFunctionDefinition", + "src": "12148:180:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12362:152:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12379:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12382:77:66", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12372:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "12372:88:66" + }, + "nodeType": "YulExpressionStatement", + "src": "12372:88:66" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12476:1:66", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12479:4:66", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12469:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "12469:15:66" + }, + "nodeType": "YulExpressionStatement", + "src": "12469:15:66" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12500:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12503:4:66", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "12493:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "12493:15:66" + }, + "nodeType": "YulExpressionStatement", + "src": "12493:15:66" + } + ] + }, + "name": "panic_error_0x11", + "nodeType": "YulFunctionDefinition", + "src": "12334:180:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12565:32:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "12575:16:66", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "12586:5:66" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "12575:7:66" + } + ] + } + ] + }, + "name": "cleanup_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "12547:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "12557:7:66", + "type": "" + } + ], + "src": "12520:77:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12646:190:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "12656:33:66", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "12683:5:66" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "12665:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "12665:24:66" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "12656:5:66" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12779:22:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "12781:16:66" + }, + "nodeType": "YulFunctionCall", + "src": "12781:18:66" + }, + "nodeType": "YulExpressionStatement", + "src": "12781:18:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "12704:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12711:66:66", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "12701:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "12701:77:66" + }, + "nodeType": "YulIf", + "src": "12698:103:66" + }, + { + "nodeType": "YulAssignment", + "src": "12810:20:66", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "12821:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12828:1:66", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12817:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "12817:13:66" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "12810:3:66" + } + ] + } + ] + }, + "name": "increment_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "12632:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nodeType": "YulTypedName", + "src": "12642:3:66", + "type": "" + } + ], + "src": "12603:233:66" + } + ] + }, + "contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_address(value)\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_array$_t_bytes32_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n revert(0, 0)\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_bytes32(value) {\n if iszero(eq(value, cleanup_t_bytes32(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes32_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_bytes32(value)\n }\n\n // bytes32[]\n function abi_decode_available_length_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_bytes32_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x20))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x20) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_bytes32_fromMemory(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // bytes32[]\n function abi_decode_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := mload(offset)\n array := abi_decode_available_length_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory(add(offset, 0x20), length, end)\n }\n\n function array_allocation_size_t_array$_t_address_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n // address[]\n function abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr_fromMemory(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_address_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x20))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x20) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_address_fromMemory(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // address[]\n function abi_decode_t_array$_t_address_$dyn_memory_ptr_fromMemory(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := mload(offset)\n array := abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr_fromMemory(add(offset, 0x20), length, end)\n }\n\n function array_allocation_size_t_array$_t_bytes4_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function cleanup_t_bytes4(value) -> cleaned {\n cleaned := and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000)\n }\n\n function validator_revert_t_bytes4(value) {\n if iszero(eq(value, cleanup_t_bytes4(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes4_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_bytes4(value)\n }\n\n // bytes4[]\n function abi_decode_available_length_t_array$_t_bytes4_$dyn_memory_ptr_fromMemory(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_bytes4_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x20))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x20) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_bytes4_fromMemory(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // bytes4[]\n function abi_decode_t_array$_t_bytes4_$dyn_memory_ptr_fromMemory(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := mload(offset)\n array := abi_decode_available_length_t_array$_t_bytes4_$dyn_memory_ptr_fromMemory(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_addresst_array$_t_bytes32_$dyn_memory_ptrt_array$_t_address_$dyn_memory_ptrt_array$_t_bytes4_$dyn_memory_ptrt_array$_t_bytes4_$dyn_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4 {\n if slt(sub(dataEnd, headStart), 160) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := mload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value1 := abi_decode_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := mload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value2 := abi_decode_t_array$_t_address_$dyn_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := mload(add(headStart, 96))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value3 := abi_decode_t_array$_t_bytes4_$dyn_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := mload(add(headStart, 128))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value4 := abi_decode_t_array$_t_bytes4_$dyn_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function store_literal_in_memory_4ad26bc3c99f2850e5fe1de98475000419054e7d49a87288c0e5940e995dd510(memPtr) {\n\n mstore(add(memPtr, 0), \"initialResourceIDs and initialCo\")\n\n mstore(add(memPtr, 32), \"ntractAddresses len mismatch\")\n\n }\n\n function abi_encode_t_stringliteral_4ad26bc3c99f2850e5fe1de98475000419054e7d49a87288c0e5940e995dd510_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 60)\n store_literal_in_memory_4ad26bc3c99f2850e5fe1de98475000419054e7d49a87288c0e5940e995dd510(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_4ad26bc3c99f2850e5fe1de98475000419054e7d49a87288c0e5940e995dd510__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_4ad26bc3c99f2850e5fe1de98475000419054e7d49a87288c0e5940e995dd510_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_b746ce628071fcac0bf096a6e7891ff5a23e8d585affec3cf59959f2a03a9fe0(memPtr) {\n\n mstore(add(memPtr, 0), \"provided contract addresses and \")\n\n mstore(add(memPtr, 32), \"function signatures len mismatch\")\n\n }\n\n function abi_encode_t_stringliteral_b746ce628071fcac0bf096a6e7891ff5a23e8d585affec3cf59959f2a03a9fe0_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 64)\n store_literal_in_memory_b746ce628071fcac0bf096a6e7891ff5a23e8d585affec3cf59959f2a03a9fe0(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_b746ce628071fcac0bf096a6e7891ff5a23e8d585affec3cf59959f2a03a9fe0__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_b746ce628071fcac0bf096a6e7891ff5a23e8d585affec3cf59959f2a03a9fe0_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_9131b91c39cfdeebf122a7e28defa3834f957032b39040decdc270fb62be6d96(memPtr) {\n\n mstore(add(memPtr, 0), \"provided deposit and execute fun\")\n\n mstore(add(memPtr, 32), \"ction signatures len mismatch\")\n\n }\n\n function abi_encode_t_stringliteral_9131b91c39cfdeebf122a7e28defa3834f957032b39040decdc270fb62be6d96_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 61)\n store_literal_in_memory_9131b91c39cfdeebf122a7e28defa3834f957032b39040decdc270fb62be6d96(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_9131b91c39cfdeebf122a7e28defa3834f957032b39040decdc270fb62be6d96__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_9131b91c39cfdeebf122a7e28defa3834f957032b39040decdc270fb62be6d96_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n\n}\n", + "id": 66, + "language": "Yul", + "name": "#utility.yul" + } + ], + "deployedGeneratedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:24578:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "52:81:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "62:65:66", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "77:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "84:42:66", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "73:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "73:54:66" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "62:7:66" + } + ] + } + ] + }, + "name": "cleanup_t_uint160", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "34:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "44:7:66", + "type": "" + } + ], + "src": "7:126:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "184:51:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "194:35:66", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "223:5:66" + } + ], + "functionName": { + "name": "cleanup_t_uint160", + "nodeType": "YulIdentifier", + "src": "205:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "205:24:66" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "194:7:66" + } + ] + } + ] + }, + "name": "cleanup_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "166:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "176:7:66", + "type": "" + } + ], + "src": "139:96:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "306:53:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "323:3:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "346:5:66" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "328:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "328:24:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "316:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "316:37:66" + }, + "nodeType": "YulExpressionStatement", + "src": "316:37:66" + } + ] + }, + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "294:5:66", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "301:3:66", + "type": "" + } + ], + "src": "241:118:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "463:124:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "473:26:66", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "485:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "496:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "481:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "481:18:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "473:4:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "553:6:66" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "566:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "577:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "562:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "562:17:66" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "509:43:66" + }, + "nodeType": "YulFunctionCall", + "src": "509:71:66" + }, + "nodeType": "YulExpressionStatement", + "src": "509:71:66" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "435:9:66", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "447:6:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "458:4:66", + "type": "" + } + ], + "src": "365:222:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "633:35:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "643:19:66", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "659:2:66", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "653:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "653:9:66" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "643:6:66" + } + ] + } + ] + }, + "name": "allocate_unbounded", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "626:6:66", + "type": "" + } + ], + "src": "593:75:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "763:28:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "780:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "783:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "773:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "773:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "773:12:66" + } + ] + }, + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulFunctionDefinition", + "src": "674:117:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "886:28:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "903:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "906:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "896:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "896:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "896:12:66" + } + ] + }, + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulFunctionDefinition", + "src": "797:117:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "965:32:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "975:16:66", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "986:5:66" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "975:7:66" + } + ] + } + ] + }, + "name": "cleanup_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "947:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "957:7:66", + "type": "" + } + ], + "src": "920:77:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1046:79:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1103:16:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1112:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1115:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1105:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "1105:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "1105:12:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1069:5:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1094:5:66" + } + ], + "functionName": { + "name": "cleanup_t_bytes32", + "nodeType": "YulIdentifier", + "src": "1076:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "1076:24:66" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "1066:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "1066:35:66" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1059:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "1059:43:66" + }, + "nodeType": "YulIf", + "src": "1056:63:66" + } + ] + }, + "name": "validator_revert_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1039:5:66", + "type": "" + } + ], + "src": "1003:122:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1183:87:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1193:29:66", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1215:6:66" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1202:12:66" + }, + "nodeType": "YulFunctionCall", + "src": "1202:20:66" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1193:5:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1258:5:66" + } + ], + "functionName": { + "name": "validator_revert_t_bytes32", + "nodeType": "YulIdentifier", + "src": "1231:26:66" + }, + "nodeType": "YulFunctionCall", + "src": "1231:33:66" + }, + "nodeType": "YulExpressionStatement", + "src": "1231:33:66" + } + ] + }, + "name": "abi_decode_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1161:6:66", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "1169:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1177:5:66", + "type": "" + } + ], + "src": "1131:139:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1319:43:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1329:27:66", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1344:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1351:4:66", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "1340:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "1340:16:66" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "1329:7:66" + } + ] + } + ] + }, + "name": "cleanup_t_uint8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1301:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "1311:7:66", + "type": "" + } + ], + "src": "1276:86:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1409:77:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1464:16:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1473:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1476:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1466:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "1466:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "1466:12:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1432:5:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1455:5:66" + } + ], + "functionName": { + "name": "cleanup_t_uint8", + "nodeType": "YulIdentifier", + "src": "1439:15:66" + }, + "nodeType": "YulFunctionCall", + "src": "1439:22:66" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "1429:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "1429:33:66" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1422:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "1422:41:66" + }, + "nodeType": "YulIf", + "src": "1419:61:66" + } + ] + }, + "name": "validator_revert_t_uint8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1402:5:66", + "type": "" + } + ], + "src": "1368:118:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1542:85:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1552:29:66", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1574:6:66" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1561:12:66" + }, + "nodeType": "YulFunctionCall", + "src": "1561:20:66" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1552:5:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1615:5:66" + } + ], + "functionName": { + "name": "validator_revert_t_uint8", + "nodeType": "YulIdentifier", + "src": "1590:24:66" + }, + "nodeType": "YulFunctionCall", + "src": "1590:31:66" + }, + "nodeType": "YulExpressionStatement", + "src": "1590:31:66" + } + ] + }, + "name": "abi_decode_t_uint8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1520:6:66", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "1528:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1536:5:66", + "type": "" + } + ], + "src": "1492:135:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1677:57:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1687:41:66", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1702:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1709:18:66", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "1698:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "1698:30:66" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "1687:7:66" + } + ] + } + ] + }, + "name": "cleanup_t_uint64", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1659:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "1669:7:66", + "type": "" + } + ], + "src": "1633:101:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1782:78:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1838:16:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1847:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1850:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1840:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "1840:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "1840:12:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1805:5:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1829:5:66" + } + ], + "functionName": { + "name": "cleanup_t_uint64", + "nodeType": "YulIdentifier", + "src": "1812:16:66" + }, + "nodeType": "YulFunctionCall", + "src": "1812:23:66" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "1802:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "1802:34:66" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1795:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "1795:42:66" + }, + "nodeType": "YulIf", + "src": "1792:62:66" + } + ] + }, + "name": "validator_revert_t_uint64", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1775:5:66", + "type": "" + } + ], + "src": "1740:120:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1917:86:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1927:29:66", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1949:6:66" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1936:12:66" + }, + "nodeType": "YulFunctionCall", + "src": "1936:20:66" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1927:5:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1991:5:66" + } + ], + "functionName": { + "name": "validator_revert_t_uint64", + "nodeType": "YulIdentifier", + "src": "1965:25:66" + }, + "nodeType": "YulFunctionCall", + "src": "1965:32:66" + }, + "nodeType": "YulExpressionStatement", + "src": "1965:32:66" + } + ] + }, + "name": "abi_decode_t_uint64", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1895:6:66", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "1903:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1911:5:66", + "type": "" + } + ], + "src": "1866:137:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2052:79:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2109:16:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2118:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2121:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2111:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "2111:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "2111:12:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2075:5:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2100:5:66" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "2082:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "2082:24:66" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "2072:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "2072:35:66" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "2065:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "2065:43:66" + }, + "nodeType": "YulIf", + "src": "2062:63:66" + } + ] + }, + "name": "validator_revert_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2045:5:66", + "type": "" + } + ], + "src": "2009:122:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2189:87:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2199:29:66", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2221:6:66" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "2208:12:66" + }, + "nodeType": "YulFunctionCall", + "src": "2208:20:66" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2199:5:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2264:5:66" + } + ], + "functionName": { + "name": "validator_revert_t_address", + "nodeType": "YulIdentifier", + "src": "2237:26:66" + }, + "nodeType": "YulFunctionCall", + "src": "2237:33:66" + }, + "nodeType": "YulExpressionStatement", + "src": "2237:33:66" + } + ] + }, + "name": "abi_decode_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "2167:6:66", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "2175:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2183:5:66", + "type": "" + } + ], + "src": "2137:139:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2371:28:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2388:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2391:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2381:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "2381:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "2381:12:66" + } + ] + }, + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulFunctionDefinition", + "src": "2282:117:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2494:28:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2511:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2514:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2504:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "2504:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "2504:12:66" + } + ] + }, + "name": "revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490", + "nodeType": "YulFunctionDefinition", + "src": "2405:117:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2617:28:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2634:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2637:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2627:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "2627:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "2627:12:66" + } + ] + }, + "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", + "nodeType": "YulFunctionDefinition", + "src": "2528:117:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2738:478:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2787:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nodeType": "YulIdentifier", + "src": "2789:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "2789:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "2789:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2766:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2774:4:66", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2762:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "2762:17:66" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "2781:3:66" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "2758:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "2758:27:66" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "2751:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "2751:35:66" + }, + "nodeType": "YulIf", + "src": "2748:122:66" + }, + { + "nodeType": "YulAssignment", + "src": "2879:30:66", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2902:6:66" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "2889:12:66" + }, + "nodeType": "YulFunctionCall", + "src": "2889:20:66" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2879:6:66" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2952:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490", + "nodeType": "YulIdentifier", + "src": "2954:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "2954:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "2954:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2924:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2932:18:66", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "2921:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "2921:30:66" + }, + "nodeType": "YulIf", + "src": "2918:117:66" + }, + { + "nodeType": "YulAssignment", + "src": "3044:29:66", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3060:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3068:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3056:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "3056:17:66" + }, + "variableNames": [ + { + "name": "arrayPos", + "nodeType": "YulIdentifier", + "src": "3044:8:66" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3127:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", + "nodeType": "YulIdentifier", + "src": "3129:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "3129:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "3129:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "arrayPos", + "nodeType": "YulIdentifier", + "src": "3092:8:66" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "3106:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3114:4:66", + "type": "", + "value": "0x01" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "3102:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "3102:17:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3088:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "3088:32:66" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "3122:3:66" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "3085:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "3085:41:66" + }, + "nodeType": "YulIf", + "src": "3082:128:66" + } + ] + }, + "name": "abi_decode_t_bytes_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "2705:6:66", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "2713:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "arrayPos", + "nodeType": "YulTypedName", + "src": "2721:8:66", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "2731:6:66", + "type": "" + } + ], + "src": "2664:552:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3372:953:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3419:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "3421:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "3421:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "3421:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "3393:7:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3402:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "3389:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "3389:23:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3414:3:66", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "3385:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "3385:33:66" + }, + "nodeType": "YulIf", + "src": "3382:120:66" + }, + { + "nodeType": "YulBlock", + "src": "3512:117:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "3527:15:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3541:1:66", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "3531:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3556:63:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3591:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3602:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3587:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "3587:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "3611:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_bytes32", + "nodeType": "YulIdentifier", + "src": "3566:20:66" + }, + "nodeType": "YulFunctionCall", + "src": "3566:53:66" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "3556:6:66" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "3639:116:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "3654:16:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3668:2:66", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "3658:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3684:61:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3717:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3728:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3713:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "3713:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "3737:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_uint8", + "nodeType": "YulIdentifier", + "src": "3694:18:66" + }, + "nodeType": "YulFunctionCall", + "src": "3694:51:66" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "3684:6:66" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "3765:117:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "3780:16:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3794:2:66", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "3784:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3810:62:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3844:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3855:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3840:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "3840:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "3864:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_uint64", + "nodeType": "YulIdentifier", + "src": "3820:19:66" + }, + "nodeType": "YulFunctionCall", + "src": "3820:52:66" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "3810:6:66" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "3892:118:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "3907:16:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3921:2:66", + "type": "", + "value": "96" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "3911:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3937:63:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3972:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3983:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3968:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "3968:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "3992:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "3947:20:66" + }, + "nodeType": "YulFunctionCall", + "src": "3947:53:66" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "3937:6:66" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "4020:298:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "4035:47:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4066:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4077:3:66", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4062:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "4062:19:66" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4049:12:66" + }, + "nodeType": "YulFunctionCall", + "src": "4049:33:66" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "4039:6:66", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4129:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "4131:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "4131:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "4131:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4101:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4109:18:66", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "4098:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "4098:30:66" + }, + "nodeType": "YulIf", + "src": "4095:117:66" + }, + { + "nodeType": "YulAssignment", + "src": "4226:82:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4280:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4291:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4276:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "4276:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4300:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_bytes_calldata_ptr", + "nodeType": "YulIdentifier", + "src": "4244:31:66" + }, + "nodeType": "YulFunctionCall", + "src": "4244:64:66" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "4226:6:66" + }, + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "4234:6:66" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_uint8t_uint64t_addresst_bytes_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3302:9:66", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "3313:7:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "3325:6:66", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "3333:6:66", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "3341:6:66", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "3349:6:66", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "3357:6:66", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "3365:6:66", + "type": "" + } + ], + "src": "3222:1103:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4411:388:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "4457:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "4459:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "4459:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "4459:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4432:7:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4441:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "4428:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "4428:23:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4453:2:66", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "4424:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "4424:32:66" + }, + "nodeType": "YulIf", + "src": "4421:119:66" + }, + { + "nodeType": "YulBlock", + "src": "4550:115:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "4565:15:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4579:1:66", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "4569:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4594:61:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4627:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4638:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4623:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "4623:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4647:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_uint8", + "nodeType": "YulIdentifier", + "src": "4604:18:66" + }, + "nodeType": "YulFunctionCall", + "src": "4604:51:66" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "4594:6:66" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "4675:117:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "4690:16:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4704:2:66", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "4694:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4720:62:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4754:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "4765:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4750:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "4750:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4774:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_uint64", + "nodeType": "YulIdentifier", + "src": "4730:19:66" + }, + "nodeType": "YulFunctionCall", + "src": "4730:52:66" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "4720:6:66" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint8t_uint64", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "4373:9:66", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "4384:7:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "4396:6:66", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "4404:6:66", + "type": "" + } + ], + "src": "4331:468:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4866:51:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "4883:3:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4904:5:66" + } + ], + "functionName": { + "name": "cleanup_t_uint8", + "nodeType": "YulIdentifier", + "src": "4888:15:66" + }, + "nodeType": "YulFunctionCall", + "src": "4888:22:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4876:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "4876:35:66" + }, + "nodeType": "YulExpressionStatement", + "src": "4876:35:66" + } + ] + }, + "name": "abi_encode_t_uint8_to_t_uint8_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "4854:5:66", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "4861:3:66", + "type": "" + } + ], + "src": "4805:112:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4988:53:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "5005:3:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5028:5:66" + } + ], + "functionName": { + "name": "cleanup_t_bytes32", + "nodeType": "YulIdentifier", + "src": "5010:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "5010:24:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4998:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "4998:37:66" + }, + "nodeType": "YulExpressionStatement", + "src": "4998:37:66" + } + ] + }, + "name": "abi_encode_t_bytes32_to_t_bytes32_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "4976:5:66", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "4983:3:66", + "type": "" + } + ], + "src": "4923:118:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5105:40:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5116:22:66", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5132:5:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "5126:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "5126:12:66" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "5116:6:66" + } + ] + } + ] + }, + "name": "array_length_t_bytes_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "5088:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "5098:6:66", + "type": "" + } + ], + "src": "5047:98:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5246:73:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "5263:3:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "5268:6:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5256:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "5256:19:66" + }, + "nodeType": "YulExpressionStatement", + "src": "5256:19:66" + }, + { + "nodeType": "YulAssignment", + "src": "5284:29:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "5303:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5308:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5299:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "5299:14:66" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "5284:11:66" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "5218:3:66", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "5223:6:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "5234:11:66", + "type": "" + } + ], + "src": "5151:168:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5387:184:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "5397:10:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5406:1:66", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "5401:1:66", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5466:63:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "5491:3:66" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "5496:1:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5487:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "5487:11:66" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "5510:3:66" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "5515:1:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5506:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "5506:11:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "5500:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "5500:18:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5480:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "5480:39:66" + }, + "nodeType": "YulExpressionStatement", + "src": "5480:39:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "5427:1:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "5430:6:66" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "5424:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "5424:13:66" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "5438:19:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5440:15:66", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "5449:1:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5452:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5445:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "5445:10:66" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "5440:1:66" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "5420:3:66", + "statements": [] + }, + "src": "5416:113:66" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "5549:3:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "5554:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5545:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "5545:16:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5563:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5538:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "5538:27:66" + }, + "nodeType": "YulExpressionStatement", + "src": "5538:27:66" + } + ] + }, + "name": "copy_memory_to_memory_with_cleanup", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "5369:3:66", + "type": "" + }, + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "5374:3:66", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "5379:6:66", + "type": "" + } + ], + "src": "5325:246:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5625:54:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5635:38:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5653:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5660:2:66", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5649:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "5649:14:66" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5669:2:66", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "5665:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "5665:7:66" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "5645:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "5645:28:66" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "5635:6:66" + } + ] + } + ] + }, + "name": "round_up_to_mul_of_32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "5608:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "result", + "nodeType": "YulTypedName", + "src": "5618:6:66", + "type": "" + } + ], + "src": "5577:102:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5775:283:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "5785:52:66", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5831:5:66" + } + ], + "functionName": { + "name": "array_length_t_bytes_memory_ptr", + "nodeType": "YulIdentifier", + "src": "5799:31:66" + }, + "nodeType": "YulFunctionCall", + "src": "5799:38:66" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "5789:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "5846:77:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "5911:3:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "5916:6:66" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "5853:57:66" + }, + "nodeType": "YulFunctionCall", + "src": "5853:70:66" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "5846:3:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5971:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5978:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5967:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "5967:16:66" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "5985:3:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "5990:6:66" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nodeType": "YulIdentifier", + "src": "5932:34:66" + }, + "nodeType": "YulFunctionCall", + "src": "5932:65:66" + }, + "nodeType": "YulExpressionStatement", + "src": "5932:65:66" + }, + { + "nodeType": "YulAssignment", + "src": "6006:46:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "6017:3:66" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "6044:6:66" + } + ], + "functionName": { + "name": "round_up_to_mul_of_32", + "nodeType": "YulIdentifier", + "src": "6022:21:66" + }, + "nodeType": "YulFunctionCall", + "src": "6022:29:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6013:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "6013:39:66" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "6006:3:66" + } + ] + } + ] + }, + "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "5756:5:66", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "5763:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "5771:3:66", + "type": "" + } + ], + "src": "5685:373:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6260:436:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "6270:27:66", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6282:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6293:3:66", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6278:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "6278:19:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6270:4:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "6347:6:66" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6360:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6371:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6356:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "6356:17:66" + } + ], + "functionName": { + "name": "abi_encode_t_uint8_to_t_uint8_fromStack", + "nodeType": "YulIdentifier", + "src": "6307:39:66" + }, + "nodeType": "YulFunctionCall", + "src": "6307:67:66" + }, + "nodeType": "YulExpressionStatement", + "src": "6307:67:66" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "6428:6:66" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6441:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6452:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6437:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "6437:18:66" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "6384:43:66" + }, + "nodeType": "YulFunctionCall", + "src": "6384:72:66" + }, + "nodeType": "YulExpressionStatement", + "src": "6384:72:66" + }, + { + "expression": { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "6510:6:66" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6523:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6534:2:66", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6519:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "6519:18:66" + } + ], + "functionName": { + "name": "abi_encode_t_bytes32_to_t_bytes32_fromStack", + "nodeType": "YulIdentifier", + "src": "6466:43:66" + }, + "nodeType": "YulFunctionCall", + "src": "6466:72:66" + }, + "nodeType": "YulExpressionStatement", + "src": "6466:72:66" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6559:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6570:2:66", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6555:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "6555:18:66" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6579:4:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6585:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "6575:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "6575:20:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6548:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "6548:48:66" + }, + "nodeType": "YulExpressionStatement", + "src": "6548:48:66" + }, + { + "nodeType": "YulAssignment", + "src": "6605:84:66", + "value": { + "arguments": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "6675:6:66" + }, + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6684:4:66" + } + ], + "functionName": { + "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "6613:61:66" + }, + "nodeType": "YulFunctionCall", + "src": "6613:76:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6605:4:66" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_uint8_t_address_t_bytes32_t_bytes_memory_ptr__to_t_uint8_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "6208:9:66", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "6220:6:66", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "6228:6:66", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "6236:6:66", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "6244:6:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "6255:4:66", + "type": "" + } + ], + "src": "6064:632:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6768:263:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "6814:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "6816:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "6816:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "6816:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "6789:7:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6798:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "6785:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "6785:23:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6810:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "6781:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "6781:32:66" + }, + "nodeType": "YulIf", + "src": "6778:119:66" + }, + { + "nodeType": "YulBlock", + "src": "6907:117:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "6922:15:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6936:1:66", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "6926:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "6951:63:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6986:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "6997:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6982:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "6982:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "7006:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "6961:20:66" + }, + "nodeType": "YulFunctionCall", + "src": "6961:53:66" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "6951:6:66" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "6738:9:66", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "6749:7:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "6761:6:66", + "type": "" + } + ], + "src": "6702:329:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7079:48:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7089:32:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "7114:5:66" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "7107:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "7107:13:66" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "7100:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "7100:21:66" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "7089:7:66" + } + ] + } + ] + }, + "name": "cleanup_t_bool", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "7061:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "7071:7:66", + "type": "" + } + ], + "src": "7037:90:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7192:50:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "7209:3:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "7229:5:66" + } + ], + "functionName": { + "name": "cleanup_t_bool", + "nodeType": "YulIdentifier", + "src": "7214:14:66" + }, + "nodeType": "YulFunctionCall", + "src": "7214:21:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7202:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "7202:34:66" + }, + "nodeType": "YulExpressionStatement", + "src": "7202:34:66" + } + ] + }, + "name": "abi_encode_t_bool_to_t_bool_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "7180:5:66", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "7187:3:66", + "type": "" + } + ], + "src": "7133:109:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7340:118:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7350:26:66", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7362:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7373:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7358:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "7358:18:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7350:4:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "7424:6:66" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7437:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7448:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7433:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "7433:17:66" + } + ], + "functionName": { + "name": "abi_encode_t_bool_to_t_bool_fromStack", + "nodeType": "YulIdentifier", + "src": "7386:37:66" + }, + "nodeType": "YulFunctionCall", + "src": "7386:65:66" + }, + "nodeType": "YulExpressionStatement", + "src": "7386:65:66" + } + ] + }, + "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "7312:9:66", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "7324:6:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "7335:4:66", + "type": "" + } + ], + "src": "7248:210:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7508:105:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7518:89:66", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "7533:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7540:66:66", + "type": "", + "value": "0xffffffff00000000000000000000000000000000000000000000000000000000" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "7529:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "7529:78:66" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "7518:7:66" + } + ] + } + ] + }, + "name": "cleanup_t_bytes4", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "7490:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "7500:7:66", + "type": "" + } + ], + "src": "7464:149:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7682:52:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "7699:3:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "7721:5:66" + } + ], + "functionName": { + "name": "cleanup_t_bytes4", + "nodeType": "YulIdentifier", + "src": "7704:16:66" + }, + "nodeType": "YulFunctionCall", + "src": "7704:23:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7692:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "7692:36:66" + }, + "nodeType": "YulExpressionStatement", + "src": "7692:36:66" + } + ] + }, + "name": "abi_encode_t_bytes4_to_t_bytes4_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "7670:5:66", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "7677:3:66", + "type": "" + } + ], + "src": "7619:115:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7836:122:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7846:26:66", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7858:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7869:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7854:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "7854:18:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7846:4:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "7924:6:66" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7937:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7948:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7933:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "7933:17:66" + } + ], + "functionName": { + "name": "abi_encode_t_bytes4_to_t_bytes4_fromStack", + "nodeType": "YulIdentifier", + "src": "7882:41:66" + }, + "nodeType": "YulFunctionCall", + "src": "7882:69:66" + }, + "nodeType": "YulExpressionStatement", + "src": "7882:69:66" + } + ] + }, + "name": "abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "7808:9:66", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "7820:6:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "7831:4:66", + "type": "" + } + ], + "src": "7740:218:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8044:388:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "8090:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "8092:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "8092:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "8092:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "8065:7:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8074:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "8061:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "8061:23:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8086:2:66", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "8057:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "8057:32:66" + }, + "nodeType": "YulIf", + "src": "8054:119:66" + }, + { + "nodeType": "YulBlock", + "src": "8183:116:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "8198:15:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8212:1:66", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "8202:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "8227:62:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8261:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "8272:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8257:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "8257:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "8281:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_uint64", + "nodeType": "YulIdentifier", + "src": "8237:19:66" + }, + "nodeType": "YulFunctionCall", + "src": "8237:52:66" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "8227:6:66" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "8309:116:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "8324:16:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8338:2:66", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "8328:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "8354:61:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8387:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "8398:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8383:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "8383:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "8407:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_uint8", + "nodeType": "YulIdentifier", + "src": "8364:18:66" + }, + "nodeType": "YulFunctionCall", + "src": "8364:51:66" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "8354:6:66" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint64t_uint8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "8006:9:66", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "8017:7:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "8029:6:66", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "8037:6:66", + "type": "" + } + ], + "src": "7964:468:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8489:51:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "8506:3:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8527:5:66" + } + ], + "functionName": { + "name": "cleanup_t_uint8", + "nodeType": "YulIdentifier", + "src": "8511:15:66" + }, + "nodeType": "YulFunctionCall", + "src": "8511:22:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8499:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "8499:35:66" + }, + "nodeType": "YulExpressionStatement", + "src": "8499:35:66" + } + ] + }, + "name": "abi_encode_t_uint8_to_t_uint8", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "8477:5:66", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "8484:3:66", + "type": "" + } + ], + "src": "8438:102:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8601:53:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "8618:3:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8641:5:66" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "8623:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "8623:24:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8611:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "8611:37:66" + }, + "nodeType": "YulExpressionStatement", + "src": "8611:37:66" + } + ] + }, + "name": "abi_encode_t_address_to_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "8589:5:66", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "8596:3:66", + "type": "" + } + ], + "src": "8546:108:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8715:53:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "8732:3:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8755:5:66" + } + ], + "functionName": { + "name": "cleanup_t_bytes32", + "nodeType": "YulIdentifier", + "src": "8737:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "8737:24:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8725:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "8725:37:66" + }, + "nodeType": "YulExpressionStatement", + "src": "8725:37:66" + } + ] + }, + "name": "abi_encode_t_bytes32_to_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "8703:5:66", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "8710:3:66", + "type": "" + } + ], + "src": "8660:108:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8859:73:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "8876:3:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "8881:6:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "8869:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "8869:19:66" + }, + "nodeType": "YulExpressionStatement", + "src": "8869:19:66" + }, + { + "nodeType": "YulAssignment", + "src": "8897:29:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "8916:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8921:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8912:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "8912:14:66" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "8897:11:66" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_bytes_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "8831:3:66", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "8836:6:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "8847:11:66", + "type": "" + } + ], + "src": "8774:158:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9018:273:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "9028:52:66", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "9074:5:66" + } + ], + "functionName": { + "name": "array_length_t_bytes_memory_ptr", + "nodeType": "YulIdentifier", + "src": "9042:31:66" + }, + "nodeType": "YulFunctionCall", + "src": "9042:38:66" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "9032:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "9089:67:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "9144:3:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "9149:6:66" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_bytes_memory_ptr", + "nodeType": "YulIdentifier", + "src": "9096:47:66" + }, + "nodeType": "YulFunctionCall", + "src": "9096:60:66" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "9089:3:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "9204:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9211:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9200:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "9200:16:66" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "9218:3:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "9223:6:66" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nodeType": "YulIdentifier", + "src": "9165:34:66" + }, + "nodeType": "YulFunctionCall", + "src": "9165:65:66" + }, + "nodeType": "YulExpressionStatement", + "src": "9165:65:66" + }, + { + "nodeType": "YulAssignment", + "src": "9239:46:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "9250:3:66" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "9277:6:66" + } + ], + "functionName": { + "name": "round_up_to_mul_of_32", + "nodeType": "YulIdentifier", + "src": "9255:21:66" + }, + "nodeType": "YulFunctionCall", + "src": "9255:29:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9246:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "9246:39:66" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "9239:3:66" + } + ] + } + ] + }, + "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "8999:5:66", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "9006:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "9014:3:66", + "type": "" + } + ], + "src": "8938:353:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9515:857:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "9525:26:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "9541:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9546:4:66", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9537:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "9537:14:66" + }, + "variables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "9529:4:66", + "type": "" + } + ] + }, + { + "nodeType": "YulBlock", + "src": "9561:175:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "9611:43:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "9641:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9648:4:66", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9637:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "9637:16:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "9631:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "9631:23:66" + }, + "variables": [ + { + "name": "memberValue0", + "nodeType": "YulTypedName", + "src": "9615:12:66", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "memberValue0", + "nodeType": "YulIdentifier", + "src": "9697:12:66" + }, + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "9715:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9720:4:66", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9711:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "9711:14:66" + } + ], + "functionName": { + "name": "abi_encode_t_uint8_to_t_uint8", + "nodeType": "YulIdentifier", + "src": "9667:29:66" + }, + "nodeType": "YulFunctionCall", + "src": "9667:59:66" + }, + "nodeType": "YulExpressionStatement", + "src": "9667:59:66" + } + ] + }, + { + "nodeType": "YulBlock", + "src": "9746:170:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "9787:43:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "9817:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9824:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9813:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "9813:16:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "9807:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "9807:23:66" + }, + "variables": [ + { + "name": "memberValue0", + "nodeType": "YulTypedName", + "src": "9791:12:66", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "memberValue0", + "nodeType": "YulIdentifier", + "src": "9877:12:66" + }, + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "9895:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9900:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9891:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "9891:14:66" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address", + "nodeType": "YulIdentifier", + "src": "9843:33:66" + }, + "nodeType": "YulFunctionCall", + "src": "9843:63:66" + }, + "nodeType": "YulExpressionStatement", + "src": "9843:63:66" + } + ] + }, + { + "nodeType": "YulBlock", + "src": "9926:171:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "9968:43:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "9998:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10005:4:66", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9994:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "9994:16:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "9988:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "9988:23:66" + }, + "variables": [ + { + "name": "memberValue0", + "nodeType": "YulTypedName", + "src": "9972:12:66", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "memberValue0", + "nodeType": "YulIdentifier", + "src": "10058:12:66" + }, + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "10076:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10081:4:66", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10072:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "10072:14:66" + } + ], + "functionName": { + "name": "abi_encode_t_bytes32_to_t_bytes32", + "nodeType": "YulIdentifier", + "src": "10024:33:66" + }, + "nodeType": "YulFunctionCall", + "src": "10024:63:66" + }, + "nodeType": "YulExpressionStatement", + "src": "10024:63:66" + } + ] + }, + { + "nodeType": "YulBlock", + "src": "10107:238:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "10147:43:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "10177:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10184:4:66", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10173:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "10173:16:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "10167:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "10167:23:66" + }, + "variables": [ + { + "name": "memberValue0", + "nodeType": "YulTypedName", + "src": "10151:12:66", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "10215:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10220:4:66", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10211:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "10211:14:66" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "10231:4:66" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "10237:3:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "10227:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "10227:14:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10204:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "10204:38:66" + }, + "nodeType": "YulExpressionStatement", + "src": "10204:38:66" + }, + { + "nodeType": "YulAssignment", + "src": "10255:79:66", + "value": { + "arguments": [ + { + "name": "memberValue0", + "nodeType": "YulIdentifier", + "src": "10315:12:66" + }, + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "10329:4:66" + } + ], + "functionName": { + "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr", + "nodeType": "YulIdentifier", + "src": "10263:51:66" + }, + "nodeType": "YulFunctionCall", + "src": "10263:71:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "10255:4:66" + } + ] + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10355:11:66", + "value": { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "10362:4:66" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "10355:3:66" + } + ] + } + ] + }, + "name": "abi_encode_t_struct$_DepositRecord_$2679_memory_ptr_to_t_struct$_DepositRecord_$2679_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "9494:5:66", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "9501:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "9510:3:66", + "type": "" + } + ], + "src": "9379:993:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10538:237:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "10548:26:66", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10560:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10571:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10556:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "10556:18:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "10548:4:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10595:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10606:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10591:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "10591:17:66" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "10614:4:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10620:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "10610:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "10610:20:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "10584:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "10584:47:66" + }, + "nodeType": "YulExpressionStatement", + "src": "10584:47:66" + }, + { + "nodeType": "YulAssignment", + "src": "10640:128:66", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "10754:6:66" + }, + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "10763:4:66" + } + ], + "functionName": { + "name": "abi_encode_t_struct$_DepositRecord_$2679_memory_ptr_to_t_struct$_DepositRecord_$2679_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "10648:105:66" + }, + "nodeType": "YulFunctionCall", + "src": "10648:120:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "10640:4:66" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_struct$_DepositRecord_$2679_memory_ptr__to_t_struct$_DepositRecord_$2679_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "10510:9:66", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "10522:6:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "10533:4:66", + "type": "" + } + ], + "src": "10378:397:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10823:78:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "10879:16:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10888:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10891:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "10881:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "10881:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "10881:12:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "10846:5:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "10870:5:66" + } + ], + "functionName": { + "name": "cleanup_t_bytes4", + "nodeType": "YulIdentifier", + "src": "10853:16:66" + }, + "nodeType": "YulFunctionCall", + "src": "10853:23:66" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "10843:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "10843:34:66" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "10836:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "10836:42:66" + }, + "nodeType": "YulIf", + "src": "10833:62:66" + } + ] + }, + "name": "validator_revert_t_bytes4", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "10816:5:66", + "type": "" + } + ], + "src": "10781:120:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10958:86:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "10968:29:66", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "10990:6:66" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "10977:12:66" + }, + "nodeType": "YulFunctionCall", + "src": "10977:20:66" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "10968:5:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "11032:5:66" + } + ], + "functionName": { + "name": "validator_revert_t_bytes4", + "nodeType": "YulIdentifier", + "src": "11006:25:66" + }, + "nodeType": "YulFunctionCall", + "src": "11006:32:66" + }, + "nodeType": "YulExpressionStatement", + "src": "11006:32:66" + } + ] + }, + "name": "abi_decode_t_bytes4", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "10936:6:66", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "10944:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "10952:5:66", + "type": "" + } + ], + "src": "10907:137:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11165:646:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "11212:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "11214:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "11214:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "11214:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "11186:7:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11195:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "11182:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "11182:23:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11207:3:66", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "11178:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "11178:33:66" + }, + "nodeType": "YulIf", + "src": "11175:120:66" + }, + { + "nodeType": "YulBlock", + "src": "11305:117:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "11320:15:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11334:1:66", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "11324:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11349:63:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11384:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "11395:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11380:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "11380:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "11404:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_bytes32", + "nodeType": "YulIdentifier", + "src": "11359:20:66" + }, + "nodeType": "YulFunctionCall", + "src": "11359:53:66" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "11349:6:66" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "11432:118:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "11447:16:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11461:2:66", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "11451:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11477:63:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11512:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "11523:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11508:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "11508:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "11532:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nodeType": "YulIdentifier", + "src": "11487:20:66" + }, + "nodeType": "YulFunctionCall", + "src": "11487:53:66" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "11477:6:66" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "11560:117:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "11575:16:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11589:2:66", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "11579:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11605:62:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11639:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "11650:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11635:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "11635:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "11659:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_bytes4", + "nodeType": "YulIdentifier", + "src": "11615:19:66" + }, + "nodeType": "YulFunctionCall", + "src": "11615:52:66" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "11605:6:66" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "11687:117:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "11702:16:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11716:2:66", + "type": "", + "value": "96" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "11706:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11732:62:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11766:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "11777:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11762:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "11762:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "11786:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_bytes4", + "nodeType": "YulIdentifier", + "src": "11742:19:66" + }, + "nodeType": "YulFunctionCall", + "src": "11742:52:66" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "11732:6:66" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_addresst_bytes4t_bytes4", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "11111:9:66", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "11122:7:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "11134:6:66", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "11142:6:66", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "11150:6:66", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "11158:6:66", + "type": "" + } + ], + "src": "11050:761:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11883:263:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "11929:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "11931:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "11931:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "11931:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "11904:7:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11913:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "11900:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "11900:23:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11925:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "11896:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "11896:32:66" + }, + "nodeType": "YulIf", + "src": "11893:119:66" + }, + { + "nodeType": "YulBlock", + "src": "12022:117:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "12037:15:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12051:1:66", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "12041:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "12066:63:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12101:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "12112:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12097:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "12097:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "12121:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_bytes32", + "nodeType": "YulIdentifier", + "src": "12076:20:66" + }, + "nodeType": "YulFunctionCall", + "src": "12076:53:66" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "12066:6:66" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "11853:9:66", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "11864:7:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "11876:6:66", + "type": "" + } + ], + "src": "11817:329:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12254:570:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "12300:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "12302:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "12302:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "12302:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "12275:7:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12284:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "12271:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "12271:23:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12296:2:66", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "12267:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "12267:32:66" + }, + "nodeType": "YulIf", + "src": "12264:119:66" + }, + { + "nodeType": "YulBlock", + "src": "12393:117:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "12408:15:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12422:1:66", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "12412:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "12437:63:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12472:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "12483:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12468:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "12468:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "12492:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_bytes32", + "nodeType": "YulIdentifier", + "src": "12447:20:66" + }, + "nodeType": "YulFunctionCall", + "src": "12447:53:66" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "12437:6:66" + } + ] + } + ] + }, + { + "nodeType": "YulBlock", + "src": "12520:297:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "12535:46:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12566:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12577:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12562:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "12562:18:66" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "12549:12:66" + }, + "nodeType": "YulFunctionCall", + "src": "12549:32:66" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "12539:6:66", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12628:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulIdentifier", + "src": "12630:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "12630:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "12630:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "12600:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12608:18:66", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "12597:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "12597:30:66" + }, + "nodeType": "YulIf", + "src": "12594:117:66" + }, + { + "nodeType": "YulAssignment", + "src": "12725:82:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12779:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "12790:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12775:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "12775:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "12799:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_bytes_calldata_ptr", + "nodeType": "YulIdentifier", + "src": "12743:31:66" + }, + "nodeType": "YulFunctionCall", + "src": "12743:64:66" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "12725:6:66" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "12733:6:66" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_bytes_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "12208:9:66", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "12219:7:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "12231:6:66", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "12239:6:66", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "12247:6:66", + "type": "" + } + ], + "src": "12152:672:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12928:124:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "12938:26:66", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12950:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12961:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12946:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "12946:18:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "12938:4:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "13018:6:66" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13031:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13042:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13027:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "13027:17:66" + } + ], + "functionName": { + "name": "abi_encode_t_bytes32_to_t_bytes32_fromStack", + "nodeType": "YulIdentifier", + "src": "12974:43:66" + }, + "nodeType": "YulFunctionCall", + "src": "12974:71:66" + }, + "nodeType": "YulExpressionStatement", + "src": "12974:71:66" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "12900:9:66", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "12912:6:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "12923:4:66", + "type": "" + } + ], + "src": "12830:222:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13103:32:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "13113:16:66", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "13124:5:66" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "13113:7:66" + } + ] + } + ] + }, + "name": "cleanup_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "13085:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "13095:7:66", + "type": "" + } + ], + "src": "13058:77:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13184:79:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "13241:16:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13250:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13253:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "13243:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "13243:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "13243:12:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "13207:5:66" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "13232:5:66" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "13214:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "13214:24:66" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "13204:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "13204:35:66" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "13197:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "13197:43:66" + }, + "nodeType": "YulIf", + "src": "13194:63:66" + } + ] + }, + "name": "validator_revert_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "13177:5:66", + "type": "" + } + ], + "src": "13141:122:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13321:87:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "13331:29:66", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "13353:6:66" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "13340:12:66" + }, + "nodeType": "YulFunctionCall", + "src": "13340:20:66" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "13331:5:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "13396:5:66" + } + ], + "functionName": { + "name": "validator_revert_t_uint256", + "nodeType": "YulIdentifier", + "src": "13369:26:66" + }, + "nodeType": "YulFunctionCall", + "src": "13369:33:66" + }, + "nodeType": "YulExpressionStatement", + "src": "13369:33:66" + } + ] + }, + "name": "abi_decode_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "13299:6:66", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "13307:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "13315:5:66", + "type": "" + } + ], + "src": "13269:139:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13480:263:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "13526:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "13528:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "13528:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "13528:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "13501:7:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13510:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "13497:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "13497:23:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13522:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "13493:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "13493:32:66" + }, + "nodeType": "YulIf", + "src": "13490:119:66" + }, + { + "nodeType": "YulBlock", + "src": "13619:117:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "13634:15:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13648:1:66", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "13638:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "13663:63:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13698:9:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "13709:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13694:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "13694:22:66" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "13718:7:66" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "13673:20:66" + }, + "nodeType": "YulFunctionCall", + "src": "13673:53:66" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "13663:6:66" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "13450:9:66", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "13461:7:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "13473:6:66", + "type": "" + } + ], + "src": "13414:329:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13777:152:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13794:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13797:77:66", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13787:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "13787:88:66" + }, + "nodeType": "YulExpressionStatement", + "src": "13787:88:66" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13891:1:66", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13894:4:66", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13884:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "13884:15:66" + }, + "nodeType": "YulExpressionStatement", + "src": "13884:15:66" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13915:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13918:4:66", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "13908:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "13908:15:66" + }, + "nodeType": "YulExpressionStatement", + "src": "13908:15:66" + } + ] + }, + "name": "panic_error_0x11", + "nodeType": "YulFunctionDefinition", + "src": "13749:180:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13979:147:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "13989:25:66", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "14012:1:66" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "13994:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "13994:20:66" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "13989:1:66" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "14023:25:66", + "value": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "14046:1:66" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "14028:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "14028:20:66" + }, + "variableNames": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "14023:1:66" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "14057:16:66", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "14068:1:66" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "14071:1:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14064:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "14064:9:66" + }, + "variableNames": [ + { + "name": "sum", + "nodeType": "YulIdentifier", + "src": "14057:3:66" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14097:22:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "14099:16:66" + }, + "nodeType": "YulFunctionCall", + "src": "14099:18:66" + }, + "nodeType": "YulExpressionStatement", + "src": "14099:18:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "14089:1:66" + }, + { + "name": "sum", + "nodeType": "YulIdentifier", + "src": "14092:3:66" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "14086:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "14086:10:66" + }, + "nodeType": "YulIf", + "src": "14083:36:66" + } + ] + }, + "name": "checked_add_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "13966:1:66", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "13969:1:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "sum", + "nodeType": "YulTypedName", + "src": "13975:3:66", + "type": "" + } + ], + "src": "13935:191:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14221:28:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14238:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14241:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "14231:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "14231:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "14231:12:66" + } + ] + }, + "name": "revert_error_7678404c0552a58cf14944d1a786cf4c81aab3563e2735cb332aee47bbb57c4a", + "nodeType": "YulFunctionDefinition", + "src": "14132:117:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14344:28:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14361:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14364:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "14354:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "14354:12:66" + }, + "nodeType": "YulExpressionStatement", + "src": "14354:12:66" + } + ] + }, + "name": "revert_error_46e3e63c93837e9efa638abb3b4e76ced8c11259a873f1381a0abdf6ae6a823c", + "nodeType": "YulFunctionDefinition", + "src": "14255:117:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14504:343:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "14542:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_7678404c0552a58cf14944d1a786cf4c81aab3563e2735cb332aee47bbb57c4a", + "nodeType": "YulIdentifier", + "src": "14544:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "14544:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "14544:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "startIndex", + "nodeType": "YulIdentifier", + "src": "14520:10:66" + }, + { + "name": "endIndex", + "nodeType": "YulIdentifier", + "src": "14532:8:66" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "14517:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "14517:24:66" + }, + "nodeType": "YulIf", + "src": "14514:111:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14658:83:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_46e3e63c93837e9efa638abb3b4e76ced8c11259a873f1381a0abdf6ae6a823c", + "nodeType": "YulIdentifier", + "src": "14660:77:66" + }, + "nodeType": "YulFunctionCall", + "src": "14660:79:66" + }, + "nodeType": "YulExpressionStatement", + "src": "14660:79:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "endIndex", + "nodeType": "YulIdentifier", + "src": "14640:8:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "14650:6:66" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "14637:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "14637:20:66" + }, + "nodeType": "YulIf", + "src": "14634:107:66" + }, + { + "nodeType": "YulAssignment", + "src": "14750:44:66", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "14767:6:66" + }, + { + "arguments": [ + { + "name": "startIndex", + "nodeType": "YulIdentifier", + "src": "14779:10:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14791:1:66", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "14775:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "14775:18:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14763:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "14763:31:66" + }, + "variableNames": [ + { + "name": "offsetOut", + "nodeType": "YulIdentifier", + "src": "14750:9:66" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "14803:38:66", + "value": { + "arguments": [ + { + "name": "endIndex", + "nodeType": "YulIdentifier", + "src": "14820:8:66" + }, + { + "name": "startIndex", + "nodeType": "YulIdentifier", + "src": "14830:10:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "14816:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "14816:25:66" + }, + "variableNames": [ + { + "name": "lengthOut", + "nodeType": "YulIdentifier", + "src": "14803:9:66" + } + ] + } + ] + }, + "name": "calldata_array_index_range_access_t_bytes_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "14442:6:66", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "14450:6:66", + "type": "" + }, + { + "name": "startIndex", + "nodeType": "YulTypedName", + "src": "14458:10:66", + "type": "" + }, + { + "name": "endIndex", + "nodeType": "YulTypedName", + "src": "14470:8:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "offsetOut", + "nodeType": "YulTypedName", + "src": "14483:9:66", + "type": "" + }, + { + "name": "lengthOut", + "nodeType": "YulTypedName", + "src": "14494:9:66", + "type": "" + } + ], + "src": "14378:469:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14949:73:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "14966:3:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "14971:6:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14959:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "14959:19:66" + }, + "nodeType": "YulExpressionStatement", + "src": "14959:19:66" + }, + { + "nodeType": "YulAssignment", + "src": "14987:29:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "15006:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15011:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15002:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "15002:14:66" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "14987:11:66" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "14921:3:66", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "14926:6:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "14937:11:66", + "type": "" + } + ], + "src": "14853:169:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15134:124:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "15156:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15164:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15152:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "15152:14:66" + }, + { + "hexValue": "70726f766964656420636f6e747261637441646472657373206973206e6f7420", + "kind": "string", + "nodeType": "YulLiteral", + "src": "15168:34:66", + "type": "", + "value": "provided contractAddress is not " + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "15145:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "15145:58:66" + }, + "nodeType": "YulExpressionStatement", + "src": "15145:58:66" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "15224:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15232:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15220:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "15220:15:66" + }, + { + "hexValue": "77686974656c6973746564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "15237:13:66", + "type": "", + "value": "whitelisted" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "15213:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "15213:38:66" + }, + "nodeType": "YulExpressionStatement", + "src": "15213:38:66" + } + ] + }, + "name": "store_literal_in_memory_b35e1d4b1392122547a6ef1db8ad0b6549b5cc8820bfc81437cf78f8b1333b05", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "15126:6:66", + "type": "" + } + ], + "src": "15028:230:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15410:220:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "15420:74:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "15486:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15491:2:66", + "type": "", + "value": "43" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "15427:58:66" + }, + "nodeType": "YulFunctionCall", + "src": "15427:67:66" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "15420:3:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "15592:3:66" + } + ], + "functionName": { + "name": "store_literal_in_memory_b35e1d4b1392122547a6ef1db8ad0b6549b5cc8820bfc81437cf78f8b1333b05", + "nodeType": "YulIdentifier", + "src": "15503:88:66" + }, + "nodeType": "YulFunctionCall", + "src": "15503:93:66" + }, + "nodeType": "YulExpressionStatement", + "src": "15503:93:66" + }, + { + "nodeType": "YulAssignment", + "src": "15605:19:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "15616:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15621:2:66", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15612:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "15612:12:66" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "15605:3:66" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_b35e1d4b1392122547a6ef1db8ad0b6549b5cc8820bfc81437cf78f8b1333b05_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "15398:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "15406:3:66", + "type": "" + } + ], + "src": "15264:366:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15807:248:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "15817:26:66", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15829:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15840:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15825:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "15825:18:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "15817:4:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15864:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15875:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15860:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "15860:17:66" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "15883:4:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15889:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "15879:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "15879:20:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "15853:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "15853:47:66" + }, + "nodeType": "YulExpressionStatement", + "src": "15853:47:66" + }, + { + "nodeType": "YulAssignment", + "src": "15909:139:66", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "16043:4:66" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_b35e1d4b1392122547a6ef1db8ad0b6549b5cc8820bfc81437cf78f8b1333b05_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "15917:124:66" + }, + "nodeType": "YulFunctionCall", + "src": "15917:131:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "15909:4:66" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_b35e1d4b1392122547a6ef1db8ad0b6549b5cc8820bfc81437cf78f8b1333b05__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "15787:9:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "15802:4:66", + "type": "" + } + ], + "src": "15636:419:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16107:32:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "16117:16:66", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "16128:5:66" + }, + "variableNames": [ + { + "name": "aligned", + "nodeType": "YulIdentifier", + "src": "16117:7:66" + } + ] + } + ] + }, + "name": "leftAlign_t_bytes4", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "16089:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "aligned", + "nodeType": "YulTypedName", + "src": "16099:7:66", + "type": "" + } + ], + "src": "16061:78:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16226:72:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "16243:3:66" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "16284:5:66" + } + ], + "functionName": { + "name": "cleanup_t_bytes4", + "nodeType": "YulIdentifier", + "src": "16267:16:66" + }, + "nodeType": "YulFunctionCall", + "src": "16267:23:66" + } + ], + "functionName": { + "name": "leftAlign_t_bytes4", + "nodeType": "YulIdentifier", + "src": "16248:18:66" + }, + "nodeType": "YulFunctionCall", + "src": "16248:43:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16236:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "16236:56:66" + }, + "nodeType": "YulExpressionStatement", + "src": "16236:56:66" + } + ] + }, + "name": "abi_encode_t_bytes4_to_t_bytes4_nonPadded_inplace_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "16214:5:66", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "16221:3:66", + "type": "" + } + ], + "src": "16145:153:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16417:34:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "16427:18:66", + "value": { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "16442:3:66" + }, + "variableNames": [ + { + "name": "updated_pos", + "nodeType": "YulIdentifier", + "src": "16427:11:66" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "16389:3:66", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "16394:6:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nodeType": "YulTypedName", + "src": "16405:11:66", + "type": "" + } + ], + "src": "16304:147:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16565:278:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "16575:52:66", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "16621:5:66" + } + ], + "functionName": { + "name": "array_length_t_bytes_memory_ptr", + "nodeType": "YulIdentifier", + "src": "16589:31:66" + }, + "nodeType": "YulFunctionCall", + "src": "16589:38:66" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "16579:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "16636:95:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "16719:3:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "16724:6:66" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "16643:75:66" + }, + "nodeType": "YulFunctionCall", + "src": "16643:88:66" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "16636:3:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "16779:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16786:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16775:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "16775:16:66" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "16793:3:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "16798:6:66" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nodeType": "YulIdentifier", + "src": "16740:34:66" + }, + "nodeType": "YulFunctionCall", + "src": "16740:65:66" + }, + "nodeType": "YulExpressionStatement", + "src": "16740:65:66" + }, + { + "nodeType": "YulAssignment", + "src": "16814:23:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "16825:3:66" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "16830:6:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16821:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "16821:16:66" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "16814:3:66" + } + ] + } + ] + }, + "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "16546:5:66", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "16553:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "16561:3:66", + "type": "" + } + ], + "src": "16457:386:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17009:247:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "17080:6:66" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "17089:3:66" + } + ], + "functionName": { + "name": "abi_encode_t_bytes4_to_t_bytes4_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "17020:59:66" + }, + "nodeType": "YulFunctionCall", + "src": "17020:73:66" + }, + "nodeType": "YulExpressionStatement", + "src": "17020:73:66" + }, + { + "nodeType": "YulAssignment", + "src": "17102:18:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "17113:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17118:1:66", + "type": "", + "value": "4" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17109:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "17109:11:66" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "17102:3:66" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "17130:100:66", + "value": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "17217:6:66" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "17226:3:66" + } + ], + "functionName": { + "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "17137:79:66" + }, + "nodeType": "YulFunctionCall", + "src": "17137:93:66" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "17130:3:66" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "17240:10:66", + "value": { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "17247:3:66" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "17240:3:66" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_bytes4_t_bytes_memory_ptr__to_t_bytes4_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "16980:3:66", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "16986:6:66", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "16994:6:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "17005:3:66", + "type": "" + } + ], + "src": "16849:407:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17396:137:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "17407:100:66", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "17494:6:66" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "17503:3:66" + } + ], + "functionName": { + "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack", + "nodeType": "YulIdentifier", + "src": "17414:79:66" + }, + "nodeType": "YulFunctionCall", + "src": "17414:93:66" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "17407:3:66" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "17517:10:66", + "value": { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "17524:3:66" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "17517:3:66" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "17375:3:66", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "17381:6:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "17392:3:66", + "type": "" + } + ], + "src": "17262:271:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17645:119:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "17667:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17675:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17663:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "17663:14:66" + }, + { + "hexValue": "64656c656761746563616c6c20746f20636f6e74726163744164647265737320", + "kind": "string", + "nodeType": "YulLiteral", + "src": "17679:34:66", + "type": "", + "value": "delegatecall to contractAddress " + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "17656:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "17656:58:66" + }, + "nodeType": "YulExpressionStatement", + "src": "17656:58:66" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "17735:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17743:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17731:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "17731:15:66" + }, + { + "hexValue": "6661696c6564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "17748:8:66", + "type": "", + "value": "failed" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "17724:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "17724:33:66" + }, + "nodeType": "YulExpressionStatement", + "src": "17724:33:66" + } + ] + }, + "name": "store_literal_in_memory_51f8dc53a1a1265d7e1a33da60330d21af9ee076b3a370b08330721ff4064ac2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "17637:6:66", + "type": "" + } + ], + "src": "17539:225:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17916:220:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "17926:74:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "17992:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17997:2:66", + "type": "", + "value": "38" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "17933:58:66" + }, + "nodeType": "YulFunctionCall", + "src": "17933:67:66" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "17926:3:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "18098:3:66" + } + ], + "functionName": { + "name": "store_literal_in_memory_51f8dc53a1a1265d7e1a33da60330d21af9ee076b3a370b08330721ff4064ac2", + "nodeType": "YulIdentifier", + "src": "18009:88:66" + }, + "nodeType": "YulFunctionCall", + "src": "18009:93:66" + }, + "nodeType": "YulExpressionStatement", + "src": "18009:93:66" + }, + { + "nodeType": "YulAssignment", + "src": "18111:19:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "18122:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18127:2:66", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18118:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "18118:12:66" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "18111:3:66" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_51f8dc53a1a1265d7e1a33da60330d21af9ee076b3a370b08330721ff4064ac2_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "17904:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "17912:3:66", + "type": "" + } + ], + "src": "17770:366:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18313:248:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "18323:26:66", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18335:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18346:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18331:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "18331:18:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "18323:4:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18370:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18381:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18366:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "18366:17:66" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "18389:4:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18395:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "18385:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "18385:20:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18359:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "18359:47:66" + }, + "nodeType": "YulExpressionStatement", + "src": "18359:47:66" + }, + { + "nodeType": "YulAssignment", + "src": "18415:139:66", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "18549:4:66" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_51f8dc53a1a1265d7e1a33da60330d21af9ee076b3a370b08330721ff4064ac2_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "18423:124:66" + }, + "nodeType": "YulFunctionCall", + "src": "18423:131:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "18415:4:66" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_51f8dc53a1a1265d7e1a33da60330d21af9ee076b3a370b08330721ff4064ac2__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "18293:9:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "18308:4:66", + "type": "" + } + ], + "src": "18142:419:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18595:152:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18612:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18615:77:66", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18605:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "18605:88:66" + }, + "nodeType": "YulExpressionStatement", + "src": "18605:88:66" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18709:1:66", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18712:4:66", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18702:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "18702:15:66" + }, + "nodeType": "YulExpressionStatement", + "src": "18702:15:66" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18733:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18736:4:66", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "18726:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "18726:15:66" + }, + "nodeType": "YulExpressionStatement", + "src": "18726:15:66" + } + ] + }, + "name": "panic_error_0x41", + "nodeType": "YulFunctionDefinition", + "src": "18567:180:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18781:152:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18798:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18801:77:66", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18791:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "18791:88:66" + }, + "nodeType": "YulExpressionStatement", + "src": "18791:88:66" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18895:1:66", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18898:4:66", + "type": "", + "value": "0x22" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18888:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "18888:15:66" + }, + "nodeType": "YulExpressionStatement", + "src": "18888:15:66" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18919:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18922:4:66", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "18912:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "18912:15:66" + }, + "nodeType": "YulExpressionStatement", + "src": "18912:15:66" + } + ] + }, + "name": "panic_error_0x22", + "nodeType": "YulFunctionDefinition", + "src": "18753:180:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18990:269:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "19000:22:66", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "19014:4:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19020:1:66", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "19010:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "19010:12:66" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "19000:6:66" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "19031:38:66", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "19061:4:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19067:1:66", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "19057:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "19057:12:66" + }, + "variables": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulTypedName", + "src": "19035:18:66", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19108:51:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "19122:27:66", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "19136:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19144:4:66", + "type": "", + "value": "0x7f" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "19132:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "19132:17:66" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "19122:6:66" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "19088:18:66" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "19081:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "19081:26:66" + }, + "nodeType": "YulIf", + "src": "19078:81:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19211:42:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x22", + "nodeType": "YulIdentifier", + "src": "19225:16:66" + }, + "nodeType": "YulFunctionCall", + "src": "19225:18:66" + }, + "nodeType": "YulExpressionStatement", + "src": "19225:18:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "19175:18:66" + }, + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "19198:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19206:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "19195:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "19195:14:66" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "19172:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "19172:38:66" + }, + "nodeType": "YulIf", + "src": "19169:84:66" + } + ] + }, + "name": "extract_byte_array_length", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nodeType": "YulTypedName", + "src": "18974:4:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "18983:6:66", + "type": "" + } + ], + "src": "18939:320:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19318:87:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "19328:11:66", + "value": { + "name": "ptr", + "nodeType": "YulIdentifier", + "src": "19336:3:66" + }, + "variableNames": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "19328:4:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19356:1:66", + "type": "", + "value": "0" + }, + { + "name": "ptr", + "nodeType": "YulIdentifier", + "src": "19359:3:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19349:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "19349:14:66" + }, + "nodeType": "YulExpressionStatement", + "src": "19349:14:66" + }, + { + "nodeType": "YulAssignment", + "src": "19372:26:66", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19390:1:66", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19393:4:66", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "keccak256", + "nodeType": "YulIdentifier", + "src": "19380:9:66" + }, + "nodeType": "YulFunctionCall", + "src": "19380:18:66" + }, + "variableNames": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "19372:4:66" + } + ] + } + ] + }, + "name": "array_dataslot_t_bytes_storage", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "ptr", + "nodeType": "YulTypedName", + "src": "19305:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "data", + "nodeType": "YulTypedName", + "src": "19313:4:66", + "type": "" + } + ], + "src": "19265:140:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19455:49:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "19465:33:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "19483:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19490:2:66", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19479:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "19479:14:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19495:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "19475:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "19475:23:66" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "19465:6:66" + } + ] + } + ] + }, + "name": "divide_by_32_ceil", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "19438:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "result", + "nodeType": "YulTypedName", + "src": "19448:6:66", + "type": "" + } + ], + "src": "19411:93:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19563:54:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "19573:37:66", + "value": { + "arguments": [ + { + "name": "bits", + "nodeType": "YulIdentifier", + "src": "19598:4:66" + }, + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "19604:5:66" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "19594:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "19594:16:66" + }, + "variableNames": [ + { + "name": "newValue", + "nodeType": "YulIdentifier", + "src": "19573:8:66" + } + ] + } + ] + }, + "name": "shift_left_dynamic", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "bits", + "nodeType": "YulTypedName", + "src": "19538:4:66", + "type": "" + }, + { + "name": "value", + "nodeType": "YulTypedName", + "src": "19544:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "newValue", + "nodeType": "YulTypedName", + "src": "19554:8:66", + "type": "" + } + ], + "src": "19510:107:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19699:317:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "19709:35:66", + "value": { + "arguments": [ + { + "name": "shiftBytes", + "nodeType": "YulIdentifier", + "src": "19730:10:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19742:1:66", + "type": "", + "value": "8" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "19726:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "19726:18:66" + }, + "variables": [ + { + "name": "shiftBits", + "nodeType": "YulTypedName", + "src": "19713:9:66", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "19753:109:66", + "value": { + "arguments": [ + { + "name": "shiftBits", + "nodeType": "YulIdentifier", + "src": "19784:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19795:66:66", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "shift_left_dynamic", + "nodeType": "YulIdentifier", + "src": "19765:18:66" + }, + "nodeType": "YulFunctionCall", + "src": "19765:97:66" + }, + "variables": [ + { + "name": "mask", + "nodeType": "YulTypedName", + "src": "19757:4:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "19871:51:66", + "value": { + "arguments": [ + { + "name": "shiftBits", + "nodeType": "YulIdentifier", + "src": "19902:9:66" + }, + { + "name": "toInsert", + "nodeType": "YulIdentifier", + "src": "19913:8:66" + } + ], + "functionName": { + "name": "shift_left_dynamic", + "nodeType": "YulIdentifier", + "src": "19883:18:66" + }, + "nodeType": "YulFunctionCall", + "src": "19883:39:66" + }, + "variableNames": [ + { + "name": "toInsert", + "nodeType": "YulIdentifier", + "src": "19871:8:66" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "19931:30:66", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "19944:5:66" + }, + { + "arguments": [ + { + "name": "mask", + "nodeType": "YulIdentifier", + "src": "19955:4:66" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "19951:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "19951:9:66" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "19940:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "19940:21:66" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "19931:5:66" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "19970:40:66", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "19983:5:66" + }, + { + "arguments": [ + { + "name": "toInsert", + "nodeType": "YulIdentifier", + "src": "19994:8:66" + }, + { + "name": "mask", + "nodeType": "YulIdentifier", + "src": "20004:4:66" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "19990:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "19990:19:66" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "19980:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "19980:30:66" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "19970:6:66" + } + ] + } + ] + }, + "name": "update_byte_slice_dynamic32", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "19660:5:66", + "type": "" + }, + { + "name": "shiftBytes", + "nodeType": "YulTypedName", + "src": "19667:10:66", + "type": "" + }, + { + "name": "toInsert", + "nodeType": "YulTypedName", + "src": "19679:8:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "result", + "nodeType": "YulTypedName", + "src": "19692:6:66", + "type": "" + } + ], + "src": "19623:393:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20054:28:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "20064:12:66", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "20071:5:66" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "20064:3:66" + } + ] + } + ] + }, + "name": "identity", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "20040:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nodeType": "YulTypedName", + "src": "20050:3:66", + "type": "" + } + ], + "src": "20022:60:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20148:82:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "20158:66:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "20216:5:66" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "20198:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "20198:24:66" + } + ], + "functionName": { + "name": "identity", + "nodeType": "YulIdentifier", + "src": "20189:8:66" + }, + "nodeType": "YulFunctionCall", + "src": "20189:34:66" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "20171:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "20171:53:66" + }, + "variableNames": [ + { + "name": "converted", + "nodeType": "YulIdentifier", + "src": "20158:9:66" + } + ] + } + ] + }, + "name": "convert_t_uint256_to_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "20128:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "converted", + "nodeType": "YulTypedName", + "src": "20138:9:66", + "type": "" + } + ], + "src": "20088:142:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20283:28:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "20293:12:66", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "20300:5:66" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "20293:3:66" + } + ] + } + ] + }, + "name": "prepare_store_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "20269:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nodeType": "YulTypedName", + "src": "20279:3:66", + "type": "" + } + ], + "src": "20236:75:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20393:193:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "20403:63:66", + "value": { + "arguments": [ + { + "name": "value_0", + "nodeType": "YulIdentifier", + "src": "20458:7:66" + } + ], + "functionName": { + "name": "convert_t_uint256_to_t_uint256", + "nodeType": "YulIdentifier", + "src": "20427:30:66" + }, + "nodeType": "YulFunctionCall", + "src": "20427:39:66" + }, + "variables": [ + { + "name": "convertedValue_0", + "nodeType": "YulTypedName", + "src": "20407:16:66", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "20482:4:66" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "20522:4:66" + } + ], + "functionName": { + "name": "sload", + "nodeType": "YulIdentifier", + "src": "20516:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "20516:11:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "20529:6:66" + }, + { + "arguments": [ + { + "name": "convertedValue_0", + "nodeType": "YulIdentifier", + "src": "20561:16:66" + } + ], + "functionName": { + "name": "prepare_store_t_uint256", + "nodeType": "YulIdentifier", + "src": "20537:23:66" + }, + "nodeType": "YulFunctionCall", + "src": "20537:41:66" + } + ], + "functionName": { + "name": "update_byte_slice_dynamic32", + "nodeType": "YulIdentifier", + "src": "20488:27:66" + }, + "nodeType": "YulFunctionCall", + "src": "20488:91:66" + } + ], + "functionName": { + "name": "sstore", + "nodeType": "YulIdentifier", + "src": "20475:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "20475:105:66" + }, + "nodeType": "YulExpressionStatement", + "src": "20475:105:66" + } + ] + }, + "name": "update_storage_value_t_uint256_to_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "slot", + "nodeType": "YulTypedName", + "src": "20370:4:66", + "type": "" + }, + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "20376:6:66", + "type": "" + }, + { + "name": "value_0", + "nodeType": "YulTypedName", + "src": "20384:7:66", + "type": "" + } + ], + "src": "20317:269:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20641:24:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "20651:8:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20658:1:66", + "type": "", + "value": "0" + }, + "variableNames": [ + { + "name": "ret", + "nodeType": "YulIdentifier", + "src": "20651:3:66" + } + ] + } + ] + }, + "name": "zero_value_for_split_t_uint256", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "ret", + "nodeType": "YulTypedName", + "src": "20637:3:66", + "type": "" + } + ], + "src": "20592:73:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20724:136:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "20734:46:66", + "value": { + "arguments": [], + "functionName": { + "name": "zero_value_for_split_t_uint256", + "nodeType": "YulIdentifier", + "src": "20748:30:66" + }, + "nodeType": "YulFunctionCall", + "src": "20748:32:66" + }, + "variables": [ + { + "name": "zero_0", + "nodeType": "YulTypedName", + "src": "20738:6:66", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "20833:4:66" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "20839:6:66" + }, + { + "name": "zero_0", + "nodeType": "YulIdentifier", + "src": "20847:6:66" + } + ], + "functionName": { + "name": "update_storage_value_t_uint256_to_t_uint256", + "nodeType": "YulIdentifier", + "src": "20789:43:66" + }, + "nodeType": "YulFunctionCall", + "src": "20789:65:66" + }, + "nodeType": "YulExpressionStatement", + "src": "20789:65:66" + } + ] + }, + "name": "storage_set_to_zero_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "slot", + "nodeType": "YulTypedName", + "src": "20710:4:66", + "type": "" + }, + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "20716:6:66", + "type": "" + } + ], + "src": "20671:189:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20916:136:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "20983:63:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "start", + "nodeType": "YulIdentifier", + "src": "21027:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21034:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "storage_set_to_zero_t_uint256", + "nodeType": "YulIdentifier", + "src": "20997:29:66" + }, + "nodeType": "YulFunctionCall", + "src": "20997:39:66" + }, + "nodeType": "YulExpressionStatement", + "src": "20997:39:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "start", + "nodeType": "YulIdentifier", + "src": "20936:5:66" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "20943:3:66" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "20933:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "20933:14:66" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "20948:26:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "20950:22:66", + "value": { + "arguments": [ + { + "name": "start", + "nodeType": "YulIdentifier", + "src": "20963:5:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20970:1:66", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20959:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "20959:13:66" + }, + "variableNames": [ + { + "name": "start", + "nodeType": "YulIdentifier", + "src": "20950:5:66" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "20930:2:66", + "statements": [] + }, + "src": "20926:120:66" + } + ] + }, + "name": "clear_storage_range_t_bytes1", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "start", + "nodeType": "YulTypedName", + "src": "20904:5:66", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "20911:3:66", + "type": "" + } + ], + "src": "20866:186:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "21136:463:66", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "21162:430:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "21176:53:66", + "value": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "21223:5:66" + } + ], + "functionName": { + "name": "array_dataslot_t_bytes_storage", + "nodeType": "YulIdentifier", + "src": "21192:30:66" + }, + "nodeType": "YulFunctionCall", + "src": "21192:37:66" + }, + "variables": [ + { + "name": "dataArea", + "nodeType": "YulTypedName", + "src": "21180:8:66", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "21242:63:66", + "value": { + "arguments": [ + { + "name": "dataArea", + "nodeType": "YulIdentifier", + "src": "21265:8:66" + }, + { + "arguments": [ + { + "name": "startIndex", + "nodeType": "YulIdentifier", + "src": "21293:10:66" + } + ], + "functionName": { + "name": "divide_by_32_ceil", + "nodeType": "YulIdentifier", + "src": "21275:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "21275:29:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21261:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "21261:44:66" + }, + "variables": [ + { + "name": "deleteStart", + "nodeType": "YulTypedName", + "src": "21246:11:66", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "21462:27:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "21464:23:66", + "value": { + "name": "dataArea", + "nodeType": "YulIdentifier", + "src": "21479:8:66" + }, + "variableNames": [ { - "expression": { - "argumentTypes": null, - "id": 7830, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 7820, - "name": "metadata", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7808, - "src": "7016:8:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 7823, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7799, - "src": "7033:4:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "endExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7827, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "hexValue": "3332", - "id": 7825, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7041:2:36", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_32_by_1", - "typeString": "int_const 32" - }, - "value": "32" - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "id": 7826, - "name": "lenMetadata", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7805, - "src": "7046:11:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "7041:16:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7828, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexRangeAccess", - "src": "7033:25:36", - "startExpression": { - "argumentTypes": null, - "hexValue": "3332", - "id": 7824, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7038:2:36", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_32_by_1", - "typeString": "int_const 32" - }, - "value": "32" - }, - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr_slice", - "typeString": "bytes calldata slice" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_calldata_ptr_slice", - "typeString": "bytes calldata slice" - } - ], - "id": 7822, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "7027:5:36", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", - "typeString": "type(bytes storage pointer)" - }, - "typeName": { - "id": 7821, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "7027:5:36", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 7829, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7027:32:36", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "src": "7016:43:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 7831, - "nodeType": "ExpressionStatement", - "src": "7016:43:36" - }, + "name": "deleteStart", + "nodeType": "YulIdentifier", + "src": "21464:11:66" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "startIndex", + "nodeType": "YulIdentifier", + "src": "21446:10:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21458:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "21443:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "21443:18:66" + }, + "nodeType": "YulIf", + "src": "21440:49:66" + }, + { + "expression": { + "arguments": [ + { + "name": "deleteStart", + "nodeType": "YulIdentifier", + "src": "21531:11:66" + }, + { + "arguments": [ { - "assignments": [7833], - "declarations": [ - { - "constant": false, - "id": 7833, - "mutability": "mutable", - "name": "contractAddress", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7892, - "src": "7070:23:36", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 7832, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "7070:7:36", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 7837, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 7834, - "name": "_resourceIDToContractAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7635, - "src": "7096:28:36", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", - "typeString": "mapping(bytes32 => address)" - } - }, - "id": 7836, - "indexExpression": { - "argumentTypes": null, - "id": 7835, - "name": "resourceID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7791, - "src": "7125:10:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7096:40:36", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "7070:66:36" + "name": "dataArea", + "nodeType": "YulIdentifier", + "src": "21548:8:66" }, { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 7839, - "name": "_contractWhitelist", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7651, - "src": "7154:18:36", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 7841, - "indexExpression": { - "argumentTypes": null, - "id": 7840, - "name": "contractAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7833, - "src": "7173:15:36", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7154:35:36", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "70726f766964656420636f6e747261637441646472657373206973206e6f742077686974656c6973746564", - "id": 7842, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7191:45:36", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_b35e1d4b1392122547a6ef1db8ad0b6549b5cc8820bfc81437cf78f8b1333b05", - "typeString": "literal_string \"provided contractAddress is not whitelisted\"" - }, - "value": "provided contractAddress is not whitelisted" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_b35e1d4b1392122547a6ef1db8ad0b6549b5cc8820bfc81437cf78f8b1333b05", - "typeString": "literal_string \"provided contractAddress is not whitelisted\"" - } - ], - "id": 7838, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "7146:7:36", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 7843, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7146:91:36", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 7844, - "nodeType": "ExpressionStatement", - "src": "7146:91:36" - }, + "arguments": [ + { + "name": "len", + "nodeType": "YulIdentifier", + "src": "21576:3:66" + } + ], + "functionName": { + "name": "divide_by_32_ceil", + "nodeType": "YulIdentifier", + "src": "21558:17:66" + }, + "nodeType": "YulFunctionCall", + "src": "21558:22:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21544:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "21544:37:66" + } + ], + "functionName": { + "name": "clear_storage_range_t_bytes1", + "nodeType": "YulIdentifier", + "src": "21502:28:66" + }, + "nodeType": "YulFunctionCall", + "src": "21502:80:66" + }, + "nodeType": "YulExpressionStatement", + "src": "21502:80:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "len", + "nodeType": "YulIdentifier", + "src": "21153:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21158:2:66", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "21150:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "21150:11:66" + }, + "nodeType": "YulIf", + "src": "21147:445:66" + } + ] + }, + "name": "clean_up_bytearray_end_slots_t_bytes_storage", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "21112:5:66", + "type": "" + }, + { + "name": "len", + "nodeType": "YulTypedName", + "src": "21119:3:66", + "type": "" + }, + { + "name": "startIndex", + "nodeType": "YulTypedName", + "src": "21124:10:66", + "type": "" + } + ], + "src": "21058:541:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "21668:54:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "21678:37:66", + "value": { + "arguments": [ + { + "name": "bits", + "nodeType": "YulIdentifier", + "src": "21703:4:66" + }, + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "21709:5:66" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "21699:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "21699:16:66" + }, + "variableNames": [ + { + "name": "newValue", + "nodeType": "YulIdentifier", + "src": "21678:8:66" + } + ] + } + ] + }, + "name": "shift_right_unsigned_dynamic", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "bits", + "nodeType": "YulTypedName", + "src": "21643:4:66", + "type": "" + }, + { + "name": "value", + "nodeType": "YulTypedName", + "src": "21649:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "newValue", + "nodeType": "YulTypedName", + "src": "21659:8:66", + "type": "" + } + ], + "src": "21605:117:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "21779:118:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "21789:68:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21838:1:66", + "type": "", + "value": "8" + }, + { + "name": "bytes", + "nodeType": "YulIdentifier", + "src": "21841:5:66" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "21834:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "21834:13:66" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21853:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "21849:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "21849:6:66" + } + ], + "functionName": { + "name": "shift_right_unsigned_dynamic", + "nodeType": "YulIdentifier", + "src": "21805:28:66" + }, + "nodeType": "YulFunctionCall", + "src": "21805:51:66" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "21801:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "21801:56:66" + }, + "variables": [ + { + "name": "mask", + "nodeType": "YulTypedName", + "src": "21793:4:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "21866:25:66", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "21880:4:66" + }, + { + "name": "mask", + "nodeType": "YulIdentifier", + "src": "21886:4:66" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "21876:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "21876:15:66" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "21866:6:66" + } + ] + } + ] + }, + "name": "mask_bytes_dynamic", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nodeType": "YulTypedName", + "src": "21756:4:66", + "type": "" + }, + { + "name": "bytes", + "nodeType": "YulTypedName", + "src": "21762:5:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "result", + "nodeType": "YulTypedName", + "src": "21772:6:66", + "type": "" + } + ], + "src": "21728:169:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "21983:214:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "22116:37:66", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "22143:4:66" + }, + { + "name": "len", + "nodeType": "YulIdentifier", + "src": "22149:3:66" + } + ], + "functionName": { + "name": "mask_bytes_dynamic", + "nodeType": "YulIdentifier", + "src": "22124:18:66" + }, + "nodeType": "YulFunctionCall", + "src": "22124:29:66" + }, + "variableNames": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "22116:4:66" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "22162:29:66", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "22173:4:66" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22183:1:66", + "type": "", + "value": "2" + }, + { + "name": "len", + "nodeType": "YulIdentifier", + "src": "22186:3:66" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "22179:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "22179:11:66" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "22170:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "22170:21:66" + }, + "variableNames": [ + { + "name": "used", + "nodeType": "YulIdentifier", + "src": "22162:4:66" + } + ] + } + ] + }, + "name": "extract_used_part_and_set_length_of_short_byte_array", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nodeType": "YulTypedName", + "src": "21964:4:66", + "type": "" + }, + { + "name": "len", + "nodeType": "YulTypedName", + "src": "21970:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "used", + "nodeType": "YulTypedName", + "src": "21978:4:66", + "type": "" + } + ], + "src": "21902:295:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "22292:1300:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "22303:50:66", + "value": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "22349:3:66" + } + ], + "functionName": { + "name": "array_length_t_bytes_memory_ptr", + "nodeType": "YulIdentifier", + "src": "22317:31:66" + }, + "nodeType": "YulFunctionCall", + "src": "22317:36:66" + }, + "variables": [ + { + "name": "newLen", + "nodeType": "YulTypedName", + "src": "22307:6:66", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "22438:22:66", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "22440:16:66" + }, + "nodeType": "YulFunctionCall", + "src": "22440:18:66" + }, + "nodeType": "YulExpressionStatement", + "src": "22440:18:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "22410:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22418:18:66", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "22407:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "22407:30:66" + }, + "nodeType": "YulIf", + "src": "22404:56:66" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "22470:52:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "22516:4:66" + } + ], + "functionName": { + "name": "sload", + "nodeType": "YulIdentifier", + "src": "22510:5:66" + }, + "nodeType": "YulFunctionCall", + "src": "22510:11:66" + } + ], + "functionName": { + "name": "extract_byte_array_length", + "nodeType": "YulIdentifier", + "src": "22484:25:66" + }, + "nodeType": "YulFunctionCall", + "src": "22484:38:66" + }, + "variables": [ + { + "name": "oldLen", + "nodeType": "YulTypedName", + "src": "22474:6:66", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "22614:4:66" + }, + { + "name": "oldLen", + "nodeType": "YulIdentifier", + "src": "22620:6:66" + }, + { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "22628:6:66" + } + ], + "functionName": { + "name": "clean_up_bytearray_end_slots_t_bytes_storage", + "nodeType": "YulIdentifier", + "src": "22569:44:66" + }, + "nodeType": "YulFunctionCall", + "src": "22569:66:66" + }, + "nodeType": "YulExpressionStatement", + "src": "22569:66:66" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "22645:18:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22662:1:66", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "srcOffset", + "nodeType": "YulTypedName", + "src": "22649:9:66", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "22673:17:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22686:4:66", + "type": "", + "value": "0x20" + }, + "variableNames": [ + { + "name": "srcOffset", + "nodeType": "YulIdentifier", + "src": "22673:9:66" + } + ] + }, + { + "cases": [ + { + "body": { + "nodeType": "YulBlock", + "src": "22737:610:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "22751:37:66", + "value": { + "arguments": [ { - "assignments": [7846], - "declarations": [ - { - "constant": false, - "id": 7846, - "mutability": "mutable", - "name": "sig", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7892, - "src": "7248:10:36", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "typeName": { - "id": 7845, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "7248:6:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 7850, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 7847, - "name": "_contractAddressToDepositFunctionSignature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7643, - "src": "7261:42:36", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bytes4_$", - "typeString": "mapping(address => bytes4)" - } - }, - "id": 7849, - "indexExpression": { - "argumentTypes": null, - "id": 7848, - "name": "contractAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7833, - "src": "7304:15:36", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7261:59:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "7248:72:36" + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "22770:6:66" }, { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "id": 7856, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 7851, - "name": "sig", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7846, - "src": "7334:3:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 7854, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7348:1:36", - "subdenomination": null, - "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": 7853, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "7341:6:36", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes4_$", - "typeString": "type(bytes4)" - }, - "typeName": { - "id": 7852, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "7341:6:36", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 7855, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7341:9:36", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "src": "7334:16:36", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 7878, - "nodeType": "IfStatement", - "src": "7330:242:36", - "trueBody": { - "id": 7877, - "nodeType": "Block", - "src": "7352:220:36", - "statements": [ - { - "assignments": [7858], - "declarations": [ - { - "constant": false, - "id": 7858, - "mutability": "mutable", - "name": "callData", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7877, - "src": "7366:21:36", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 7857, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "7366:5:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 7864, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 7861, - "name": "sig", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7846, - "src": "7413:3:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - { - "argumentTypes": null, - "id": 7862, - "name": "metadata", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7808, - "src": "7418:8:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "expression": { - "argumentTypes": null, - "id": 7859, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "7390:3:36", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 7860, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "encodeWithSelector", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "7390:22:36", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", - "typeString": "function (bytes4) pure returns (bytes memory)" - } - }, - "id": 7863, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7390:37:36", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "7366:61:36" - }, - { - "assignments": [7866, null], - "declarations": [ - { - "constant": false, - "id": 7866, - "mutability": "mutable", - "name": "success", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7877, - "src": "7442:12:36", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 7865, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "7442:4:36", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - }, - null - ], - "id": 7871, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 7869, - "name": "callData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7858, - "src": "7480:8:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "expression": { - "argumentTypes": null, - "id": 7867, - "name": "contractAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7833, - "src": "7459:15:36", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 7868, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "call", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "7459:20:36", - "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": 7870, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7459:30:36", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", - "typeString": "tuple(bool,bytes memory)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "7441:48:36" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 7873, - "name": "success", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7866, - "src": "7511:7:36", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "64656c656761746563616c6c20746f20636f6e747261637441646472657373206661696c6564", - "id": 7874, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7520:40:36", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_51f8dc53a1a1265d7e1a33da60330d21af9ee076b3a370b08330721ff4064ac2", - "typeString": "literal_string \"delegatecall to contractAddress failed\"" - }, - "value": "delegatecall to contractAddress failed" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_51f8dc53a1a1265d7e1a33da60330d21af9ee076b3a370b08330721ff4064ac2", - "typeString": "literal_string \"delegatecall to contractAddress failed\"" - } - ], - "id": 7872, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "7503:7:36", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 7875, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7503:58:36", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 7876, - "nodeType": "ExpressionStatement", - "src": "7503:58:36" - } - ] + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22782:4:66", + "type": "", + "value": "0x1f" } - }, + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "22778:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "22778:9:66" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "22766:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "22766:22:66" + }, + "variables": [ + { + "name": "loopEnd", + "nodeType": "YulTypedName", + "src": "22755:7:66", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "22802:50:66", + "value": { + "arguments": [ { - "expression": { - "argumentTypes": null, - "id": 7890, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 7879, - "name": "_depositRecords", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7631, - "src": "7582:15:36", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint8_$_t_mapping$_t_uint64_$_t_struct$_DepositRecord_$7625_storage_$_$", - "typeString": "mapping(uint8 => mapping(uint64 => struct GenericHandler.DepositRecord storage ref))" - } - }, - "id": 7882, - "indexExpression": { - "argumentTypes": null, - "id": 7880, - "name": "destinationChainID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7793, - "src": "7598:18:36", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7582:35:36", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_DepositRecord_$7625_storage_$", - "typeString": "mapping(uint64 => struct GenericHandler.DepositRecord storage ref)" - } - }, - "id": 7883, - "indexExpression": { - "argumentTypes": null, - "id": 7881, - "name": "depositNonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7795, - "src": "7618:12:36", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "7582:49:36", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DepositRecord_$7625_storage", - "typeString": "struct GenericHandler.DepositRecord storage ref" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, + "name": "slot", + "nodeType": "YulIdentifier", + "src": "22847:4:66" + } + ], + "functionName": { + "name": "array_dataslot_t_bytes_storage", + "nodeType": "YulIdentifier", + "src": "22816:30:66" + }, + "nodeType": "YulFunctionCall", + "src": "22816:36:66" + }, + "variables": [ + { + "name": "dstPtr", + "nodeType": "YulTypedName", + "src": "22806:6:66", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "22865:10:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22874:1:66", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "22869:1:66", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "22933:163:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nodeType": "YulIdentifier", + "src": "22958:6:66" + }, + { + "arguments": [ + { "arguments": [ - { - "argumentTypes": null, - "id": 7885, - "name": "destinationChainID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7793, - "src": "7661:18:36", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "id": 7886, - "name": "depositer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7797, - "src": "7693:9:36", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 7887, - "name": "resourceID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7791, - "src": "7716:10:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 7888, - "name": "metadata", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7808, - "src": "7740:8:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "22976:3:66" + }, + { + "name": "srcOffset", + "nodeType": "YulIdentifier", + "src": "22981:9:66" + } ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 7884, - "name": "DepositRecord", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7625, - "src": "7634:13:36", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_DepositRecord_$7625_storage_ptr_$", - "typeString": "type(struct GenericHandler.DepositRecord storage pointer)" - } + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22972:3:66" }, - "id": 7889, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "structConstructorCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7634:124:36", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_DepositRecord_$7625_memory_ptr", - "typeString": "struct GenericHandler.DepositRecord memory" - } + "nodeType": "YulFunctionCall", + "src": "22972:19:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "22966:5:66" }, - "src": "7582:176:36", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DepositRecord_$7625_storage", - "typeString": "struct GenericHandler.DepositRecord storage ref" - } - }, - "id": 7891, - "nodeType": "ExpressionStatement", - "src": "7582:176:36" - } - ] - }, - "documentation": { - "id": 7789, - "nodeType": "StructuredDocumentation", - "src": "5835:905:36", - "text": "@notice A deposit is initiatied by making a deposit in the Bridge contract.\n@param destinationChainID Chain ID deposit is expected to be bridged to.\n@param depositNonce This value is generated as an ID by the Bridge contract.\n@param depositer Address of account making the deposit in the Bridge contract.\n@param data Consists of: {resourceID}, {lenMetaData}, and {metaData} all padded to 32 bytes.\n@notice Data passed into the function should be constructed as follows:\nlen(data) uint256 bytes 0 - 32\ndata bytes bytes 64 - END\n@notice {contractAddress} is required to be whitelisted\n@notice If {_contractAddressToDepositFunctionSignature}[{contractAddress}] is set,\n{metaData} is expected to consist of needed function arguments." - }, - "functionSelector": "38995da9", - "id": 7893, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": null, - "id": 7802, - "modifierName": { - "argumentTypes": null, - "id": 7801, - "name": "onlyBridge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7658, - "src": "6878:10:36", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "6878:10:36" - } - ], - "name": "deposit", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 7800, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 7791, - "mutability": "mutable", - "name": "resourceID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7893, - "src": "6762:18:36", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 7790, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "6762:7:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 7793, - "mutability": "mutable", - "name": "destinationChainID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7893, - "src": "6782:24:36", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 7792, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "6782:5:36", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 7795, - "mutability": "mutable", - "name": "depositNonce", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7893, - "src": "6808:19:36", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 7794, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "6808:6:36", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } + "nodeType": "YulFunctionCall", + "src": "22966:26:66" + } + ], + "functionName": { + "name": "sstore", + "nodeType": "YulIdentifier", + "src": "22951:6:66" }, - "value": null, - "visibility": "internal" + "nodeType": "YulFunctionCall", + "src": "22951:42:66" + }, + "nodeType": "YulExpressionStatement", + "src": "22951:42:66" }, { - "constant": false, - "id": 7797, - "mutability": "mutable", - "name": "depositer", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7893, - "src": "6829:17:36", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 7796, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "6829:7:36", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } + "nodeType": "YulAssignment", + "src": "23010:24:66", + "value": { + "arguments": [ + { + "name": "dstPtr", + "nodeType": "YulIdentifier", + "src": "23024:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23032:1:66", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23020:3:66" }, - "value": null, - "visibility": "internal" + "nodeType": "YulFunctionCall", + "src": "23020:14:66" + }, + "variableNames": [ + { + "name": "dstPtr", + "nodeType": "YulIdentifier", + "src": "23010:6:66" + } + ] }, { - "constant": false, - "id": 7799, - "mutability": "mutable", - "name": "data", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7893, - "src": "6848:19:36", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 7798, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "6848:5:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } + "nodeType": "YulAssignment", + "src": "23051:31:66", + "value": { + "arguments": [ + { + "name": "srcOffset", + "nodeType": "YulIdentifier", + "src": "23068:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23079:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23064:3:66" }, - "value": null, - "visibility": "internal" + "nodeType": "YulFunctionCall", + "src": "23064:18:66" + }, + "variableNames": [ + { + "name": "srcOffset", + "nodeType": "YulIdentifier", + "src": "23051:9:66" + } + ] } - ], - "src": "6761:107:36" - }, - "returnParameters": { - "id": 7803, - "nodeType": "ParameterList", - "parameters": [], - "src": "6889:0:36" - }, - "scope": 8022, - "src": "6745:1020:36", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "body": { - "id": 7978, - "nodeType": "Block", - "src": "8514:689:36", - "statements": [ - { - "assignments": [7904], - "declarations": [ - { - "constant": false, - "id": 7904, - "mutability": "mutable", - "name": "lenMetadata", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7978, - "src": "8524:24:36", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 7903, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8524:7:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 7905, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "8524:24:36" + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "22899:1:66" }, { - "assignments": [7907], - "declarations": [ - { - "constant": false, - "id": 7907, - "mutability": "mutable", - "name": "metaData", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7978, - "src": "8558:21:36", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 7906, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "8558:5:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } + "name": "loopEnd", + "nodeType": "YulIdentifier", + "src": "22902:7:66" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "22896:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "22896:14:66" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "22911:21:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "22913:17:66", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "22922:1:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22925:4:66", + "type": "", + "value": "0x20" + } ], - "id": 7908, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "8558:21:36" - }, + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22918:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "22918:12:66" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "22913:1:66" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "22892:3:66", + "statements": [] + }, + "src": "22888:208:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "23132:156:66", + "statements": [ { - "expression": { - "argumentTypes": null, - "id": 7917, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 7909, - "name": "lenMetadata", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7904, - "src": "8590:11:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 7912, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7898, - "src": "8615:4:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "id": 7914, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "8622:7:36", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 7913, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8622:7:36", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - } - ], - "id": 7915, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "8621:9:36", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - }, - { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - } - ], - "expression": { - "argumentTypes": null, - "id": 7910, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "8604:3:36", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 7911, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "decode", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "8604:10:36", - "typeDescriptions": { - "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 7916, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8604:27:36", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "nodeType": "YulVariableDeclaration", + "src": "23150:43:66", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "23177:3:66" + }, + { + "name": "srcOffset", + "nodeType": "YulIdentifier", + "src": "23182:9:66" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23173:3:66" }, - "src": "8590:41:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "nodeType": "YulFunctionCall", + "src": "23173:19:66" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "23167:5:66" }, - "id": 7918, - "nodeType": "ExpressionStatement", - "src": "8590:41:36" + "nodeType": "YulFunctionCall", + "src": "23167:26:66" + }, + "variables": [ + { + "name": "lastValue", + "nodeType": "YulTypedName", + "src": "23154:9:66", + "type": "" + } + ] }, { - "expression": { - "argumentTypes": null, - "id": 7929, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 7919, - "name": "metaData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7907, - "src": "8641:8:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nodeType": "YulIdentifier", + "src": "23217:6:66" + }, + { + "arguments": [ + { + "name": "lastValue", + "nodeType": "YulIdentifier", + "src": "23244:9:66" + }, + { "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 7922, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7898, - "src": "8658:4:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "endExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7926, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "hexValue": "3332", - "id": 7924, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8666:2:36", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_32_by_1", - "typeString": "int_const 32" - }, - "value": "32" - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "id": 7925, - "name": "lenMetadata", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7904, - "src": "8671:11:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "8666:16:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7927, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexRangeAccess", - "src": "8658:25:36", - "startExpression": { - "argumentTypes": null, - "hexValue": "3332", - "id": 7923, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8663:2:36", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_32_by_1", - "typeString": "int_const 32" - }, - "value": "32" - }, - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr_slice", - "typeString": "bytes calldata slice" - } - } + { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "23259:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23267:4:66", + "type": "", + "value": "0x1f" + } ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_calldata_ptr_slice", - "typeString": "bytes calldata slice" - } - ], - "id": 7921, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "8652:5:36", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", - "typeString": "type(bytes storage pointer)" - }, - "typeName": { - "id": 7920, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "8652:5:36", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "23255:3:66" }, - "id": 7928, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8652:32:36", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } + "nodeType": "YulFunctionCall", + "src": "23255:17:66" + } + ], + "functionName": { + "name": "mask_bytes_dynamic", + "nodeType": "YulIdentifier", + "src": "23225:18:66" }, - "src": "8641:43:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } + "nodeType": "YulFunctionCall", + "src": "23225:48:66" + } + ], + "functionName": { + "name": "sstore", + "nodeType": "YulIdentifier", + "src": "23210:6:66" }, - "id": 7930, - "nodeType": "ExpressionStatement", - "src": "8641:43:36" + "nodeType": "YulFunctionCall", + "src": "23210:64:66" + }, + "nodeType": "YulExpressionStatement", + "src": "23210:64:66" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "loopEnd", + "nodeType": "YulIdentifier", + "src": "23115:7:66" + }, + { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "23124:6:66" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "23112:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "23112:19:66" + }, + "nodeType": "YulIf", + "src": "23109:179:66" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "23308:4:66" }, { - "assignments": [7932], - "declarations": [ + "arguments": [ + { + "arguments": [ { - "constant": false, - "id": 7932, - "mutability": "mutable", - "name": "contractAddress", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7978, - "src": "8695:23:36", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 7931, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8695:7:36", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 7936, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 7933, - "name": "_resourceIDToContractAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7635, - "src": "8721:28:36", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", - "typeString": "mapping(bytes32 => address)" - } - }, - "id": 7935, - "indexExpression": { - "argumentTypes": null, - "id": 7934, - "name": "resourceID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7896, - "src": "8750:10:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "23322:6:66" }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8721:40:36", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23330:1:66", + "type": "", + "value": "2" } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "23318:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "23318:14:66" }, - "nodeType": "VariableDeclarationStatement", - "src": "8695:66:36" - }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23334:1:66", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23314:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "23314:22:66" + } + ], + "functionName": { + "name": "sstore", + "nodeType": "YulIdentifier", + "src": "23301:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "23301:36:66" + }, + "nodeType": "YulExpressionStatement", + "src": "23301:36:66" + } + ] + }, + "nodeType": "YulCase", + "src": "22730:617:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22735:1:66", + "type": "", + "value": "1" + } + }, + { + "body": { + "nodeType": "YulBlock", + "src": "23364:222:66", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "23378:14:66", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23391:1:66", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "23382:5:66", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "23415:67:66", + "statements": [ { - "expression": { - "argumentTypes": null, + "nodeType": "YulAssignment", + "src": "23433:35:66", + "value": { + "arguments": [ + { "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 7938, - "name": "_contractWhitelist", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7651, - "src": "8779:18:36", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 7940, - "indexExpression": { - "argumentTypes": null, - "id": 7939, - "name": "contractAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7932, - "src": "8798:15:36", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8779:35:36", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "70726f766964656420636f6e747261637441646472657373206973206e6f742077686974656c6973746564", - "id": 7941, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8816:45:36", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_b35e1d4b1392122547a6ef1db8ad0b6549b5cc8820bfc81437cf78f8b1333b05", - "typeString": "literal_string \"provided contractAddress is not whitelisted\"" - }, - "value": "provided contractAddress is not whitelisted" - } + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "23452:3:66" + }, + { + "name": "srcOffset", + "nodeType": "YulIdentifier", + "src": "23457:9:66" + } ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_b35e1d4b1392122547a6ef1db8ad0b6549b5cc8820bfc81437cf78f8b1333b05", - "typeString": "literal_string \"provided contractAddress is not whitelisted\"" - } - ], - "id": 7937, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "8771:7:36", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23448:3:66" }, - "id": 7942, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8771:91:36", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 7943, - "nodeType": "ExpressionStatement", - "src": "8771:91:36" - }, - { - "assignments": [7945], - "declarations": [ - { - "constant": false, - "id": 7945, - "mutability": "mutable", - "name": "sig", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7978, - "src": "8873:10:36", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "typeName": { - "id": 7944, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "8873:6:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "value": null, - "visibility": "internal" - } + "nodeType": "YulFunctionCall", + "src": "23448:19:66" + } ], - "id": 7949, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 7946, - "name": "_contractAddressToExecuteFunctionSignature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7647, - "src": "8886:42:36", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bytes4_$", - "typeString": "mapping(address => bytes4)" - } - }, - "id": 7948, - "indexExpression": { - "argumentTypes": null, - "id": 7947, - "name": "contractAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7932, - "src": "8929:15:36", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8886:59:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "23442:5:66" }, - "nodeType": "VariableDeclarationStatement", - "src": "8873:72:36" + "nodeType": "YulFunctionCall", + "src": "23442:26:66" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "23433:5:66" + } + ] + } + ] + }, + "condition": { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "23408:6:66" + }, + "nodeType": "YulIf", + "src": "23405:77:66" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "23502:4:66" }, { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "id": 7955, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 7950, - "name": "sig", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7945, - "src": "8959:3:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 7953, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8973:1:36", - "subdenomination": null, - "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": 7952, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "8966:6:36", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes4_$", - "typeString": "type(bytes4)" - }, - "typeName": { - "id": 7951, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "8966:6:36", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 7954, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8966:9:36", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "src": "8959:16:36", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "23561:5:66" }, - "falseBody": null, - "id": 7977, - "nodeType": "IfStatement", - "src": "8955:242:36", - "trueBody": { - "id": 7976, - "nodeType": "Block", - "src": "8977:220:36", - "statements": [ - { - "assignments": [7957], - "declarations": [ - { - "constant": false, - "id": 7957, - "mutability": "mutable", - "name": "callData", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7976, - "src": "8991:21:36", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 7956, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "8991:5:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 7963, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 7960, - "name": "sig", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7945, - "src": "9038:3:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - { - "argumentTypes": null, - "id": 7961, - "name": "metaData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7907, - "src": "9043:8:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "expression": { - "argumentTypes": null, - "id": 7958, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "9015:3:36", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 7959, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "encodeWithSelector", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "9015:22:36", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", - "typeString": "function (bytes4) pure returns (bytes memory)" - } - }, - "id": 7962, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9015:37:36", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "8991:61:36" - }, - { - "assignments": [7965, null], - "declarations": [ - { - "constant": false, - "id": 7965, - "mutability": "mutable", - "name": "success", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7976, - "src": "9067:12:36", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 7964, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "9067:4:36", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - }, - null - ], - "id": 7970, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 7968, - "name": "callData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7957, - "src": "9105:8:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "expression": { - "argumentTypes": null, - "id": 7966, - "name": "contractAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7932, - "src": "9084:15:36", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 7967, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "call", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "9084:20:36", - "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": 7969, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9084:30:36", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", - "typeString": "tuple(bool,bytes memory)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "9066:48:36" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 7972, - "name": "success", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7965, - "src": "9136:7:36", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "64656c656761746563616c6c20746f20636f6e747261637441646472657373206661696c6564", - "id": 7973, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9145:40:36", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_51f8dc53a1a1265d7e1a33da60330d21af9ee076b3a370b08330721ff4064ac2", - "typeString": "literal_string \"delegatecall to contractAddress failed\"" - }, - "value": "delegatecall to contractAddress failed" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_51f8dc53a1a1265d7e1a33da60330d21af9ee076b3a370b08330721ff4064ac2", - "typeString": "literal_string \"delegatecall to contractAddress failed\"" - } - ], - "id": 7971, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "src": "9128:7:36", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 7974, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9128:58:36", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 7975, - "nodeType": "ExpressionStatement", - "src": "9128:58:36" - } - ] + { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "23568:6:66" } + ], + "functionName": { + "name": "extract_used_part_and_set_length_of_short_byte_array", + "nodeType": "YulIdentifier", + "src": "23508:52:66" + }, + "nodeType": "YulFunctionCall", + "src": "23508:67:66" } - ] + ], + "functionName": { + "name": "sstore", + "nodeType": "YulIdentifier", + "src": "23495:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "23495:81:66" + }, + "nodeType": "YulExpressionStatement", + "src": "23495:81:66" + } + ] + }, + "nodeType": "YulCase", + "src": "23356:230:66", + "value": "default" + } + ], + "expression": { + "arguments": [ + { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "22710:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22718:2:66", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "22707:2:66" + }, + "nodeType": "YulFunctionCall", + "src": "22707:14:66" + }, + "nodeType": "YulSwitch", + "src": "22700:886:66" + } + ] + }, + "name": "copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "slot", + "nodeType": "YulTypedName", + "src": "22281:4:66", + "type": "" + }, + { + "name": "src", + "nodeType": "YulTypedName", + "src": "22287:3:66", + "type": "" + } + ], + "src": "22202:1390:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "23704:74:66", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "23726:6:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23734:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23722:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "23722:14:66" + }, + { + "hexValue": "73656e646572206d7573742062652062726964676520636f6e7472616374", + "kind": "string", + "nodeType": "YulLiteral", + "src": "23738:32:66", + "type": "", + "value": "sender must be bridge contract" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23715:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "23715:56:66" + }, + "nodeType": "YulExpressionStatement", + "src": "23715:56:66" + } + ] + }, + "name": "store_literal_in_memory_0febc0fc8991eb26dfaaceeb4d73d25b76da338550ed76c60410fec84388058e", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "23696:6:66", + "type": "" + } + ], + "src": "23598:180:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "23930:220:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "23940:74:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "24006:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24011:2:66", + "type": "", + "value": "30" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "23947:58:66" + }, + "nodeType": "YulFunctionCall", + "src": "23947:67:66" + }, + "variableNames": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "23940:3:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "24112:3:66" + } + ], + "functionName": { + "name": "store_literal_in_memory_0febc0fc8991eb26dfaaceeb4d73d25b76da338550ed76c60410fec84388058e", + "nodeType": "YulIdentifier", + "src": "24023:88:66" + }, + "nodeType": "YulFunctionCall", + "src": "24023:93:66" + }, + "nodeType": "YulExpressionStatement", + "src": "24023:93:66" + }, + { + "nodeType": "YulAssignment", + "src": "24125:19:66", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "24136:3:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24141:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24132:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "24132:12:66" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "24125:3:66" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_0febc0fc8991eb26dfaaceeb4d73d25b76da338550ed76c60410fec84388058e_to_t_string_memory_ptr_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "23918:3:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "23926:3:66", + "type": "" + } + ], + "src": "23784:366:66" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "24327:248:66", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "24337:26:66", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24349:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24360:2:66", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24345:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "24345:18:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "24337:4:66" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24384:9:66" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24395:1:66", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24380:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "24380:17:66" + }, + { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "24403:4:66" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24409:9:66" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "24399:3:66" + }, + "nodeType": "YulFunctionCall", + "src": "24399:20:66" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24373:6:66" + }, + "nodeType": "YulFunctionCall", + "src": "24373:47:66" + }, + "nodeType": "YulExpressionStatement", + "src": "24373:47:66" + }, + { + "nodeType": "YulAssignment", + "src": "24429:139:66", + "value": { + "arguments": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "24563:4:66" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_0febc0fc8991eb26dfaaceeb4d73d25b76da338550ed76c60410fec84388058e_to_t_string_memory_ptr_fromStack", + "nodeType": "YulIdentifier", + "src": "24437:124:66" + }, + "nodeType": "YulFunctionCall", + "src": "24437:131:66" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "24429:4:66" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_0febc0fc8991eb26dfaaceeb4d73d25b76da338550ed76c60410fec84388058e__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "24307:9:66", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "24322:4:66", + "type": "" + } + ], + "src": "24156:419:66" + } + ] + }, + "contents": "{\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_bytes32(value) {\n if iszero(eq(value, cleanup_t_bytes32(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes32(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes32(value)\n }\n\n function cleanup_t_uint8(value) -> cleaned {\n cleaned := and(value, 0xff)\n }\n\n function validator_revert_t_uint8(value) {\n if iszero(eq(value, cleanup_t_uint8(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint8(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint8(value)\n }\n\n function cleanup_t_uint64(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffff)\n }\n\n function validator_revert_t_uint64(value) {\n if iszero(eq(value, cleanup_t_uint64(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint64(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint64(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() {\n revert(0, 0)\n }\n\n function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n revert(0, 0)\n }\n\n // bytes\n function abi_decode_t_bytes_calldata_ptr(offset, end) -> arrayPos, length {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n arrayPos := add(offset, 0x20)\n if gt(add(arrayPos, mul(length, 0x01)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n }\n\n function abi_decode_tuple_t_bytes32t_uint8t_uint64t_addresst_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5 {\n if slt(sub(dataEnd, headStart), 160) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint8(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint64(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 128))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value4, value5 := abi_decode_t_bytes_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint8t_uint64(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint8(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint64(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_uint8_to_t_uint8_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint8(value))\n }\n\n function abi_encode_t_bytes32_to_t_bytes32_fromStack(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function array_length_t_bytes_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function copy_memory_to_memory_with_cleanup(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_uint8_t_address_t_bytes32_t_bytes_memory_ptr__to_t_uint8_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed(headStart , value3, value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_uint8_to_t_uint8_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value2, add(headStart, 64))\n\n mstore(add(headStart, 96), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value3, tail)\n\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n function cleanup_t_bytes4(value) -> cleaned {\n cleaned := and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000)\n }\n\n function abi_encode_t_bytes4_to_t_bytes4_fromStack(value, pos) {\n mstore(pos, cleanup_t_bytes4(value))\n }\n\n function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bytes4_to_t_bytes4_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_uint64t_uint8(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint64(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint8(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_uint8_to_t_uint8(value, pos) {\n mstore(pos, cleanup_t_uint8(value))\n }\n\n function abi_encode_t_address_to_t_address(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_t_bytes32_to_t_bytes32(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n // struct GenericHandler.DepositRecord -> struct GenericHandler.DepositRecord\n function abi_encode_t_struct$_DepositRecord_$2679_memory_ptr_to_t_struct$_DepositRecord_$2679_memory_ptr_fromStack(value, pos) -> end {\n let tail := add(pos, 0x80)\n\n {\n // _destinationChainID\n\n let memberValue0 := mload(add(value, 0x00))\n abi_encode_t_uint8_to_t_uint8(memberValue0, add(pos, 0x00))\n }\n\n {\n // _depositer\n\n let memberValue0 := mload(add(value, 0x20))\n abi_encode_t_address_to_t_address(memberValue0, add(pos, 0x20))\n }\n\n {\n // _resourceID\n\n let memberValue0 := mload(add(value, 0x40))\n abi_encode_t_bytes32_to_t_bytes32(memberValue0, add(pos, 0x40))\n }\n\n {\n // _metaData\n\n let memberValue0 := mload(add(value, 0x60))\n\n mstore(add(pos, 0x60), sub(tail, pos))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr(memberValue0, tail)\n\n }\n\n end := tail\n }\n\n function abi_encode_tuple_t_struct$_DepositRecord_$2679_memory_ptr__to_t_struct$_DepositRecord_$2679_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_struct$_DepositRecord_$2679_memory_ptr_to_t_struct$_DepositRecord_$2679_memory_ptr_fromStack(value0, tail)\n\n }\n\n function validator_revert_t_bytes4(value) {\n if iszero(eq(value, cleanup_t_bytes4(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes4(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes4(value)\n }\n\n function abi_decode_tuple_t_bytes32t_addresst_bytes4t_bytes4(headStart, dataEnd) -> value0, value1, value2, value3 {\n if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_bytes4(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_bytes4(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_bytes32t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value1, value2 := abi_decode_t_bytes_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n sum := add(x, y)\n\n if gt(x, sum) { panic_error_0x11() }\n\n }\n\n function revert_error_7678404c0552a58cf14944d1a786cf4c81aab3563e2735cb332aee47bbb57c4a() {\n revert(0, 0)\n }\n\n function revert_error_46e3e63c93837e9efa638abb3b4e76ced8c11259a873f1381a0abdf6ae6a823c() {\n revert(0, 0)\n }\n\n function calldata_array_index_range_access_t_bytes_calldata_ptr(offset, length, startIndex, endIndex) -> offsetOut, lengthOut {\n if gt(startIndex, endIndex) { revert_error_7678404c0552a58cf14944d1a786cf4c81aab3563e2735cb332aee47bbb57c4a() }\n if gt(endIndex, length) { revert_error_46e3e63c93837e9efa638abb3b4e76ced8c11259a873f1381a0abdf6ae6a823c() }\n offsetOut := add(offset, mul(startIndex, 1))\n lengthOut := sub(endIndex, startIndex)\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function store_literal_in_memory_b35e1d4b1392122547a6ef1db8ad0b6549b5cc8820bfc81437cf78f8b1333b05(memPtr) {\n\n mstore(add(memPtr, 0), \"provided contractAddress is not \")\n\n mstore(add(memPtr, 32), \"whitelisted\")\n\n }\n\n function abi_encode_t_stringliteral_b35e1d4b1392122547a6ef1db8ad0b6549b5cc8820bfc81437cf78f8b1333b05_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 43)\n store_literal_in_memory_b35e1d4b1392122547a6ef1db8ad0b6549b5cc8820bfc81437cf78f8b1333b05(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_b35e1d4b1392122547a6ef1db8ad0b6549b5cc8820bfc81437cf78f8b1333b05__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_b35e1d4b1392122547a6ef1db8ad0b6549b5cc8820bfc81437cf78f8b1333b05_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function leftAlign_t_bytes4(value) -> aligned {\n aligned := value\n }\n\n function abi_encode_t_bytes4_to_t_bytes4_nonPadded_inplace_fromStack(value, pos) {\n mstore(pos, leftAlign_t_bytes4(cleanup_t_bytes4(value)))\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, length)\n }\n\n function abi_encode_tuple_packed_t_bytes4_t_bytes_memory_ptr__to_t_bytes4_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value1, value0) -> end {\n\n abi_encode_t_bytes4_to_t_bytes4_nonPadded_inplace_fromStack(value0, pos)\n pos := add(pos, 4)\n\n pos := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value1, pos)\n\n end := pos\n }\n\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value0) -> end {\n\n pos := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value0, pos)\n\n end := pos\n }\n\n function store_literal_in_memory_51f8dc53a1a1265d7e1a33da60330d21af9ee076b3a370b08330721ff4064ac2(memPtr) {\n\n mstore(add(memPtr, 0), \"delegatecall to contractAddress \")\n\n mstore(add(memPtr, 32), \"failed\")\n\n }\n\n function abi_encode_t_stringliteral_51f8dc53a1a1265d7e1a33da60330d21af9ee076b3a370b08330721ff4064ac2_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 38)\n store_literal_in_memory_51f8dc53a1a1265d7e1a33da60330d21af9ee076b3a370b08330721ff4064ac2(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_51f8dc53a1a1265d7e1a33da60330d21af9ee076b3a370b08330721ff4064ac2__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_51f8dc53a1a1265d7e1a33da60330d21af9ee076b3a370b08330721ff4064ac2_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function array_dataslot_t_bytes_storage(ptr) -> data {\n data := ptr\n\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n\n }\n\n function divide_by_32_ceil(value) -> result {\n result := div(add(value, 31), 32)\n }\n\n function shift_left_dynamic(bits, value) -> newValue {\n newValue :=\n\n shl(bits, value)\n\n }\n\n function update_byte_slice_dynamic32(value, shiftBytes, toInsert) -> result {\n let shiftBits := mul(shiftBytes, 8)\n let mask := shift_left_dynamic(shiftBits, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n toInsert := shift_left_dynamic(shiftBits, toInsert)\n value := and(value, not(mask))\n result := or(value, and(toInsert, mask))\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint256_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_uint256(value)))\n }\n\n function prepare_store_t_uint256(value) -> ret {\n ret := value\n }\n\n function update_storage_value_t_uint256_to_t_uint256(slot, offset, value_0) {\n let convertedValue_0 := convert_t_uint256_to_t_uint256(value_0)\n sstore(slot, update_byte_slice_dynamic32(sload(slot), offset, prepare_store_t_uint256(convertedValue_0)))\n }\n\n function zero_value_for_split_t_uint256() -> ret {\n ret := 0\n }\n\n function storage_set_to_zero_t_uint256(slot, offset) {\n let zero_0 := zero_value_for_split_t_uint256()\n update_storage_value_t_uint256_to_t_uint256(slot, offset, zero_0)\n }\n\n function clear_storage_range_t_bytes1(start, end) {\n for {} lt(start, end) { start := add(start, 1) }\n {\n storage_set_to_zero_t_uint256(start, 0)\n }\n }\n\n function clean_up_bytearray_end_slots_t_bytes_storage(array, len, startIndex) {\n\n if gt(len, 31) {\n let dataArea := array_dataslot_t_bytes_storage(array)\n let deleteStart := add(dataArea, divide_by_32_ceil(startIndex))\n // If we are clearing array to be short byte array, we want to clear only data starting from array data area.\n if lt(startIndex, 32) { deleteStart := dataArea }\n clear_storage_range_t_bytes1(deleteStart, add(dataArea, divide_by_32_ceil(len)))\n }\n\n }\n\n function shift_right_unsigned_dynamic(bits, value) -> newValue {\n newValue :=\n\n shr(bits, value)\n\n }\n\n function mask_bytes_dynamic(data, bytes) -> result {\n let mask := not(shift_right_unsigned_dynamic(mul(8, bytes), not(0)))\n result := and(data, mask)\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used {\n // we want to save only elements that are part of the array after resizing\n // others should be set to zero\n data := mask_bytes_dynamic(data, len)\n used := or(data, mul(2, len))\n }\n function copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage(slot, src) {\n\n let newLen := array_length_t_bytes_memory_ptr(src)\n // Make sure array length is sane\n if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n\n let oldLen := extract_byte_array_length(sload(slot))\n\n // potentially truncate data\n clean_up_bytearray_end_slots_t_bytes_storage(slot, oldLen, newLen)\n\n let srcOffset := 0\n\n srcOffset := 0x20\n\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(0x1f))\n\n let dstPtr := array_dataslot_t_bytes_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, 0x20) } {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, 32)\n }\n if lt(loopEnd, newLen) {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, mask_bytes_dynamic(lastValue, and(newLen, 0x1f)))\n }\n sstore(slot, add(mul(newLen, 2), 1))\n }\n default {\n let value := 0\n if newLen {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n\n function store_literal_in_memory_0febc0fc8991eb26dfaaceeb4d73d25b76da338550ed76c60410fec84388058e(memPtr) {\n\n mstore(add(memPtr, 0), \"sender must be bridge contract\")\n\n }\n\n function abi_encode_t_stringliteral_0febc0fc8991eb26dfaaceeb4d73d25b76da338550ed76c60410fec84388058e_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 30)\n store_literal_in_memory_0febc0fc8991eb26dfaaceeb4d73d25b76da338550ed76c60410fec84388058e(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_0febc0fc8991eb26dfaaceeb4d73d25b76da338550ed76c60410fec84388058e__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_0febc0fc8991eb26dfaaceeb4d73d25b76da338550ed76c60410fec84388058e_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n}\n", + "id": 66, + "language": "Yul", + "name": "#utility.yul" + } + ], + "sourceMap": "284:9651:22:-:0;;;2797:1147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3123:24;:31;3094:18;:25;:60;3086:146;;;;;;;;;;;;:::i;:::-;;;;;;;;;3288:32;:39;3253:24;:31;:74;3245:164;;;;;;;;;;;;:::i;:::-;;;;;;;;;3473:32;:39;3430:32;:39;:82;3422:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;3621:13;3604:14;;:30;;;;;;;;;;;;;;;;;;3652:9;3647:290;3671:18;:25;3667:1;:29;3647:290;;;3718:207;3749:18;3768:1;3749:21;;;;;;;;:::i;:::-;;;;;;;;3789:24;3814:1;3789:27;;;;;;;;:::i;:::-;;;;;;;;3835:32;3868:1;3835:35;;;;;;;;:::i;:::-;;;;;;;;3889:32;3922:1;3889:35;;;;;;;;:::i;:::-;;;;;;;;3718:12;;;:207;;:::i;:::-;3698:3;;;;;:::i;:::-;;;;3647:290;;;;2797:1147;;;;;284:9651;;9376:556;9603:15;9560:28;:40;9589:10;9560:40;;;;;;;;;;;;:58;;;;;;;;;;;;;;;;;;9677:10;9629:28;:45;9658:15;9629:45;;;;;;;;;;;;;;;:58;;;;9760:18;9698:42;:59;9741:15;9698:59;;;;;;;;;;;;;;;;:80;;;;;;;;;;;;;;;;;;9851:18;9789:42;:59;9832:15;9789:59;;;;;;;;;;;;;;;;:80;;;;;;;;;;;;;;;;;;9920:4;9882:18;:35;9901:15;9882:35;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;9376:556;;;;:::o;7:75:66:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:143::-;753:5;784:6;778:13;769:22;;800:33;827:5;800:33;:::i;:::-;696:143;;;;:::o;845:117::-;954:1;951;944:12;968:102;1009:6;1060:2;1056:7;1051:2;1044:5;1040:14;1036:28;1026:38;;968:102;;;:::o;1076:180::-;1124:77;1121:1;1114:88;1221:4;1218:1;1211:15;1245:4;1242:1;1235:15;1262:281;1345:27;1367:4;1345:27;:::i;:::-;1337:6;1333:40;1475:6;1463:10;1460:22;1439:18;1427:10;1424:34;1421:62;1418:88;;;1486:18;;:::i;:::-;1418:88;1526:10;1522:2;1515:22;1305:238;1262:281;;:::o;1549:129::-;1583:6;1610:20;;:::i;:::-;1600:30;;1639:33;1667:4;1659:6;1639:33;:::i;:::-;1549:129;;;:::o;1684:311::-;1761:4;1851:18;1843:6;1840:30;1837:56;;;1873:18;;:::i;:::-;1837:56;1923:4;1915:6;1911:17;1903:25;;1983:4;1977;1973:15;1965:23;;1684:311;;;:::o;2001:117::-;2110:1;2107;2100:12;2124:77;2161:7;2190:5;2179:16;;2124:77;;;:::o;2207:122::-;2280:24;2298:5;2280:24;:::i;:::-;2273:5;2270:35;2260:63;;2319:1;2316;2309:12;2260:63;2207:122;:::o;2335:143::-;2392:5;2423:6;2417:13;2408:22;;2439:33;2466:5;2439:33;:::i;:::-;2335:143;;;;:::o;2501:732::-;2608:5;2633:81;2649:64;2706:6;2649:64;:::i;:::-;2633:81;:::i;:::-;2624:90;;2734:5;2763:6;2756:5;2749:21;2797:4;2790:5;2786:16;2779:23;;2850:4;2842:6;2838:17;2830:6;2826:30;2879:3;2871:6;2868:15;2865:122;;;2898:79;;:::i;:::-;2865:122;3013:6;2996:231;3030:6;3025:3;3022:15;2996:231;;;3105:3;3134:48;3178:3;3166:10;3134:48;:::i;:::-;3129:3;3122:61;3212:4;3207:3;3203:14;3196:21;;3072:155;3056:4;3051:3;3047:14;3040:21;;2996:231;;;3000:21;2614:619;;2501:732;;;;;:::o;3256:385::-;3338:5;3387:3;3380:4;3372:6;3368:17;3364:27;3354:122;;3395:79;;:::i;:::-;3354:122;3505:6;3499:13;3530:105;3631:3;3623:6;3616:4;3608:6;3604:17;3530:105;:::i;:::-;3521:114;;3344:297;3256:385;;;;:::o;3647:311::-;3724:4;3814:18;3806:6;3803:30;3800:56;;;3836:18;;:::i;:::-;3800:56;3886:4;3878:6;3874:17;3866:25;;3946:4;3940;3936:15;3928:23;;3647:311;;;:::o;3981:732::-;4088:5;4113:81;4129:64;4186:6;4129:64;:::i;:::-;4113:81;:::i;:::-;4104:90;;4214:5;4243:6;4236:5;4229:21;4277:4;4270:5;4266:16;4259:23;;4330:4;4322:6;4318:17;4310:6;4306:30;4359:3;4351:6;4348:15;4345:122;;;4378:79;;:::i;:::-;4345:122;4493:6;4476:231;4510:6;4505:3;4502:15;4476:231;;;4585:3;4614:48;4658:3;4646:10;4614:48;:::i;:::-;4609:3;4602:61;4692:4;4687:3;4683:14;4676:21;;4552:155;4536:4;4531:3;4527:14;4520:21;;4476:231;;;4480:21;4094:619;;3981:732;;;;;:::o;4736:385::-;4818:5;4867:3;4860:4;4852:6;4848:17;4844:27;4834:122;;4875:79;;:::i;:::-;4834:122;4985:6;4979:13;5010:105;5111:3;5103:6;5096:4;5088:6;5084:17;5010:105;:::i;:::-;5001:114;;4824:297;4736:385;;;;:::o;5127:310::-;5203:4;5293:18;5285:6;5282:30;5279:56;;;5315:18;;:::i;:::-;5279:56;5365:4;5357:6;5353:17;5345:25;;5425:4;5419;5415:15;5407:23;;5127:310;;;:::o;5443:149::-;5479:7;5519:66;5512:5;5508:78;5497:89;;5443:149;;;:::o;5598:120::-;5670:23;5687:5;5670:23;:::i;:::-;5663:5;5660:34;5650:62;;5708:1;5705;5698:12;5650:62;5598:120;:::o;5724:141::-;5780:5;5811:6;5805:13;5796:22;;5827:32;5853:5;5827:32;:::i;:::-;5724:141;;;;:::o;5887:729::-;5993:5;6018:80;6034:63;6090:6;6034:63;:::i;:::-;6018:80;:::i;:::-;6009:89;;6118:5;6147:6;6140:5;6133:21;6181:4;6174:5;6170:16;6163:23;;6234:4;6226:6;6222:17;6214:6;6210:30;6263:3;6255:6;6252:15;6249:122;;;6282:79;;:::i;:::-;6249:122;6397:6;6380:230;6414:6;6409:3;6406:15;6380:230;;;6489:3;6518:47;6561:3;6549:10;6518:47;:::i;:::-;6513:3;6506:60;6595:4;6590:3;6586:14;6579:21;;6456:154;6440:4;6435:3;6431:14;6424:21;;6380:230;;;6384:21;5999:617;;5887:729;;;;;:::o;6638:383::-;6719:5;6768:3;6761:4;6753:6;6749:17;6745:27;6735:122;;6776:79;;:::i;:::-;6735:122;6886:6;6880:13;6911:104;7011:3;7003:6;6996:4;6988:6;6984:17;6911:104;:::i;:::-;6902:113;;6725:296;6638:383;;;;:::o;7027:1785::-;7231:6;7239;7247;7255;7263;7312:3;7300:9;7291:7;7287:23;7283:33;7280:120;;;7319:79;;:::i;:::-;7280:120;7439:1;7464:64;7520:7;7511:6;7500:9;7496:22;7464:64;:::i;:::-;7454:74;;7410:128;7598:2;7587:9;7583:18;7577:25;7629:18;7621:6;7618:30;7615:117;;;7651:79;;:::i;:::-;7615:117;7756:89;7837:7;7828:6;7817:9;7813:22;7756:89;:::i;:::-;7746:99;;7548:307;7915:2;7904:9;7900:18;7894:25;7946:18;7938:6;7935:30;7932:117;;;7968:79;;:::i;:::-;7932:117;8073:89;8154:7;8145:6;8134:9;8130:22;8073:89;:::i;:::-;8063:99;;7865:307;8232:2;8221:9;8217:18;8211:25;8263:18;8255:6;8252:30;8249:117;;;8285:79;;:::i;:::-;8249:117;8390:88;8470:7;8461:6;8450:9;8446:22;8390:88;:::i;:::-;8380:98;;8182:306;8548:3;8537:9;8533:19;8527:26;8580:18;8572:6;8569:30;8566:117;;;8602:79;;:::i;:::-;8566:117;8707:88;8787:7;8778:6;8767:9;8763:22;8707:88;:::i;:::-;8697:98;;8498:307;7027:1785;;;;;;;;:::o;8818:169::-;8902:11;8936:6;8931:3;8924:19;8976:4;8971:3;8967:14;8952:29;;8818:169;;;;:::o;8993:247::-;9133:34;9129:1;9121:6;9117:14;9110:58;9202:30;9197:2;9189:6;9185:15;9178:55;8993:247;:::o;9246:366::-;9388:3;9409:67;9473:2;9468:3;9409:67;:::i;:::-;9402:74;;9485:93;9574:3;9485:93;:::i;:::-;9603:2;9598:3;9594:12;9587:19;;9246:366;;;:::o;9618:419::-;9784:4;9822:2;9811:9;9807:18;9799:26;;9871:9;9865:4;9861:20;9857:1;9846:9;9842:17;9835:47;9899:131;10025:4;9899:131;:::i;:::-;9891:139;;9618:419;;;:::o;10043:251::-;10183:34;10179:1;10171:6;10167:14;10160:58;10252:34;10247:2;10239:6;10235:15;10228:59;10043:251;:::o;10300:366::-;10442:3;10463:67;10527:2;10522:3;10463:67;:::i;:::-;10456:74;;10539:93;10628:3;10539:93;:::i;:::-;10657:2;10652:3;10648:12;10641:19;;10300:366;;;:::o;10672:419::-;10838:4;10876:2;10865:9;10861:18;10853:26;;10925:9;10919:4;10915:20;10911:1;10900:9;10896:17;10889:47;10953:131;11079:4;10953:131;:::i;:::-;10945:139;;10672:419;;;:::o;11097:248::-;11237:34;11233:1;11225:6;11221:14;11214:58;11306:31;11301:2;11293:6;11289:15;11282:56;11097:248;:::o;11351:366::-;11493:3;11514:67;11578:2;11573:3;11514:67;:::i;:::-;11507:74;;11590:93;11679:3;11590:93;:::i;:::-;11708:2;11703:3;11699:12;11692:19;;11351:366;;;:::o;11723:419::-;11889:4;11927:2;11916:9;11912:18;11904:26;;11976:9;11970:4;11966:20;11962:1;11951:9;11947:17;11940:47;12004:131;12130:4;12004:131;:::i;:::-;11996:139;;11723:419;;;:::o;12148:180::-;12196:77;12193:1;12186:88;12293:4;12290:1;12283:15;12317:4;12314:1;12307:15;12334:180;12382:77;12379:1;12372:88;12479:4;12476:1;12469:15;12503:4;12500:1;12493:15;12520:77;12557:7;12586:5;12575:16;;12520:77;;;:::o;12603:233::-;12642:3;12665:24;12683:5;12665:24;:::i;:::-;12656:33;;12711:66;12704:5;12701:77;12698:103;;12781:18;;:::i;:::-;12698:103;12828:1;12821:5;12817:13;12810:20;;12603:233;;;:::o;284:9651:22:-;;;;;;;", + "deployedSourceMap": "284:9651:22:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;334:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6871:1037;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;573:74;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;1220:51;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1085:77;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4503:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5655:285;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;695:64;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;935:77;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8583:785;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;807:64;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;334:29;;;;;;;;;;;;:::o;6871:1037::-;1313:13;:11;:13::i;:::-;7026:24:::1;7061:21;7120:4;;7109:27;;;;;;;:::i;:::-;7095:41;;7164:4;;7169:2;7164:25;7177:11;7172:2;:16;;;;:::i;:::-;7164:25;;;;;;;:::i;:::-;7147:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7203:23;7229:28;:40;7258:10;7229:40;;;;;;;;;;;;;;;;;;;;;7203:66;;7288:18;:35;7307:15;7288:35;;;;;;;;;;;;;;;;;;;;;;;;;7280:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;7384:10;7397:42;:59;7440:15;7397:59;;;;;;;;;;;;;;;;;;;;;;;;;7384:72;;7485:1;7478:9;;7471:16;;;:3;:16;;;;7467:240;;7504:21;7545:3;7550:8;7528:31;;;;;;;;;:::i;:::-;;;;;;;;;;;;;7504:55;;7575:12;7592:15;:20;;7613:8;7592:30;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7574:48;;;7645:7;7637:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;7489:218;;7467:240;7771:129;;;;;;;;7799:18;7771:129;;;;;;7832:9;7771:129;;;;;;7856:10;7771:129;;;;7881:8;7771:129;;::::0;7719:15:::1;:35;7735:18;7719:35;;;;;;;;;;;;;;;:49;7755:12;7719:49;;;;;;;;;;;;;;;:181;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;7015:893;;;;6871:1037:::0;;;;;;:::o;573:74::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1220:51::-;;;;;;;;;;;;;;;;;;;;;;:::o;1085:77::-;;;;;;;;;;;;;;;;;;;;;;:::o;4503:169::-;4587:20;;:::i;:::-;4627:15;:23;4643:6;4627:23;;;;;;;;;;;;;;;:37;4651:12;4627:37;;;;;;;;;;;;;;;4620:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4503:169;;;;:::o;5655:285::-;1313:13;:11;:13::i;:::-;5851:81:::1;5864:10;5876:15;5893:18;5913;5851:12;:81::i;:::-;5655:285:::0;;;;:::o;695:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;935:77::-;;;;;;;;;;;;;;;;;;;;;;:::o;8583:785::-;1313:13;:11;:13::i;:::-;8680:24:::1;8715:21;8774:4;;8763:27;;;;;;;:::i;:::-;8749:41;;8818:4;;8823:2;8818:25;8831:11;8826:2;:16;;;;:::i;:::-;8818:25;;;;;;;:::i;:::-;8801:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8857:23;8883:28;:40;8912:10;8883:40;;;;;;;;;;;;;;;;;;;;;8857:66;;8942:18;:35;8961:15;8942:35;;;;;;;;;;;;;;;;;;;;;;;;;8934:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9038:10;9051:42;:59;9094:15;9051:59;;;;;;;;;;;;;;;;;;;;;;;;;9038:72;;9139:1;9132:9;;9125:16;;;:3;:16;;;;9121:240;;9158:21;9199:3;9204:8;9182:31;;;;;;;;;:::i;:::-;;;;;;;;;;;;;9158:55;;9229:12;9246:15;:20;;9267:8;9246:30;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9228:48;;;9299:7;9291:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;9143:218;;9121:240;8669:699;;;;8583:785:::0;;;:::o;807:64::-;;;;;;;;;;;;;;;;;:::o;1354:127::-;1424:14;;;;;;;;;;1410:28;;:10;:28;;;1402:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;1354:127::o;9376:556::-;9603:15;9560:28;:40;9589:10;9560:40;;;;;;;;;;;;:58;;;;;;;;;;;;;;;;;;9677:10;9629:28;:45;9658:15;9629:45;;;;;;;;;;;;;;;:58;;;;9760:18;9698:42;:59;9741:15;9698:59;;;;;;;;;;;;;;;;:80;;;;;;;;;;;;;;;;;;9851:18;9789:42;:59;9832:15;9789:59;;;;;;;;;;;;;;;;:80;;;;;;;;;;;;;;;;;;9920:4;9882:18;:35;9901:15;9882:35;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;9376:556;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:126:66:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:96::-;176:7;205:24;223:5;205:24;:::i;:::-;194:35;;139:96;;;:::o;241:118::-;328:24;346:5;328:24;:::i;:::-;323:3;316:37;241:118;;:::o;365:222::-;458:4;496:2;485:9;481:18;473:26;;509:71;577:1;566:9;562:17;553:6;509:71;:::i;:::-;365:222;;;;:::o;674:117::-;783:1;780;773:12;797:117;906:1;903;896:12;920:77;957:7;986:5;975:16;;920:77;;;:::o;1003:122::-;1076:24;1094:5;1076:24;:::i;:::-;1069:5;1066:35;1056:63;;1115:1;1112;1105:12;1056:63;1003:122;:::o;1131:139::-;1177:5;1215:6;1202:20;1193:29;;1231:33;1258:5;1231:33;:::i;:::-;1131:139;;;;:::o;1276:86::-;1311:7;1351:4;1344:5;1340:16;1329:27;;1276:86;;;:::o;1368:118::-;1439:22;1455:5;1439:22;:::i;:::-;1432:5;1429:33;1419:61;;1476:1;1473;1466:12;1419:61;1368:118;:::o;1492:135::-;1536:5;1574:6;1561:20;1552:29;;1590:31;1615:5;1590:31;:::i;:::-;1492:135;;;;:::o;1633:101::-;1669:7;1709:18;1702:5;1698:30;1687:41;;1633:101;;;:::o;1740:120::-;1812:23;1829:5;1812:23;:::i;:::-;1805:5;1802:34;1792:62;;1850:1;1847;1840:12;1792:62;1740:120;:::o;1866:137::-;1911:5;1949:6;1936:20;1927:29;;1965:32;1991:5;1965:32;:::i;:::-;1866:137;;;;:::o;2009:122::-;2082:24;2100:5;2082:24;:::i;:::-;2075:5;2072:35;2062:63;;2121:1;2118;2111:12;2062:63;2009:122;:::o;2137:139::-;2183:5;2221:6;2208:20;2199:29;;2237:33;2264:5;2237:33;:::i;:::-;2137:139;;;;:::o;2282:117::-;2391:1;2388;2381:12;2405:117;2514:1;2511;2504:12;2528:117;2637:1;2634;2627:12;2664:552;2721:8;2731:6;2781:3;2774:4;2766:6;2762:17;2758:27;2748:122;;2789:79;;:::i;:::-;2748:122;2902:6;2889:20;2879:30;;2932:18;2924:6;2921:30;2918:117;;;2954:79;;:::i;:::-;2918:117;3068:4;3060:6;3056:17;3044:29;;3122:3;3114:4;3106:6;3102:17;3092:8;3088:32;3085:41;3082:128;;;3129:79;;:::i;:::-;3082:128;2664:552;;;;;:::o;3222:1103::-;3325:6;3333;3341;3349;3357;3365;3414:3;3402:9;3393:7;3389:23;3385:33;3382:120;;;3421:79;;:::i;:::-;3382:120;3541:1;3566:53;3611:7;3602:6;3591:9;3587:22;3566:53;:::i;:::-;3556:63;;3512:117;3668:2;3694:51;3737:7;3728:6;3717:9;3713:22;3694:51;:::i;:::-;3684:61;;3639:116;3794:2;3820:52;3864:7;3855:6;3844:9;3840:22;3820:52;:::i;:::-;3810:62;;3765:117;3921:2;3947:53;3992:7;3983:6;3972:9;3968:22;3947:53;:::i;:::-;3937:63;;3892:118;4077:3;4066:9;4062:19;4049:33;4109:18;4101:6;4098:30;4095:117;;;4131:79;;:::i;:::-;4095:117;4244:64;4300:7;4291:6;4280:9;4276:22;4244:64;:::i;:::-;4226:82;;;;4020:298;3222:1103;;;;;;;;:::o;4331:468::-;4396:6;4404;4453:2;4441:9;4432:7;4428:23;4424:32;4421:119;;;4459:79;;:::i;:::-;4421:119;4579:1;4604:51;4647:7;4638:6;4627:9;4623:22;4604:51;:::i;:::-;4594:61;;4550:115;4704:2;4730:52;4774:7;4765:6;4754:9;4750:22;4730:52;:::i;:::-;4720:62;;4675:117;4331:468;;;;;:::o;4805:112::-;4888:22;4904:5;4888:22;:::i;:::-;4883:3;4876:35;4805:112;;:::o;4923:118::-;5010:24;5028:5;5010:24;:::i;:::-;5005:3;4998:37;4923:118;;:::o;5047:98::-;5098:6;5132:5;5126:12;5116:22;;5047:98;;;:::o;5151:168::-;5234:11;5268:6;5263:3;5256:19;5308:4;5303:3;5299:14;5284:29;;5151:168;;;;:::o;5325:246::-;5406:1;5416:113;5430:6;5427:1;5424:13;5416:113;;;5515:1;5510:3;5506:11;5500:18;5496:1;5491:3;5487:11;5480:39;5452:2;5449:1;5445:10;5440:15;;5416:113;;;5563:1;5554:6;5549:3;5545:16;5538:27;5387:184;5325:246;;;:::o;5577:102::-;5618:6;5669:2;5665:7;5660:2;5653:5;5649:14;5645:28;5635:38;;5577:102;;;:::o;5685:373::-;5771:3;5799:38;5831:5;5799:38;:::i;:::-;5853:70;5916:6;5911:3;5853:70;:::i;:::-;5846:77;;5932:65;5990:6;5985:3;5978:4;5971:5;5967:16;5932:65;:::i;:::-;6022:29;6044:6;6022:29;:::i;:::-;6017:3;6013:39;6006:46;;5775:283;5685:373;;;;:::o;6064:632::-;6255:4;6293:3;6282:9;6278:19;6270:27;;6307:67;6371:1;6360:9;6356:17;6347:6;6307:67;:::i;:::-;6384:72;6452:2;6441:9;6437:18;6428:6;6384:72;:::i;:::-;6466;6534:2;6523:9;6519:18;6510:6;6466:72;:::i;:::-;6585:9;6579:4;6575:20;6570:2;6559:9;6555:18;6548:48;6613:76;6684:4;6675:6;6613:76;:::i;:::-;6605:84;;6064:632;;;;;;;:::o;6702:329::-;6761:6;6810:2;6798:9;6789:7;6785:23;6781:32;6778:119;;;6816:79;;:::i;:::-;6778:119;6936:1;6961:53;7006:7;6997:6;6986:9;6982:22;6961:53;:::i;:::-;6951:63;;6907:117;6702:329;;;;:::o;7037:90::-;7071:7;7114:5;7107:13;7100:21;7089:32;;7037:90;;;:::o;7133:109::-;7214:21;7229:5;7214:21;:::i;:::-;7209:3;7202:34;7133:109;;:::o;7248:210::-;7335:4;7373:2;7362:9;7358:18;7350:26;;7386:65;7448:1;7437:9;7433:17;7424:6;7386:65;:::i;:::-;7248:210;;;;:::o;7464:149::-;7500:7;7540:66;7533:5;7529:78;7518:89;;7464:149;;;:::o;7619:115::-;7704:23;7721:5;7704:23;:::i;:::-;7699:3;7692:36;7619:115;;:::o;7740:218::-;7831:4;7869:2;7858:9;7854:18;7846:26;;7882:69;7948:1;7937:9;7933:17;7924:6;7882:69;:::i;:::-;7740:218;;;;:::o;7964:468::-;8029:6;8037;8086:2;8074:9;8065:7;8061:23;8057:32;8054:119;;;8092:79;;:::i;:::-;8054:119;8212:1;8237:52;8281:7;8272:6;8261:9;8257:22;8237:52;:::i;:::-;8227:62;;8183:116;8338:2;8364:51;8407:7;8398:6;8387:9;8383:22;8364:51;:::i;:::-;8354:61;;8309:116;7964:468;;;;;:::o;8438:102::-;8511:22;8527:5;8511:22;:::i;:::-;8506:3;8499:35;8438:102;;:::o;8546:108::-;8623:24;8641:5;8623:24;:::i;:::-;8618:3;8611:37;8546:108;;:::o;8660:::-;8737:24;8755:5;8737:24;:::i;:::-;8732:3;8725:37;8660:108;;:::o;8774:158::-;8847:11;8881:6;8876:3;8869:19;8921:4;8916:3;8912:14;8897:29;;8774:158;;;;:::o;8938:353::-;9014:3;9042:38;9074:5;9042:38;:::i;:::-;9096:60;9149:6;9144:3;9096:60;:::i;:::-;9089:67;;9165:65;9223:6;9218:3;9211:4;9204:5;9200:16;9165:65;:::i;:::-;9255:29;9277:6;9255:29;:::i;:::-;9250:3;9246:39;9239:46;;9018:273;8938:353;;;;:::o;9379:993::-;9510:3;9546:4;9541:3;9537:14;9648:4;9641:5;9637:16;9631:23;9667:59;9720:4;9715:3;9711:14;9697:12;9667:59;:::i;:::-;9561:175;9824:4;9817:5;9813:16;9807:23;9843:63;9900:4;9895:3;9891:14;9877:12;9843:63;:::i;:::-;9746:170;10005:4;9998:5;9994:16;9988:23;10024:63;10081:4;10076:3;10072:14;10058:12;10024:63;:::i;:::-;9926:171;10184:4;10177:5;10173:16;10167:23;10237:3;10231:4;10227:14;10220:4;10215:3;10211:14;10204:38;10263:71;10329:4;10315:12;10263:71;:::i;:::-;10255:79;;10107:238;10362:4;10355:11;;9515:857;9379:993;;;;:::o;10378:397::-;10533:4;10571:2;10560:9;10556:18;10548:26;;10620:9;10614:4;10610:20;10606:1;10595:9;10591:17;10584:47;10648:120;10763:4;10754:6;10648:120;:::i;:::-;10640:128;;10378:397;;;;:::o;10781:120::-;10853:23;10870:5;10853:23;:::i;:::-;10846:5;10843:34;10833:62;;10891:1;10888;10881:12;10833:62;10781:120;:::o;10907:137::-;10952:5;10990:6;10977:20;10968:29;;11006:32;11032:5;11006:32;:::i;:::-;10907:137;;;;:::o;11050:761::-;11134:6;11142;11150;11158;11207:3;11195:9;11186:7;11182:23;11178:33;11175:120;;;11214:79;;:::i;:::-;11175:120;11334:1;11359:53;11404:7;11395:6;11384:9;11380:22;11359:53;:::i;:::-;11349:63;;11305:117;11461:2;11487:53;11532:7;11523:6;11512:9;11508:22;11487:53;:::i;:::-;11477:63;;11432:118;11589:2;11615:52;11659:7;11650:6;11639:9;11635:22;11615:52;:::i;:::-;11605:62;;11560:117;11716:2;11742:52;11786:7;11777:6;11766:9;11762:22;11742:52;:::i;:::-;11732:62;;11687:117;11050:761;;;;;;;:::o;11817:329::-;11876:6;11925:2;11913:9;11904:7;11900:23;11896:32;11893:119;;;11931:79;;:::i;:::-;11893:119;12051:1;12076:53;12121:7;12112:6;12101:9;12097:22;12076:53;:::i;:::-;12066:63;;12022:117;11817:329;;;;:::o;12152:672::-;12231:6;12239;12247;12296:2;12284:9;12275:7;12271:23;12267:32;12264:119;;;12302:79;;:::i;:::-;12264:119;12422:1;12447:53;12492:7;12483:6;12472:9;12468:22;12447:53;:::i;:::-;12437:63;;12393:117;12577:2;12566:9;12562:18;12549:32;12608:18;12600:6;12597:30;12594:117;;;12630:79;;:::i;:::-;12594:117;12743:64;12799:7;12790:6;12779:9;12775:22;12743:64;:::i;:::-;12725:82;;;;12520:297;12152:672;;;;;:::o;12830:222::-;12923:4;12961:2;12950:9;12946:18;12938:26;;12974:71;13042:1;13031:9;13027:17;13018:6;12974:71;:::i;:::-;12830:222;;;;:::o;13058:77::-;13095:7;13124:5;13113:16;;13058:77;;;:::o;13141:122::-;13214:24;13232:5;13214:24;:::i;:::-;13207:5;13204:35;13194:63;;13253:1;13250;13243:12;13194:63;13141:122;:::o;13269:139::-;13315:5;13353:6;13340:20;13331:29;;13369:33;13396:5;13369:33;:::i;:::-;13269:139;;;;:::o;13414:329::-;13473:6;13522:2;13510:9;13501:7;13497:23;13493:32;13490:119;;;13528:79;;:::i;:::-;13490:119;13648:1;13673:53;13718:7;13709:6;13698:9;13694:22;13673:53;:::i;:::-;13663:63;;13619:117;13414:329;;;;:::o;13749:180::-;13797:77;13794:1;13787:88;13894:4;13891:1;13884:15;13918:4;13915:1;13908:15;13935:191;13975:3;13994:20;14012:1;13994:20;:::i;:::-;13989:25;;14028:20;14046:1;14028:20;:::i;:::-;14023:25;;14071:1;14068;14064:9;14057:16;;14092:3;14089:1;14086:10;14083:36;;;14099:18;;:::i;:::-;14083:36;13935:191;;;;:::o;14132:117::-;14241:1;14238;14231:12;14255:117;14364:1;14361;14354:12;14378:469;14483:9;14494;14532:8;14520:10;14517:24;14514:111;;;14544:79;;:::i;:::-;14514:111;14650:6;14640:8;14637:20;14634:107;;;14660:79;;:::i;:::-;14634:107;14791:1;14779:10;14775:18;14767:6;14763:31;14750:44;;14830:10;14820:8;14816:25;14803:38;;14378:469;;;;;;;:::o;14853:169::-;14937:11;14971:6;14966:3;14959:19;15011:4;15006:3;15002:14;14987:29;;14853:169;;;;:::o;15028:230::-;15168:34;15164:1;15156:6;15152:14;15145:58;15237:13;15232:2;15224:6;15220:15;15213:38;15028:230;:::o;15264:366::-;15406:3;15427:67;15491:2;15486:3;15427:67;:::i;:::-;15420:74;;15503:93;15592:3;15503:93;:::i;:::-;15621:2;15616:3;15612:12;15605:19;;15264:366;;;:::o;15636:419::-;15802:4;15840:2;15829:9;15825:18;15817:26;;15889:9;15883:4;15879:20;15875:1;15864:9;15860:17;15853:47;15917:131;16043:4;15917:131;:::i;:::-;15909:139;;15636:419;;;:::o;16061:78::-;16099:7;16128:5;16117:16;;16061:78;;;:::o;16145:153::-;16248:43;16267:23;16284:5;16267:23;:::i;:::-;16248:43;:::i;:::-;16243:3;16236:56;16145:153;;:::o;16304:147::-;16405:11;16442:3;16427:18;;16304:147;;;;:::o;16457:386::-;16561:3;16589:38;16621:5;16589:38;:::i;:::-;16643:88;16724:6;16719:3;16643:88;:::i;:::-;16636:95;;16740:65;16798:6;16793:3;16786:4;16779:5;16775:16;16740:65;:::i;:::-;16830:6;16825:3;16821:16;16814:23;;16565:278;16457:386;;;;:::o;16849:407::-;17005:3;17020:73;17089:3;17080:6;17020:73;:::i;:::-;17118:1;17113:3;17109:11;17102:18;;17137:93;17226:3;17217:6;17137:93;:::i;:::-;17130:100;;17247:3;17240:10;;16849:407;;;;;:::o;17262:271::-;17392:3;17414:93;17503:3;17494:6;17414:93;:::i;:::-;17407:100;;17524:3;17517:10;;17262:271;;;;:::o;17539:225::-;17679:34;17675:1;17667:6;17663:14;17656:58;17748:8;17743:2;17735:6;17731:15;17724:33;17539:225;:::o;17770:366::-;17912:3;17933:67;17997:2;17992:3;17933:67;:::i;:::-;17926:74;;18009:93;18098:3;18009:93;:::i;:::-;18127:2;18122:3;18118:12;18111:19;;17770:366;;;:::o;18142:419::-;18308:4;18346:2;18335:9;18331:18;18323:26;;18395:9;18389:4;18385:20;18381:1;18370:9;18366:17;18359:47;18423:131;18549:4;18423:131;:::i;:::-;18415:139;;18142:419;;;:::o;18567:180::-;18615:77;18612:1;18605:88;18712:4;18709:1;18702:15;18736:4;18733:1;18726:15;18753:180;18801:77;18798:1;18791:88;18898:4;18895:1;18888:15;18922:4;18919:1;18912:15;18939:320;18983:6;19020:1;19014:4;19010:12;19000:22;;19067:1;19061:4;19057:12;19088:18;19078:81;;19144:4;19136:6;19132:17;19122:27;;19078:81;19206:2;19198:6;19195:14;19175:18;19172:38;19169:84;;19225:18;;:::i;:::-;19169:84;18990:269;18939:320;;;:::o;19265:140::-;19313:4;19336:3;19328:11;;19359:3;19356:1;19349:14;19393:4;19390:1;19380:18;19372:26;;19265:140;;;:::o;19411:93::-;19448:6;19495:2;19490;19483:5;19479:14;19475:23;19465:33;;19411:93;;;:::o;19510:107::-;19554:8;19604:5;19598:4;19594:16;19573:37;;19510:107;;;;:::o;19623:393::-;19692:6;19742:1;19730:10;19726:18;19765:97;19795:66;19784:9;19765:97;:::i;:::-;19883:39;19913:8;19902:9;19883:39;:::i;:::-;19871:51;;19955:4;19951:9;19944:5;19940:21;19931:30;;20004:4;19994:8;19990:19;19983:5;19980:30;19970:40;;19699:317;;19623:393;;;;;:::o;20022:60::-;20050:3;20071:5;20064:12;;20022:60;;;:::o;20088:142::-;20138:9;20171:53;20189:34;20198:24;20216:5;20198:24;:::i;:::-;20189:34;:::i;:::-;20171:53;:::i;:::-;20158:66;;20088:142;;;:::o;20236:75::-;20279:3;20300:5;20293:12;;20236:75;;;:::o;20317:269::-;20427:39;20458:7;20427:39;:::i;:::-;20488:91;20537:41;20561:16;20537:41;:::i;:::-;20529:6;20522:4;20516:11;20488:91;:::i;:::-;20482:4;20475:105;20393:193;20317:269;;;:::o;20592:73::-;20637:3;20592:73;:::o;20671:189::-;20748:32;;:::i;:::-;20789:65;20847:6;20839;20833:4;20789:65;:::i;:::-;20724:136;20671:189;;:::o;20866:186::-;20926:120;20943:3;20936:5;20933:14;20926:120;;;20997:39;21034:1;21027:5;20997:39;:::i;:::-;20970:1;20963:5;20959:13;20950:22;;20926:120;;;20866:186;;:::o;21058:541::-;21158:2;21153:3;21150:11;21147:445;;;21192:37;21223:5;21192:37;:::i;:::-;21275:29;21293:10;21275:29;:::i;:::-;21265:8;21261:44;21458:2;21446:10;21443:18;21440:49;;;21479:8;21464:23;;21440:49;21502:80;21558:22;21576:3;21558:22;:::i;:::-;21548:8;21544:37;21531:11;21502:80;:::i;:::-;21162:430;;21147:445;21058:541;;;:::o;21605:117::-;21659:8;21709:5;21703:4;21699:16;21678:37;;21605:117;;;;:::o;21728:169::-;21772:6;21805:51;21853:1;21849:6;21841:5;21838:1;21834:13;21805:51;:::i;:::-;21801:56;21886:4;21880;21876:15;21866:25;;21779:118;21728:169;;;;:::o;21902:295::-;21978:4;22124:29;22149:3;22143:4;22124:29;:::i;:::-;22116:37;;22186:3;22183:1;22179:11;22173:4;22170:21;22162:29;;21902:295;;;;:::o;22202:1390::-;22317:36;22349:3;22317:36;:::i;:::-;22418:18;22410:6;22407:30;22404:56;;;22440:18;;:::i;:::-;22404:56;22484:38;22516:4;22510:11;22484:38;:::i;:::-;22569:66;22628:6;22620;22614:4;22569:66;:::i;:::-;22662:1;22686:4;22673:17;;22718:2;22710:6;22707:14;22735:1;22730:617;;;;23391:1;23408:6;23405:77;;;23457:9;23452:3;23448:19;23442:26;23433:35;;23405:77;23508:67;23568:6;23561:5;23508:67;:::i;:::-;23502:4;23495:81;23364:222;22700:886;;22730:617;22782:4;22778:9;22770:6;22766:22;22816:36;22847:4;22816:36;:::i;:::-;22874:1;22888:208;22902:7;22899:1;22896:14;22888:208;;;22981:9;22976:3;22972:19;22966:26;22958:6;22951:42;23032:1;23024:6;23020:14;23010:24;;23079:2;23068:9;23064:18;23051:31;;22925:4;22922:1;22918:12;22913:17;;22888:208;;;23124:6;23115:7;23112:19;23109:179;;;23182:9;23177:3;23173:19;23167:26;23225:48;23267:4;23259:6;23255:17;23244:9;23225:48;:::i;:::-;23217:6;23210:64;23132:156;23109:179;23334:1;23330;23322:6;23318:14;23314:22;23308:4;23301:36;22737:610;;;22700:886;;22292:1300;;;22202:1390;;:::o;23598:180::-;23738:32;23734:1;23726:6;23722:14;23715:56;23598:180;:::o;23784:366::-;23926:3;23947:67;24011:2;24006:3;23947:67;:::i;:::-;23940:74;;24023:93;24112:3;24023:93;:::i;:::-;24141:2;24136:3;24132:12;24125:19;;23784:366;;;:::o;24156:419::-;24322:4;24360:2;24349:9;24345:18;24337:26;;24409:9;24403:4;24399:20;24395:1;24384:9;24380:17;24373:47;24437:131;24563:4;24437:131;:::i;:::-;24429:139;;24156:419;;;:::o", + "source": "// SPDX-License-Identifier: MIT\r\npragma solidity 0.8.19;\r\n\r\nimport \"../interfaces/IGenericHandler.sol\";\r\n/**\r\n @title Handles generic deposits and deposit executions.\r\n @author ChainSafe Systems.\r\n @notice This contract is intended to be used with the Bridge contract.\r\n */\r\ncontract GenericHandler is IGenericHandler {\r\n address public _bridgeAddress;\r\n\r\n struct DepositRecord {\r\n uint8 _destinationChainID;\r\n address _depositer;\r\n bytes32 _resourceID;\r\n bytes _metaData;\r\n }\r\n\r\n // depositNonce => Deposit Record\r\n mapping (uint8 => mapping(uint64 => DepositRecord)) public _depositRecords;\r\n\r\n // resourceID => contract address\r\n mapping (bytes32 => address) public _resourceIDToContractAddress;\r\n\r\n // contract address => resourceID\r\n mapping (address => bytes32) public _contractAddressToResourceID;\r\n\r\n // contract address => deposit function signature\r\n mapping (address => bytes4) public _contractAddressToDepositFunctionSignature;\r\n\r\n // contract address => execute proposal function signature\r\n mapping (address => bytes4) public _contractAddressToExecuteFunctionSignature;\r\n\r\n // token contract address => is whitelisted\r\n mapping (address => bool) public _contractWhitelist;\r\n\r\n modifier onlyBridge() {\r\n _onlyBridge();\r\n _;\r\n }\r\n\r\n function _onlyBridge() private view {\r\n require(msg.sender == _bridgeAddress, \"sender must be bridge contract\");\r\n }\r\n\r\n /**\r\n @param bridgeAddress Contract address of previously deployed Bridge.\r\n @param initialResourceIDs Resource IDs used to identify a specific contract address.\r\n These are the Resource IDs this contract will initially support.\r\n @param initialContractAddresses These are the addresses the {initialResourceIDs} will point to, and are the contracts that will be\r\n called to perform deposit and execution calls.\r\n @param initialDepositFunctionSignatures These are the function signatures {initialContractAddresses} will point to,\r\n and are the function that will be called when executing {deposit}\r\n @param initialExecuteFunctionSignatures These are the function signatures {initialContractAddresses} will point to,\r\n and are the function that will be called when executing {executeProposal}\r\n\r\n @dev {initialResourceIDs}, {initialContractAddresses}, {initialDepositFunctionSignatures},\r\n and {initialExecuteFunctionSignatures} must all have the same length. Also,\r\n values must be ordered in the way that that index x of any mentioned array\r\n must be intended for value x of any other array, e.g. {initialContractAddresses}[0]\r\n is the intended address for {initialDepositFunctionSignatures}[0].\r\n */\r\n constructor(\r\n address bridgeAddress,\r\n bytes32[] memory initialResourceIDs,\r\n address[] memory initialContractAddresses,\r\n bytes4[] memory initialDepositFunctionSignatures,\r\n bytes4[] memory initialExecuteFunctionSignatures\r\n ) {\r\n require(initialResourceIDs.length == initialContractAddresses.length,\r\n \"initialResourceIDs and initialContractAddresses len mismatch\");\r\n\r\n require(initialContractAddresses.length == initialDepositFunctionSignatures.length,\r\n \"provided contract addresses and function signatures len mismatch\");\r\n\r\n require(initialDepositFunctionSignatures.length == initialExecuteFunctionSignatures.length,\r\n \"provided deposit and execute function signatures len mismatch\");\r\n\r\n _bridgeAddress = bridgeAddress;\r\n\r\n for (uint256 i = 0; i < initialResourceIDs.length; i++) {\r\n _setResource(\r\n initialResourceIDs[i],\r\n initialContractAddresses[i],\r\n initialDepositFunctionSignatures[i],\r\n initialExecuteFunctionSignatures[i]);\r\n }\r\n }\r\n\r\n /**\r\n @param depositNonce This ID will have been generated by the Bridge contract.\r\n @param destId ID of chain deposit will be bridged to.\r\n @return DepositRecord which consists of:\r\n - _destinationChainID ChainID deposited tokens are intended to end up on.\r\n - _resourceID ResourceID used when {deposit} was executed.\r\n - _depositer Address that initially called {deposit} in the Bridge contract.\r\n - _metaData Data to be passed to method executed in corresponding {resourceID} contract.\r\n */\r\n function getDepositRecord(uint64 depositNonce, uint8 destId) external view returns (DepositRecord memory) {\r\n return _depositRecords[destId][depositNonce];\r\n }\r\n\r\n /**\r\n @notice First verifies {_resourceIDToContractAddress}[{resourceID}] and\r\n {_contractAddressToResourceID}[{contractAddress}] are not already set,\r\n then sets {_resourceIDToContractAddress} with {contractAddress},\r\n {_contractAddressToResourceID} with {resourceID},\r\n {_contractAddressToDepositFunctionSignature} with {depositFunctionSig},\r\n {_contractAddressToExecuteFunctionSignature} with {executeFunctionSig},\r\n and {_contractWhitelist} to true for {contractAddress}.\r\n @param resourceID ResourceID to be used when making deposits.\r\n @param contractAddress Address of contract to be called when a deposit is made and a deposited is executed.\r\n @param depositFunctionSig Function signature of method to be called in {contractAddress} when a deposit is made.\r\n @param executeFunctionSig Function signature of method to be called in {contractAddress} when a deposit is executed.\r\n */\r\n function setResource(\r\n bytes32 resourceID,\r\n address contractAddress,\r\n bytes4 depositFunctionSig,\r\n bytes4 executeFunctionSig\r\n ) external onlyBridge {\r\n\r\n _setResource(resourceID, contractAddress, depositFunctionSig, executeFunctionSig);\r\n }\r\n\r\n /**\r\n @notice A deposit is initiatied by making a deposit in the Bridge contract.\r\n @param destinationChainID Chain ID deposit is expected to be bridged to.\r\n @param depositNonce This value is generated as an ID by the Bridge contract.\r\n @param depositer Address of account making the deposit in the Bridge contract.\r\n @param data Consists of: {resourceID}, {lenMetaData}, and {metaData} all padded to 32 bytes.\r\n @notice Data passed into the function should be constructed as follows:\r\n len(data) uint256 bytes 0 - 32\r\n data bytes bytes 64 - END\r\n @notice {contractAddress} is required to be whitelisted\r\n @notice If {_contractAddressToDepositFunctionSignature}[{contractAddress}] is set,\r\n {metaData} is expected to consist of needed function arguments.\r\n */\r\n function deposit(bytes32 resourceID, uint8 destinationChainID, uint64 depositNonce, address depositer, bytes calldata data) external onlyBridge {\r\n uint256 lenMetadata;\r\n bytes memory metadata;\r\n\r\n lenMetadata = abi.decode(data, (uint256));\r\n metadata = bytes(data[32:32 + lenMetadata]);\r\n\r\n address contractAddress = _resourceIDToContractAddress[resourceID];\r\n require(_contractWhitelist[contractAddress], \"provided contractAddress is not whitelisted\");\r\n\r\n bytes4 sig = _contractAddressToDepositFunctionSignature[contractAddress];\r\n if (sig != bytes4(0)) {\r\n bytes memory callData = abi.encodePacked(sig, metadata);\r\n (bool success,) = contractAddress.call(callData);\r\n require(success, \"delegatecall to contractAddress failed\");\r\n }\r\n\r\n _depositRecords[destinationChainID][depositNonce] = DepositRecord(\r\n destinationChainID,\r\n depositer,\r\n resourceID,\r\n metadata\r\n );\r\n }\r\n\r\n /**\r\n @notice Proposal execution should be initiated when a proposal is finalized in the Bridge contract.\r\n @param data Consists of {resourceID}, {lenMetaData}, and {metaData}.\r\n @notice Data passed into the function should be constructed as follows:\r\n len(data) uint256 bytes 0 - 32\r\n data bytes bytes 32 - END\r\n @notice {contractAddress} is required to be whitelisted\r\n @notice If {_contractAddressToExecuteFunctionSignature}[{contractAddress}] is set,\r\n {metaData} is expected to consist of needed function arguments.\r\n */\r\n function executeProposal(bytes32 resourceID, bytes calldata data) external onlyBridge {\r\n uint256 lenMetadata;\r\n bytes memory metaData;\r\n\r\n lenMetadata = abi.decode(data, (uint256));\r\n metaData = bytes(data[32:32 + lenMetadata]);\r\n\r\n address contractAddress = _resourceIDToContractAddress[resourceID];\r\n require(_contractWhitelist[contractAddress], \"provided contractAddress is not whitelisted\");\r\n\r\n bytes4 sig = _contractAddressToExecuteFunctionSignature[contractAddress];\r\n if (sig != bytes4(0)) {\r\n bytes memory callData = abi.encodePacked(sig, metaData);\r\n (bool success,) = contractAddress.call(callData);\r\n require(success, \"delegatecall to contractAddress failed\");\r\n }\r\n }\r\n\r\n function _setResource(\r\n bytes32 resourceID,\r\n address contractAddress,\r\n bytes4 depositFunctionSig,\r\n bytes4 executeFunctionSig\r\n ) internal {\r\n _resourceIDToContractAddress[resourceID] = contractAddress;\r\n _contractAddressToResourceID[contractAddress] = resourceID;\r\n _contractAddressToDepositFunctionSignature[contractAddress] = depositFunctionSig;\r\n _contractAddressToExecuteFunctionSignature[contractAddress] = executeFunctionSig;\r\n\r\n _contractWhitelist[contractAddress] = true;\r\n }\r\n}\r\n", + "sourcePath": "/mnt/d/SourceTree/CAN_bridge_sol/contracts/handlers/GenericHandler.sol", + "ast": { + "absolutePath": "project:/contracts/handlers/GenericHandler.sol", + "exportedSymbols": { + "GenericHandler": [ + 3077 + ], + "IGenericHandler": [ + 3307 + ] + }, + "id": 3078, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2664, + "literals": [ + "solidity", + "0.8", + ".19" + ], + "nodeType": "PragmaDirective", + "src": "33:23:22" + }, + { + "absolutePath": "project:/contracts/interfaces/IGenericHandler.sol", + "file": "../interfaces/IGenericHandler.sol", + "id": 2665, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3078, + "sourceUnit": 3308, + "src": "60:43:22", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 2667, + "name": "IGenericHandler", + "nameLocations": [ + "311:15:22" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3307, + "src": "311:15:22" + }, + "id": 2668, + "nodeType": "InheritanceSpecifier", + "src": "311:15:22" + } + ], + "canonicalName": "GenericHandler", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 2666, + "nodeType": "StructuredDocumentation", + "src": "105:177:22", + "text": "@title Handles generic deposits and deposit executions.\n@author ChainSafe Systems.\n@notice This contract is intended to be used with the Bridge contract." + }, + "fullyImplemented": true, + "id": 3077, + "linearizedBaseContracts": [ + 3077, + 3307 + ], + "name": "GenericHandler", + "nameLocation": "293:14:22", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "functionSelector": "318c136e", + "id": 2670, + "mutability": "mutable", + "name": "_bridgeAddress", + "nameLocation": "349:14:22", + "nodeType": "VariableDeclaration", + "scope": 3077, + "src": "334:29:22", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2669, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "334:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "public" + }, + { + "canonicalName": "GenericHandler.DepositRecord", + "id": 2679, + "members": [ + { + "constant": false, + "id": 2672, + "mutability": "mutable", + "name": "_destinationChainID", + "nameLocation": "412:19:22", + "nodeType": "VariableDeclaration", + "scope": 2679, + "src": "404:27:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 2671, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "404:5:22", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2674, + "mutability": "mutable", + "name": "_depositer", + "nameLocation": "450:10:22", + "nodeType": "VariableDeclaration", + "scope": 2679, + "src": "442:18:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2673, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "442:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2676, + "mutability": "mutable", + "name": "_resourceID", + "nameLocation": "479:11:22", + "nodeType": "VariableDeclaration", + "scope": 2679, + "src": "471:19:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2675, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "471:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2678, + "mutability": "mutable", + "name": "_metaData", + "nameLocation": "509:9:22", + "nodeType": "VariableDeclaration", + "scope": 2679, + "src": "501:17:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2677, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "501:5:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "name": "DepositRecord", + "nameLocation": "379:13:22", + "nodeType": "StructDefinition", + "scope": 3077, + "src": "372:154:22", + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "4402027f", + "id": 2686, + "mutability": "mutable", + "name": "_depositRecords", + "nameLocation": "632:15:22", + "nodeType": "VariableDeclaration", + "scope": 3077, + "src": "573:74:22", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint8_$_t_mapping$_t_uint64_$_t_struct$_DepositRecord_$2679_storage_$_$", + "typeString": "mapping(uint8 => mapping(uint64 => struct GenericHandler.DepositRecord))" + }, + "typeName": { + "id": 2685, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 2680, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "582:5:22", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Mapping", + "src": "573:51:22", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint8_$_t_mapping$_t_uint64_$_t_struct$_DepositRecord_$2679_storage_$_$", + "typeString": "mapping(uint8 => mapping(uint64 => struct GenericHandler.DepositRecord))" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 2684, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 2681, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "599:6:22", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "Mapping", + "src": "591:32:22", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_DepositRecord_$2679_storage_$", + "typeString": "mapping(uint64 => struct GenericHandler.DepositRecord)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 2683, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2682, + "name": "DepositRecord", + "nameLocations": [ + "609:13:22" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2679, + "src": "609:13:22" + }, + "referencedDeclaration": 2679, + "src": "609:13:22", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DepositRecord_$2679_storage_ptr", + "typeString": "struct GenericHandler.DepositRecord" + } + } + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "c54c2a11", + "id": 2690, + "mutability": "mutable", + "name": "_resourceIDToContractAddress", + "nameLocation": "731:28:22", + "nodeType": "VariableDeclaration", + "scope": 3077, + "src": "695:64:22", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + }, + "typeName": { + "id": 2689, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 2687, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "704:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "695:28:22", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 2688, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "715:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "ec97d3b4", + "id": 2694, + "mutability": "mutable", + "name": "_contractAddressToResourceID", + "nameLocation": "843:28:22", + "nodeType": "VariableDeclaration", + "scope": 3077, + "src": "807:64:22", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bytes32_$", + "typeString": "mapping(address => bytes32)" + }, + "typeName": { + "id": 2693, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 2691, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "816:7:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "807:28:22", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bytes32_$", + "typeString": "mapping(address => bytes32)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 2692, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "827:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "cb624463", + "id": 2698, + "mutability": "mutable", + "name": "_contractAddressToDepositFunctionSignature", + "nameLocation": "970:42:22", + "nodeType": "VariableDeclaration", + "scope": 3077, + "src": "935:77:22", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bytes4_$", + "typeString": "mapping(address => bytes4)" + }, + "typeName": { + "id": 2697, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 2695, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "944:7:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "935:27:22", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bytes4_$", + "typeString": "mapping(address => bytes4)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 2696, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "955:6:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "a5c3a985", + "id": 2702, + "mutability": "mutable", + "name": "_contractAddressToExecuteFunctionSignature", + "nameLocation": "1120:42:22", + "nodeType": "VariableDeclaration", + "scope": 3077, + "src": "1085:77:22", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bytes4_$", + "typeString": "mapping(address => bytes4)" + }, + "typeName": { + "id": 2701, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 2699, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1094:7:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1085:27:22", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bytes4_$", + "typeString": "mapping(address => bytes4)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 2700, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "1105:6:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "7f79bea8", + "id": 2706, + "mutability": "mutable", + "name": "_contractWhitelist", + "nameLocation": "1253:18:22", + "nodeType": "VariableDeclaration", + "scope": 3077, + "src": "1220:51:22", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 2705, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 2703, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1229:7:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1220:25:22", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 2704, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1240:4:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "visibility": "public" + }, + { + "body": { + "id": 2712, + "nodeType": "Block", + "src": "1302:44:22", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2708, + "name": "_onlyBridge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2725, + "src": "1313:11:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$__$", + "typeString": "function () view" + } + }, + "id": 2709, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1313:13:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2710, + "nodeType": "ExpressionStatement", + "src": "1313:13:22" + }, + { + "id": 2711, + "nodeType": "PlaceholderStatement", + "src": "1337:1:22" + } + ] + }, + "id": 2713, + "name": "onlyBridge", + "nameLocation": "1289:10:22", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 2707, + "nodeType": "ParameterList", + "parameters": [], + "src": "1299:2:22" + }, + "src": "1280:66:22", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2724, + "nodeType": "Block", + "src": "1390:91:22", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2720, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 2717, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967281, + "src": "1410:3:22", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2718, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1414:6:22", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "1410:10:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 2719, + "name": "_bridgeAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2670, + "src": "1424:14:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1410:28:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "73656e646572206d7573742062652062726964676520636f6e7472616374", + "id": 2721, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1440:32:22", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0febc0fc8991eb26dfaaceeb4d73d25b76da338550ed76c60410fec84388058e", + "typeString": "literal_string \"sender must be bridge contract\"" + }, + "value": "sender must be bridge contract" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0febc0fc8991eb26dfaaceeb4d73d25b76da338550ed76c60410fec84388058e", + "typeString": "literal_string \"sender must be bridge contract\"" + } + ], + "id": 2716, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "1402:7:22", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2722, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1402:71:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2723, + "nodeType": "ExpressionStatement", + "src": "1402:71:22" + } + ] + }, + "id": 2725, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_onlyBridge", + "nameLocation": "1363:11:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2714, + "nodeType": "ParameterList", + "parameters": [], + "src": "1374:2:22" + }, + "returnParameters": { + "id": 2715, + "nodeType": "ParameterList", + "parameters": [], + "src": "1390:0:22" + }, + "scope": 3077, + "src": "1354:127:22", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 2802, + "nodeType": "Block", + "src": "3075:869:22", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2748, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 2744, + "name": "initialResourceIDs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2731, + "src": "3094:18:22", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 2745, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3113:6:22", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "3094:25:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 2746, + "name": "initialContractAddresses", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2734, + "src": "3123:24:22", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 2747, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3148:6:22", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "3123:31:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3094:60:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "696e697469616c5265736f7572636549447320616e6420696e697469616c436f6e7472616374416464726573736573206c656e206d69736d61746368", + "id": 2749, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3169:62:22", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4ad26bc3c99f2850e5fe1de98475000419054e7d49a87288c0e5940e995dd510", + "typeString": "literal_string \"initialResourceIDs and initialContractAddresses len mismatch\"" + }, + "value": "initialResourceIDs and initialContractAddresses len mismatch" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_4ad26bc3c99f2850e5fe1de98475000419054e7d49a87288c0e5940e995dd510", + "typeString": "literal_string \"initialResourceIDs and initialContractAddresses len mismatch\"" + } + ], + "id": 2743, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "3086:7:22", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2750, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3086:146:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2751, + "nodeType": "ExpressionStatement", + "src": "3086:146:22" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2757, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 2753, + "name": "initialContractAddresses", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2734, + "src": "3253:24:22", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 2754, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3278:6:22", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "3253:31:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 2755, + "name": "initialDepositFunctionSignatures", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2737, + "src": "3288:32:22", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr", + "typeString": "bytes4[] memory" + } + }, + "id": 2756, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3321:6:22", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "3288:39:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, - "documentation": { - "id": 7894, - "nodeType": "StructuredDocumentation", - "src": "7771:652:36", - "text": "@notice Proposal execution should be initiated when a proposal is finalized in the Bridge contract.\n@param data Consists of {resourceID}, {lenMetaData}, and {metaData}.\n@notice Data passed into the function should be constructed as follows:\nlen(data) uint256 bytes 0 - 32\ndata bytes bytes 32 - END\n@notice {contractAddress} is required to be whitelisted\n@notice If {_contractAddressToExecuteFunctionSignature}[{contractAddress}] is set,\n{metaData} is expected to consist of needed function arguments." - }, - "functionSelector": "e248cff2", - "id": 7979, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": null, - "id": 7901, - "modifierName": { - "argumentTypes": null, - "id": 7900, - "name": "onlyBridge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7658, - "src": "8503:10:36", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "8503:10:36" + "src": "3253:74:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "70726f766964656420636f6e74726163742061646472657373657320616e642066756e6374696f6e207369676e617475726573206c656e206d69736d61746368", + "id": 2758, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3342:66:22", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b746ce628071fcac0bf096a6e7891ff5a23e8d585affec3cf59959f2a03a9fe0", + "typeString": "literal_string \"provided contract addresses and function signatures len mismatch\"" + }, + "value": "provided contract addresses and function signatures len mismatch" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b746ce628071fcac0bf096a6e7891ff5a23e8d585affec3cf59959f2a03a9fe0", + "typeString": "literal_string \"provided contract addresses and function signatures len mismatch\"" + } + ], + "id": 2752, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "3245:7:22", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2759, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3245:164:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2760, + "nodeType": "ExpressionStatement", + "src": "3245:164:22" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2766, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 2762, + "name": "initialDepositFunctionSignatures", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2737, + "src": "3430:32:22", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr", + "typeString": "bytes4[] memory" } - ], - "name": "executeProposal", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 7899, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 7896, - "mutability": "mutable", - "name": "resourceID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7979, - "src": "8453:18:36", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 7895, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "8453:7:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 7898, - "mutability": "mutable", - "name": "data", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 7979, - "src": "8473:19:36", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 7897, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "8473:5:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "8452:41:36" + }, + "id": 2763, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3463:6:22", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "3430:39:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 2764, + "name": "initialExecuteFunctionSignatures", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2740, + "src": "3473:32:22", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr", + "typeString": "bytes4[] memory" + } + }, + "id": 2765, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3506:6:22", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "3473:39:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3430:82:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "70726f7669646564206465706f73697420616e6420657865637574652066756e6374696f6e207369676e617475726573206c656e206d69736d61746368", + "id": 2767, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3527:63:22", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9131b91c39cfdeebf122a7e28defa3834f957032b39040decdc270fb62be6d96", + "typeString": "literal_string \"provided deposit and execute function signatures len mismatch\"" }, - "returnParameters": { - "id": 7902, - "nodeType": "ParameterList", - "parameters": [], - "src": "8514:0:36" + "value": "provided deposit and execute function signatures len mismatch" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" }, - "scope": 8022, - "src": "8428:775:36", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" + { + "typeIdentifier": "t_stringliteral_9131b91c39cfdeebf122a7e28defa3834f957032b39040decdc270fb62be6d96", + "typeString": "literal_string \"provided deposit and execute function signatures len mismatch\"" + } + ], + "id": 2761, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "3422:7:22", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } }, - { - "body": { - "id": 8020, - "nodeType": "Block", - "src": "9377:376:36", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 7994, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 7990, - "name": "_resourceIDToContractAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7635, - "src": "9387:28:36", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", - "typeString": "mapping(bytes32 => address)" - } - }, - "id": 7992, - "indexExpression": { - "argumentTypes": null, - "id": 7991, - "name": "resourceID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7981, - "src": "9416:10:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "9387:40:36", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 7993, - "name": "contractAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7983, - "src": "9430:15:36", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "9387:58:36", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 7995, - "nodeType": "ExpressionStatement", - "src": "9387:58:36" - }, - { - "expression": { - "argumentTypes": null, - "id": 8000, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 7996, - "name": "_contractAddressToResourceID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7639, - "src": "9455:28:36", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bytes32_$", - "typeString": "mapping(address => bytes32)" - } - }, - "id": 7998, - "indexExpression": { - "argumentTypes": null, - "id": 7997, - "name": "contractAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7983, - "src": "9484:15:36", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "9455:45:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 7999, - "name": "resourceID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7981, - "src": "9503:10:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "9455:58:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 8001, - "nodeType": "ExpressionStatement", - "src": "9455:58:36" - }, - { - "expression": { - "argumentTypes": null, - "id": 8006, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 8002, - "name": "_contractAddressToDepositFunctionSignature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7643, - "src": "9523:42:36", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bytes4_$", - "typeString": "mapping(address => bytes4)" - } - }, - "id": 8004, - "indexExpression": { - "argumentTypes": null, - "id": 8003, - "name": "contractAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7983, - "src": "9566:15:36", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "9523:59:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 8005, - "name": "depositFunctionSig", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7985, - "src": "9585:18:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "src": "9523:80:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "id": 8007, - "nodeType": "ExpressionStatement", - "src": "9523:80:36" - }, - { - "expression": { - "argumentTypes": null, - "id": 8012, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 8008, - "name": "_contractAddressToExecuteFunctionSignature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7647, - "src": "9613:42:36", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bytes4_$", - "typeString": "mapping(address => bytes4)" - } - }, - "id": 8010, - "indexExpression": { - "argumentTypes": null, - "id": 8009, - "name": "contractAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7983, - "src": "9656:15:36", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "9613:59:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 8011, - "name": "executeFunctionSig", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7987, - "src": "9675:18:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "src": "9613:80:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "id": 8013, - "nodeType": "ExpressionStatement", - "src": "9613:80:36" - }, - { - "expression": { - "argumentTypes": null, - "id": 8018, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 8014, - "name": "_contractWhitelist", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7651, - "src": "9704:18:36", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 8016, - "indexExpression": { - "argumentTypes": null, - "id": 8015, - "name": "contractAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7983, - "src": "9723:15:36", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "9704:35:36", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 8017, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9742:4:36", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "9704:42:36", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 8019, - "nodeType": "ExpressionStatement", - "src": "9704:42:36" + "id": 2768, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3422:169:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2769, + "nodeType": "ExpressionStatement", + "src": "3422:169:22" + }, + { + "expression": { + "id": 2772, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2770, + "name": "_bridgeAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2670, + "src": "3604:14:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2771, + "name": "bridgeAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2728, + "src": "3621:13:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3604:30:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2773, + "nodeType": "ExpressionStatement", + "src": "3604:30:22" + }, + { + "body": { + "id": 2800, + "nodeType": "Block", + "src": "3703:234:22", + "statements": [ + { + "expression": { + "arguments": [ + { + "baseExpression": { + "id": 2786, + "name": "initialResourceIDs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2731, + "src": "3749:18:22", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" } - ] - }, - "documentation": null, - "id": 8021, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_setResource", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 7988, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 7981, - "mutability": "mutable", - "name": "resourceID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 8021, - "src": "9240:18:36", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 7980, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "9240:7:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 7983, - "mutability": "mutable", - "name": "contractAddress", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 8021, - "src": "9268:23:36", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 7982, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9268:7:36", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 7985, - "mutability": "mutable", - "name": "depositFunctionSig", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 8021, - "src": "9301:25:36", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "typeName": { - "id": 7984, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "9301:6:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 7987, - "mutability": "mutable", - "name": "executeFunctionSig", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 8021, - "src": "9336:25:36", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "typeName": { - "id": 7986, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "9336:6:36", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "value": null, - "visibility": "internal" + }, + "id": 2788, + "indexExpression": { + "id": 2787, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2775, + "src": "3768:1:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3749:21:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "baseExpression": { + "id": 2789, + "name": "initialContractAddresses", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2734, + "src": "3789:24:22", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 2791, + "indexExpression": { + "id": 2790, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2775, + "src": "3814:1:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3789:27:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "baseExpression": { + "id": 2792, + "name": "initialDepositFunctionSignatures", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2737, + "src": "3835:32:22", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr", + "typeString": "bytes4[] memory" } + }, + "id": 2794, + "indexExpression": { + "id": 2793, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2775, + "src": "3868:1:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3835:35:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "baseExpression": { + "id": 2795, + "name": "initialExecuteFunctionSignatures", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2740, + "src": "3889:32:22", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr", + "typeString": "bytes4[] memory" + } + }, + "id": 2797, + "indexExpression": { + "id": 2796, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2775, + "src": "3922:1:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3889:35:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } ], - "src": "9230:137:36" + "id": 2785, + "name": "_setResource", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3076, + "src": "3718:12:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_bytes4_$_t_bytes4_$returns$__$", + "typeString": "function (bytes32,address,bytes4,bytes4)" + } + }, + "id": 2798, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3718:207:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2799, + "nodeType": "ExpressionStatement", + "src": "3718:207:22" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2781, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2778, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2775, + "src": "3667:1:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 2779, + "name": "initialResourceIDs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2731, + "src": "3671:18:22", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 2780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3690:6:22", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "3671:25:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3667:29:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2801, + "initializationExpression": { + "assignments": [ + 2775 + ], + "declarations": [ + { + "constant": false, + "id": 2775, + "mutability": "mutable", + "name": "i", + "nameLocation": "3660:1:22", + "nodeType": "VariableDeclaration", + "scope": 2801, + "src": "3652:9:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - "returnParameters": { - "id": 7989, - "nodeType": "ParameterList", - "parameters": [], - "src": "9377:0:36" + "typeName": { + "id": 2774, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3652:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, - "scope": 8022, - "src": "9209:544:36", - "stateMutability": "nonpayable", - "virtual": false, "visibility": "internal" + } + ], + "id": 2777, + "initialValue": { + "hexValue": "30", + "id": 2776, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3664:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "3652:13:22" + }, + "loopExpression": { + "expression": { + "id": 2783, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "3698:3:22", + "subExpression": { + "id": 2782, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2775, + "src": "3698:1:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2784, + "nodeType": "ExpressionStatement", + "src": "3698:3:22" + }, + "nodeType": "ForStatement", + "src": "3647:290:22" + } + ] + }, + "documentation": { + "id": 2726, + "nodeType": "StructuredDocumentation", + "src": "1489:1302:22", + "text": "@param bridgeAddress Contract address of previously deployed Bridge.\n@param initialResourceIDs Resource IDs used to identify a specific contract address.\nThese are the Resource IDs this contract will initially support.\n@param initialContractAddresses These are the addresses the {initialResourceIDs} will point to, and are the contracts that will be\ncalled to perform deposit and execution calls.\n@param initialDepositFunctionSignatures These are the function signatures {initialContractAddresses} will point to,\nand are the function that will be called when executing {deposit}\n@param initialExecuteFunctionSignatures These are the function signatures {initialContractAddresses} will point to,\nand are the function that will be called when executing {executeProposal}\n@dev {initialResourceIDs}, {initialContractAddresses}, {initialDepositFunctionSignatures},\nand {initialExecuteFunctionSignatures} must all have the same length. Also,\nvalues must be ordered in the way that that index x of any mentioned array\nmust be intended for value x of any other array, e.g. {initialContractAddresses}[0]\nis the intended address for {initialDepositFunctionSignatures}[0]." + }, + "id": 2803, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2741, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2728, + "mutability": "mutable", + "name": "bridgeAddress", + "nameLocation": "2836:13:22", + "nodeType": "VariableDeclaration", + "scope": 2803, + "src": "2819:30:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2727, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2819:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } - ], - "scope": 8023, - "src": "277:9478:36" - } - ], - "src": "0:9756:36" - }, - "legacyAST": { - "attributes": { - "absolutePath": "project:/contracts/handlers/GenericHandler.sol", - "exportedSymbols": { - "GenericHandler": [8022] + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2731, + "mutability": "mutable", + "name": "initialResourceIDs", + "nameLocation": "2877:18:22", + "nodeType": "VariableDeclaration", + "scope": 2803, + "src": "2860:35:22", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 2729, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2860:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2730, + "nodeType": "ArrayTypeName", + "src": "2860:9:22", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2734, + "mutability": "mutable", + "name": "initialContractAddresses", + "nameLocation": "2923:24:22", + "nodeType": "VariableDeclaration", + "scope": 2803, + "src": "2906:41:22", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 2732, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2906:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2733, + "nodeType": "ArrayTypeName", + "src": "2906:9:22", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2737, + "mutability": "mutable", + "name": "initialDepositFunctionSignatures", + "nameLocation": "2975:32:22", + "nodeType": "VariableDeclaration", + "scope": 2803, + "src": "2958:49:22", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr", + "typeString": "bytes4[]" + }, + "typeName": { + "baseType": { + "id": 2735, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "2958:6:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "id": 2736, + "nodeType": "ArrayTypeName", + "src": "2958:8:22", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr", + "typeString": "bytes4[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2740, + "mutability": "mutable", + "name": "initialExecuteFunctionSignatures", + "nameLocation": "3035:32:22", + "nodeType": "VariableDeclaration", + "scope": 2803, + "src": "3018:49:22", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr", + "typeString": "bytes4[]" + }, + "typeName": { + "baseType": { + "id": 2738, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "3018:6:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "id": 2739, + "nodeType": "ArrayTypeName", + "src": "3018:8:22", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr", + "typeString": "bytes4[]" + } + }, + "visibility": "internal" + } + ], + "src": "2808:266:22" }, - "license": null - }, - "children": [ - { - "attributes": { - "literals": ["solidity", "0.7", ".0"] + "returnParameters": { + "id": 2742, + "nodeType": "ParameterList", + "parameters": [], + "src": "3075:0:22" + }, + "scope": 3077, + "src": "2797:1147:22", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 2820, + "nodeType": "Block", + "src": "4609:63:22", + "statements": [ + { + "expression": { + "baseExpression": { + "baseExpression": { + "id": 2814, + "name": "_depositRecords", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2686, + "src": "4627:15:22", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint8_$_t_mapping$_t_uint64_$_t_struct$_DepositRecord_$2679_storage_$_$", + "typeString": "mapping(uint8 => mapping(uint64 => struct GenericHandler.DepositRecord storage ref))" + } + }, + "id": 2816, + "indexExpression": { + "id": 2815, + "name": "destId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2808, + "src": "4643:6:22", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4627:23:22", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_DepositRecord_$2679_storage_$", + "typeString": "mapping(uint64 => struct GenericHandler.DepositRecord storage ref)" + } + }, + "id": 2818, + "indexExpression": { + "id": 2817, + "name": "depositNonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2806, + "src": "4651:12:22", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4627:37:22", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DepositRecord_$2679_storage", + "typeString": "struct GenericHandler.DepositRecord storage ref" + } + }, + "functionReturnParameters": 2813, + "id": 2819, + "nodeType": "Return", + "src": "4620:44:22" + } + ] + }, + "documentation": { + "id": 2804, + "nodeType": "StructuredDocumentation", + "src": "3952:545:22", + "text": "@param depositNonce This ID will have been generated by the Bridge contract.\n@param destId ID of chain deposit will be bridged to.\n@return DepositRecord which consists of:\n- _destinationChainID ChainID deposited tokens are intended to end up on.\n- _resourceID ResourceID used when {deposit} was executed.\n- _depositer Address that initially called {deposit} in the Bridge contract.\n- _metaData Data to be passed to method executed in corresponding {resourceID} contract." + }, + "functionSelector": "ba484c09", + "id": 2821, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getDepositRecord", + "nameLocation": "4512:16:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2809, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2806, + "mutability": "mutable", + "name": "depositNonce", + "nameLocation": "4536:12:22", + "nodeType": "VariableDeclaration", + "scope": 2821, + "src": "4529:19:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 2805, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "4529:6:22", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" }, - "id": 7609, - "name": "PragmaDirective", - "src": "0:22:36" + { + "constant": false, + "id": 2808, + "mutability": "mutable", + "name": "destId", + "nameLocation": "4556:6:22", + "nodeType": "VariableDeclaration", + "scope": 2821, + "src": "4550:12:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 2807, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "4550:5:22", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "4528:35:22" }, - { - "attributes": { - "literals": ["experimental", "ABIEncoderV2"] + "returnParameters": { + "id": 2813, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2812, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2821, + "src": "4587:20:22", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DepositRecord_$2679_memory_ptr", + "typeString": "struct GenericHandler.DepositRecord" + }, + "typeName": { + "id": 2811, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2810, + "name": "DepositRecord", + "nameLocations": [ + "4587:13:22" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2679, + "src": "4587:13:22" + }, + "referencedDeclaration": 2679, + "src": "4587:13:22", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DepositRecord_$2679_storage_ptr", + "typeString": "struct GenericHandler.DepositRecord" + } + }, + "visibility": "internal" + } + ], + "src": "4586:22:22" + }, + "scope": 3077, + "src": "4503:169:22", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 3306 + ], + "body": { + "id": 2842, + "nodeType": "Block", + "src": "5838:102:22", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2836, + "name": "resourceID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2824, + "src": "5864:10:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 2837, + "name": "contractAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2826, + "src": "5876:15:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2838, + "name": "depositFunctionSig", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2828, + "src": "5893:18:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "id": 2839, + "name": "executeFunctionSig", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2830, + "src": "5913:18:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 2835, + "name": "_setResource", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3076, + "src": "5851:12:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_bytes4_$_t_bytes4_$returns$__$", + "typeString": "function (bytes32,address,bytes4,bytes4)" + } + }, + "id": 2840, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5851:81:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2841, + "nodeType": "ExpressionStatement", + "src": "5851:81:22" + } + ] + }, + "documentation": { + "id": 2822, + "nodeType": "StructuredDocumentation", + "src": "4680:969:22", + "text": "@notice First verifies {_resourceIDToContractAddress}[{resourceID}] and\n{_contractAddressToResourceID}[{contractAddress}] are not already set,\nthen sets {_resourceIDToContractAddress} with {contractAddress},\n{_contractAddressToResourceID} with {resourceID},\n{_contractAddressToDepositFunctionSignature} with {depositFunctionSig},\n{_contractAddressToExecuteFunctionSignature} with {executeFunctionSig},\nand {_contractWhitelist} to true for {contractAddress}.\n@param resourceID ResourceID to be used when making deposits.\n@param contractAddress Address of contract to be called when a deposit is made and a deposited is executed.\n@param depositFunctionSig Function signature of method to be called in {contractAddress} when a deposit is made.\n@param executeFunctionSig Function signature of method to be called in {contractAddress} when a deposit is executed." + }, + "functionSelector": "bba8185a", + "id": 2843, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2833, + "kind": "modifierInvocation", + "modifierName": { + "id": 2832, + "name": "onlyBridge", + "nameLocations": [ + "5827:10:22" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2713, + "src": "5827:10:22" + }, + "nodeType": "ModifierInvocation", + "src": "5827:10:22" + } + ], + "name": "setResource", + "nameLocation": "5664:11:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2831, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2824, + "mutability": "mutable", + "name": "resourceID", + "nameLocation": "5694:10:22", + "nodeType": "VariableDeclaration", + "scope": 2843, + "src": "5686:18:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2823, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5686:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2826, + "mutability": "mutable", + "name": "contractAddress", + "nameLocation": "5723:15:22", + "nodeType": "VariableDeclaration", + "scope": 2843, + "src": "5715:23:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2825, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5715:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2828, + "mutability": "mutable", + "name": "depositFunctionSig", + "nameLocation": "5756:18:22", + "nodeType": "VariableDeclaration", + "scope": 2843, + "src": "5749:25:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 2827, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "5749:6:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" }, - "id": 7610, - "name": "PragmaDirective", - "src": "23:33:36" + { + "constant": false, + "id": 2830, + "mutability": "mutable", + "name": "executeFunctionSig", + "nameLocation": "5792:18:22", + "nodeType": "VariableDeclaration", + "scope": 2843, + "src": "5785:25:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 2829, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "5785:6:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "5675:142:22" }, - { - "attributes": { - "SourceUnit": 8300, - "absolutePath": "project:/contracts/interfaces/IGenericHandler.sol", - "file": "../interfaces/IGenericHandler.sol", - "scope": 8023, - "symbolAliases": [null], - "unitAlias": "" - }, - "id": 7611, - "name": "ImportDirective", - "src": "58:43:36" + "returnParameters": { + "id": 2834, + "nodeType": "ParameterList", + "parameters": [], + "src": "5838:0:22" }, - { - "attributes": { - "abstract": false, - "contractDependencies": [8299], - "contractKind": "contract", - "fullyImplemented": true, - "linearizedBaseContracts": [8022, 8299], - "name": "GenericHandler", - "scope": 8023 + "scope": 3077, + "src": "5655:285:22", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 2947, + "nodeType": "Block", + "src": "7015:893:22", + "statements": [ + { + "assignments": [ + 2860 + ], + "declarations": [ + { + "constant": false, + "id": 2860, + "mutability": "mutable", + "name": "lenMetadata", + "nameLocation": "7039:11:22", + "nodeType": "VariableDeclaration", + "scope": 2947, + "src": "7026:24:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2859, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7026:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2861, + "nodeType": "VariableDeclarationStatement", + "src": "7026:24:22" }, - "children": [ + { + "assignments": [ + 2863 + ], + "declarations": [ { - "attributes": { - "text": "@title Handles generic deposits and deposit executions.\n@author ChainSafe Systems.\n@notice This contract is intended to be used with the Bridge contract." - }, - "id": 7612, - "name": "StructuredDocumentation", - "src": "103:173:36" + "constant": false, + "id": 2863, + "mutability": "mutable", + "name": "metadata", + "nameLocation": "7074:8:22", + "nodeType": "VariableDeclaration", + "scope": 2947, + "src": "7061:21:22", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2862, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7061:5:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 2864, + "nodeType": "VariableDeclarationStatement", + "src": "7061:21:22" + }, + { + "expression": { + "id": 2873, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2865, + "name": "lenMetadata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2860, + "src": "7095:11:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, - { - "attributes": { - "arguments": null + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 2868, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2854, + "src": "7120:4:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } }, - "children": [ + { + "components": [ { - "attributes": { - "contractScope": null, - "name": "IGenericHandler", - "referencedDeclaration": 8299, - "type": "contract IGenericHandler" - }, - "id": 7613, - "name": "UserDefinedTypeName", - "src": "304:15:36" + "id": 2870, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7127:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2869, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7127:7:22", + "typeDescriptions": {} + } } + ], + "id": 2871, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7126:9:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + }, + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } ], - "id": 7614, - "name": "InheritanceSpecifier", - "src": "304:15:36" - }, - { - "attributes": { - "constant": false, - "functionSelector": "318c136e", - "mutability": "mutable", - "name": "_bridgeAddress", - "overrides": null, - "scope": 8022, - "stateVariable": true, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "public" + "expression": { + "id": 2866, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967295, + "src": "7109:3:22", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 7615, - "name": "ElementaryTypeName", - "src": "326:7:36" - } - ], - "id": 7616, - "name": "VariableDeclaration", - "src": "326:29:36" + "id": 2867, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "7113:6:22", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "7109:10:22", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2872, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7109:27:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, - { - "attributes": { - "canonicalName": "GenericHandler.DepositRecord", - "name": "DepositRecord", - "scope": 8022, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "_destinationChainID", - "overrides": null, - "scope": 7625, - "stateVariable": false, - "storageLocation": "default", - "type": "uint8", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint8", - "type": "uint8" - }, - "id": 7617, - "name": "ElementaryTypeName", - "src": "393:5:36" - } - ], - "id": 7618, - "name": "VariableDeclaration", - "src": "393:27:36" + "src": "7095:41:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2874, + "nodeType": "ExpressionStatement", + "src": "7095:41:22" + }, + { + "expression": { + "id": 2885, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2875, + "name": "metadata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2863, + "src": "7147:8:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "baseExpression": { + "id": 2878, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2854, + "src": "7164:4:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "endExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "_depositer", - "overrides": null, - "scope": 7625, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 7619, - "name": "ElementaryTypeName", - "src": "430:7:36" - } - ], - "id": 7620, - "name": "VariableDeclaration", - "src": "430:18:36" + "id": 2882, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3332", + "id": 2880, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7172:2:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "_resourceID", - "overrides": null, - "scope": 7625, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 7621, - "name": "ElementaryTypeName", - "src": "458:7:36" - } - ], - "id": 7622, - "name": "VariableDeclaration", - "src": "458:19:36" + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 2881, + "name": "lenMetadata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2860, + "src": "7177:11:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "_metaData", - "overrides": null, - "scope": 7625, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes", - "type": "bytes" - }, - "id": 7623, - "name": "ElementaryTypeName", - "src": "487:5:36" - } - ], - "id": 7624, - "name": "VariableDeclaration", - "src": "487:17:36" + "src": "7172:16:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } + }, + "id": 2883, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexRangeAccess", + "src": "7164:25:22", + "startExpression": { + "hexValue": "3332", + "id": 2879, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7169:2:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr_slice", + "typeString": "bytes calldata slice" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr_slice", + "typeString": "bytes calldata slice" + } ], - "id": 7625, - "name": "StructDefinition", - "src": "362:149:36" - }, - { - "attributes": { - "constant": false, - "functionSelector": "4402027f", - "mutability": "mutable", - "name": "_depositRecords", - "overrides": null, - "scope": 8022, - "stateVariable": true, - "storageLocation": "default", - "type": "mapping(uint8 => mapping(uint64 => struct GenericHandler.DepositRecord))", - "value": null, - "visibility": "public" + "id": 2877, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7158:5:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" }, - "children": [ - { - "attributes": { - "type": "mapping(uint8 => mapping(uint64 => struct GenericHandler.DepositRecord))" - }, - "children": [ - { - "attributes": { - "name": "uint8", - "type": "uint8" - }, - "id": 7626, - "name": "ElementaryTypeName", - "src": "564:5:36" - }, - { - "attributes": { - "type": "mapping(uint64 => struct GenericHandler.DepositRecord)" - }, - "children": [ - { - "attributes": { - "name": "uint64", - "type": "uint64" - }, - "id": 7627, - "name": "ElementaryTypeName", - "src": "581:6:36" - }, - { - "attributes": { - "contractScope": null, - "name": "DepositRecord", - "referencedDeclaration": 7625, - "type": "struct GenericHandler.DepositRecord" - }, - "id": 7628, - "name": "UserDefinedTypeName", - "src": "591:13:36" - } - ], - "id": 7629, - "name": "Mapping", - "src": "573:32:36" - } - ], - "id": 7630, - "name": "Mapping", - "src": "555:51:36" - } - ], - "id": 7631, - "name": "VariableDeclaration", - "src": "555:74:36" + "typeName": { + "id": 2876, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7158:5:22", + "typeDescriptions": {} + } + }, + "id": 2884, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7158:32:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } }, + "src": "7147:43:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 2886, + "nodeType": "ExpressionStatement", + "src": "7147:43:22" + }, + { + "assignments": [ + 2888 + ], + "declarations": [ { - "attributes": { - "constant": false, - "functionSelector": "c54c2a11", - "mutability": "mutable", - "name": "_resourceIDToContractAddress", - "overrides": null, - "scope": 8022, - "stateVariable": true, - "storageLocation": "default", - "type": "mapping(bytes32 => address)", - "value": null, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "type": "mapping(bytes32 => address)" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 7632, - "name": "ElementaryTypeName", - "src": "683:7:36" - }, - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 7633, - "name": "ElementaryTypeName", - "src": "694:7:36" - } - ], - "id": 7634, - "name": "Mapping", - "src": "674:28:36" - } - ], - "id": 7635, - "name": "VariableDeclaration", - "src": "674:64:36" + "constant": false, + "id": 2888, + "mutability": "mutable", + "name": "contractAddress", + "nameLocation": "7211:15:22", + "nodeType": "VariableDeclaration", + "scope": 2947, + "src": "7203:23:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2887, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7203:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 2892, + "initialValue": { + "baseExpression": { + "id": 2889, + "name": "_resourceIDToContractAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2690, + "src": "7229:28:22", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + } }, - { - "attributes": { - "constant": false, - "functionSelector": "ec97d3b4", - "mutability": "mutable", - "name": "_contractAddressToResourceID", - "overrides": null, - "scope": 8022, - "stateVariable": true, - "storageLocation": "default", - "type": "mapping(address => bytes32)", - "value": null, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "type": "mapping(address => bytes32)" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": "address" - }, - "id": 7636, - "name": "ElementaryTypeName", - "src": "792:7:36" - }, - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 7637, - "name": "ElementaryTypeName", - "src": "803:7:36" - } - ], - "id": 7638, - "name": "Mapping", - "src": "783:28:36" - } - ], - "id": 7639, - "name": "VariableDeclaration", - "src": "783:64:36" + "id": 2891, + "indexExpression": { + "id": 2890, + "name": "resourceID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2846, + "src": "7258:10:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } }, - { - "attributes": { - "constant": false, - "functionSelector": "cb624463", - "mutability": "mutable", - "name": "_contractAddressToDepositFunctionSignature", - "overrides": null, - "scope": 8022, - "stateVariable": true, - "storageLocation": "default", - "type": "mapping(address => bytes4)", - "value": null, - "visibility": "public" + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7229:40:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7203:66:22" + }, + { + "expression": { + "arguments": [ + { + "baseExpression": { + "id": 2894, + "name": "_contractWhitelist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2706, + "src": "7288:18:22", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } }, - "children": [ - { - "attributes": { - "type": "mapping(address => bytes4)" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": "address" - }, - "id": 7640, - "name": "ElementaryTypeName", - "src": "917:7:36" - }, - { - "attributes": { - "name": "bytes4", - "type": "bytes4" - }, - "id": 7641, - "name": "ElementaryTypeName", - "src": "928:6:36" - } - ], - "id": 7642, - "name": "Mapping", - "src": "908:27:36" - } - ], - "id": 7643, - "name": "VariableDeclaration", - "src": "908:77:36" - }, - { - "attributes": { - "constant": false, - "functionSelector": "a5c3a985", - "mutability": "mutable", - "name": "_contractAddressToExecuteFunctionSignature", - "overrides": null, - "scope": 8022, - "stateVariable": true, - "storageLocation": "default", - "type": "mapping(address => bytes4)", - "value": null, - "visibility": "public" + "id": 2896, + "indexExpression": { + "id": 2895, + "name": "contractAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2888, + "src": "7307:15:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, - "children": [ - { - "attributes": { - "type": "mapping(address => bytes4)" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": "address" - }, - "id": 7644, - "name": "ElementaryTypeName", - "src": "1064:7:36" - }, - { - "attributes": { - "name": "bytes4", - "type": "bytes4" - }, - "id": 7645, - "name": "ElementaryTypeName", - "src": "1075:6:36" - } - ], - "id": 7646, - "name": "Mapping", - "src": "1055:27:36" - } - ], - "id": 7647, - "name": "VariableDeclaration", - "src": "1055:77:36" - }, - { - "attributes": { - "constant": false, - "functionSelector": "7f79bea8", - "mutability": "mutable", - "name": "_contractWhitelist", - "overrides": null, - "scope": 8022, - "stateVariable": true, - "storageLocation": "default", - "type": "mapping(address => bool)", - "value": null, - "visibility": "public" + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7288:35:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "70726f766964656420636f6e747261637441646472657373206973206e6f742077686974656c6973746564", + "id": 2897, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7325:45:22", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b35e1d4b1392122547a6ef1db8ad0b6549b5cc8820bfc81437cf78f8b1333b05", + "typeString": "literal_string \"provided contractAddress is not whitelisted\"" }, - "children": [ - { - "attributes": { - "type": "mapping(address => bool)" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": "address" - }, - "id": 7648, - "name": "ElementaryTypeName", - "src": "1196:7:36" - }, - { - "attributes": { - "name": "bool", - "type": "bool" - }, - "id": 7649, - "name": "ElementaryTypeName", - "src": "1207:4:36" - } - ], - "id": 7650, - "name": "Mapping", - "src": "1187:25:36" - } - ], - "id": 7651, - "name": "VariableDeclaration", - "src": "1187:51:36" - }, - { - "attributes": { - "documentation": null, - "name": "onlyBridge", - "overrides": null, - "virtual": false, - "visibility": "internal" + "value": "provided contractAddress is not whitelisted" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" }, - "children": [ - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 7652, - "name": "ParameterList", - "src": "1264:2:36" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "arguments": [null], - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [null], - "overloadedDeclarations": [null], - "referencedDeclaration": 7670, - "type": "function ()", - "value": "_onlyBridge" - }, - "id": 7653, - "name": "Identifier", - "src": "1277:11:36" - } - ], - "id": 7654, - "name": "FunctionCall", - "src": "1277:13:36" - } - ], - "id": 7655, - "name": "ExpressionStatement", - "src": "1277:13:36" - }, - { - "id": 7656, - "name": "PlaceholderStatement", - "src": "1300:1:36" - } - ], - "id": 7657, - "name": "Block", - "src": "1267:41:36" - } - ], - "id": 7658, - "name": "ModifierDefinition", - "src": "1245:63:36" - }, - { - "attributes": { - "documentation": null, - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [null], - "name": "_onlyBridge", - "overrides": null, - "scope": 8022, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "private" - }, - "children": [ - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 7659, - "name": "ParameterList", - "src": "1334:2:36" - }, - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 7660, - "name": "ParameterList", - "src": "1345:0:36" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_0febc0fc8991eb26dfaaceeb4d73d25b76da338550ed76c60410fec84388058e", - "typeString": "literal_string \"sender must be bridge contract\"" - } - ], - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 7661, - "name": "Identifier", - "src": "1356:7:36" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "referencedDeclaration": null, - "type": "address payable" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": -15, - "type": "msg", - "value": "msg" - }, - "id": 7662, - "name": "Identifier", - "src": "1364:3:36" - } - ], - "id": 7663, - "name": "MemberAccess", - "src": "1364:10:36" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7616, - "type": "address", - "value": "_bridgeAddress" - }, - "id": 7664, - "name": "Identifier", - "src": "1378:14:36" - } - ], - "id": 7665, - "name": "BinaryOperation", - "src": "1364:28:36" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "73656e646572206d7573742062652062726964676520636f6e7472616374", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"sender must be bridge contract\"", - "value": "sender must be bridge contract" - }, - "id": 7666, - "name": "Literal", - "src": "1394:32:36" - } - ], - "id": 7667, - "name": "FunctionCall", - "src": "1356:71:36" - } - ], - "id": 7668, - "name": "ExpressionStatement", - "src": "1356:71:36" - } - ], - "id": 7669, - "name": "Block", - "src": "1345:89:36" - } - ], - "id": 7670, - "name": "FunctionDefinition", - "src": "1314:120:36" + { + "typeIdentifier": "t_stringliteral_b35e1d4b1392122547a6ef1db8ad0b6549b5cc8820bfc81437cf78f8b1333b05", + "typeString": "literal_string \"provided contractAddress is not whitelisted\"" + } + ], + "id": 2893, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "7280:7:22", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } }, + "id": 2898, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7280:91:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2899, + "nodeType": "ExpressionStatement", + "src": "7280:91:22" + }, + { + "assignments": [ + 2901 + ], + "declarations": [ { - "attributes": { - "implemented": true, - "isConstructor": true, - "kind": "constructor", - "modifiers": [null], - "name": "", - "overrides": null, - "scope": 8022, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "text": "@param bridgeAddress Contract address of previously deployed Bridge.\n@param initialResourceIDs Resource IDs used to identify a specific contract address.\nThese are the Resource IDs this contract will initially support.\n@param initialContractAddresses These are the addresses the {initialResourceIDs} will point to, and are the contracts that will be\ncalled to perform deposit and execution calls.\n@param initialDepositFunctionSignatures These are the function signatures {initialContractAddresses} will point to,\nand are the function that will be called when executing {deposit}\n@param initialExecuteFunctionSignatures These are the function signatures {initialContractAddresses} will point to,\nand are the function that will be called when executing {executeProposal}\n@dev {initialResourceIDs}, {initialContractAddresses}, {initialDepositFunctionSignatures},\nand {initialExecuteFunctionSignatures} must all have the same length. Also,\nvalues must be ordered in the way that that index x of any mentioned array\nmust be intended for value x of any other array, e.g. {initialContractAddresses}[0]\nis the intended address for {initialDepositFunctionSignatures}[0]." - }, - "id": 7671, - "name": "StructuredDocumentation", - "src": "1440:1286:36" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "bridgeAddress", - "overrides": null, - "scope": 7748, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 7672, - "name": "ElementaryTypeName", - "src": "2752:7:36" - } - ], - "id": 7673, - "name": "VariableDeclaration", - "src": "2752:30:36" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "initialResourceIDs", - "overrides": null, - "scope": 7748, - "stateVariable": false, - "storageLocation": "memory", - "type": "bytes32[]", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "length": null, - "type": "bytes32[]" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 7674, - "name": "ElementaryTypeName", - "src": "2792:7:36" - } - ], - "id": 7675, - "name": "ArrayTypeName", - "src": "2792:9:36" - } - ], - "id": 7676, - "name": "VariableDeclaration", - "src": "2792:35:36" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "initialContractAddresses", - "overrides": null, - "scope": 7748, - "stateVariable": false, - "storageLocation": "memory", - "type": "address[]", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "length": null, - "type": "address[]" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 7677, - "name": "ElementaryTypeName", - "src": "2837:7:36" - } - ], - "id": 7678, - "name": "ArrayTypeName", - "src": "2837:9:36" - } - ], - "id": 7679, - "name": "VariableDeclaration", - "src": "2837:41:36" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "initialDepositFunctionSignatures", - "overrides": null, - "scope": 7748, - "stateVariable": false, - "storageLocation": "memory", - "type": "bytes4[]", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "length": null, - "type": "bytes4[]" - }, - "children": [ - { - "attributes": { - "name": "bytes4", - "type": "bytes4" - }, - "id": 7680, - "name": "ElementaryTypeName", - "src": "2888:6:36" - } - ], - "id": 7681, - "name": "ArrayTypeName", - "src": "2888:8:36" - } - ], - "id": 7682, - "name": "VariableDeclaration", - "src": "2888:49:36" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "initialExecuteFunctionSignatures", - "overrides": null, - "scope": 7748, - "stateVariable": false, - "storageLocation": "memory", - "type": "bytes4[]", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "length": null, - "type": "bytes4[]" - }, - "children": [ - { - "attributes": { - "name": "bytes4", - "type": "bytes4" - }, - "id": 7683, - "name": "ElementaryTypeName", - "src": "2947:6:36" - } - ], - "id": 7684, - "name": "ArrayTypeName", - "src": "2947:8:36" - } - ], - "id": 7685, - "name": "VariableDeclaration", - "src": "2947:49:36" - } - ], - "id": 7686, - "name": "ParameterList", - "src": "2742:260:36" - }, - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 7687, - "name": "ParameterList", - "src": "3010:0:36" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_4ad26bc3c99f2850e5fe1de98475000419054e7d49a87288c0e5940e995dd510", - "typeString": "literal_string \"initialResourceIDs and initialContractAddresses len mismatch\"" - } - ], - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 7688, - "name": "Identifier", - "src": "3020:7:36" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "length", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7676, - "type": "bytes32[] memory", - "value": "initialResourceIDs" - }, - "id": 7689, - "name": "Identifier", - "src": "3028:18:36" - } - ], - "id": 7690, - "name": "MemberAccess", - "src": "3028:25:36" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "length", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7679, - "type": "address[] memory", - "value": "initialContractAddresses" - }, - "id": 7691, - "name": "Identifier", - "src": "3057:24:36" - } - ], - "id": 7692, - "name": "MemberAccess", - "src": "3057:31:36" - } - ], - "id": 7693, - "name": "BinaryOperation", - "src": "3028:60:36" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "696e697469616c5265736f7572636549447320616e6420696e697469616c436f6e7472616374416464726573736573206c656e206d69736d61746368", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"initialResourceIDs and initialContractAddresses len mismatch\"", - "value": "initialResourceIDs and initialContractAddresses len mismatch" - }, - "id": 7694, - "name": "Literal", - "src": "3102:62:36" - } - ], - "id": 7695, - "name": "FunctionCall", - "src": "3020:145:36" - } - ], - "id": 7696, - "name": "ExpressionStatement", - "src": "3020:145:36" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_b746ce628071fcac0bf096a6e7891ff5a23e8d585affec3cf59959f2a03a9fe0", - "typeString": "literal_string \"provided contract addresses and function signatures len mismatch\"" - } - ], - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 7697, - "name": "Identifier", - "src": "3176:7:36" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "length", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7679, - "type": "address[] memory", - "value": "initialContractAddresses" - }, - "id": 7698, - "name": "Identifier", - "src": "3184:24:36" - } - ], - "id": 7699, - "name": "MemberAccess", - "src": "3184:31:36" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "length", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7682, - "type": "bytes4[] memory", - "value": "initialDepositFunctionSignatures" - }, - "id": 7700, - "name": "Identifier", - "src": "3219:32:36" - } - ], - "id": 7701, - "name": "MemberAccess", - "src": "3219:39:36" - } - ], - "id": 7702, - "name": "BinaryOperation", - "src": "3184:74:36" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "70726f766964656420636f6e74726163742061646472657373657320616e642066756e6374696f6e207369676e617475726573206c656e206d69736d61746368", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"provided contract addresses and function signatures len mismatch\"", - "value": "provided contract addresses and function signatures len mismatch" - }, - "id": 7703, - "name": "Literal", - "src": "3272:66:36" - } - ], - "id": 7704, - "name": "FunctionCall", - "src": "3176:163:36" - } - ], - "id": 7705, - "name": "ExpressionStatement", - "src": "3176:163:36" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_9131b91c39cfdeebf122a7e28defa3834f957032b39040decdc270fb62be6d96", - "typeString": "literal_string \"provided deposit and execute function signatures len mismatch\"" - } - ], - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 7706, - "name": "Identifier", - "src": "3350:7:36" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "length", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7682, - "type": "bytes4[] memory", - "value": "initialDepositFunctionSignatures" - }, - "id": 7707, - "name": "Identifier", - "src": "3358:32:36" - } - ], - "id": 7708, - "name": "MemberAccess", - "src": "3358:39:36" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "length", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7685, - "type": "bytes4[] memory", - "value": "initialExecuteFunctionSignatures" - }, - "id": 7709, - "name": "Identifier", - "src": "3401:32:36" - } - ], - "id": 7710, - "name": "MemberAccess", - "src": "3401:39:36" - } - ], - "id": 7711, - "name": "BinaryOperation", - "src": "3358:82:36" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "70726f7669646564206465706f73697420616e6420657865637574652066756e6374696f6e207369676e617475726573206c656e206d69736d61746368", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"provided deposit and execute function signatures len mismatch\"", - "value": "provided deposit and execute function signatures len mismatch" - }, - "id": 7712, - "name": "Literal", - "src": "3454:63:36" - } - ], - "id": 7713, - "name": "FunctionCall", - "src": "3350:168:36" - } - ], - "id": 7714, - "name": "ExpressionStatement", - "src": "3350:168:36" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7616, - "type": "address", - "value": "_bridgeAddress" - }, - "id": 7715, - "name": "Identifier", - "src": "3529:14:36" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7673, - "type": "address", - "value": "bridgeAddress" - }, - "id": 7716, - "name": "Identifier", - "src": "3546:13:36" - } - ], - "id": 7717, - "name": "Assignment", - "src": "3529:30:36" - } - ], - "id": 7718, - "name": "ExpressionStatement", - "src": "3529:30:36" - }, - { - "children": [ - { - "attributes": { - "assignments": [7720] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "i", - "overrides": null, - "scope": 7746, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 7719, - "name": "ElementaryTypeName", - "src": "3575:7:36" - } - ], - "id": 7720, - "name": "VariableDeclaration", - "src": "3575:9:36" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 7721, - "name": "Literal", - "src": "3587:1:36" - } - ], - "id": 7722, - "name": "VariableDeclarationStatement", - "src": "3575:13:36" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "<", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7720, - "type": "uint256", - "value": "i" - }, - "id": 7723, - "name": "Identifier", - "src": "3590:1:36" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "length", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7676, - "type": "bytes32[] memory", - "value": "initialResourceIDs" - }, - "id": 7724, - "name": "Identifier", - "src": "3594:18:36" - } - ], - "id": 7725, - "name": "MemberAccess", - "src": "3594:25:36" - } - ], - "id": 7726, - "name": "BinaryOperation", - "src": "3590:29:36" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "++", - "prefix": false, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7720, - "type": "uint256", - "value": "i" - }, - "id": 7727, - "name": "Identifier", - "src": "3621:1:36" - } - ], - "id": 7728, - "name": "UnaryOperation", - "src": "3621:3:36" - } - ], - "id": 7729, - "name": "ExpressionStatement", - "src": "3621:3:36" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 8021, - "type": "function (bytes32,address,bytes4,bytes4)", - "value": "_setResource" - }, - "id": 7730, - "name": "Identifier", - "src": "3640:12:36" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7676, - "type": "bytes32[] memory", - "value": "initialResourceIDs" - }, - "id": 7731, - "name": "Identifier", - "src": "3670:18:36" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7720, - "type": "uint256", - "value": "i" - }, - "id": 7732, - "name": "Identifier", - "src": "3689:1:36" - } - ], - "id": 7733, - "name": "IndexAccess", - "src": "3670:21:36" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7679, - "type": "address[] memory", - "value": "initialContractAddresses" - }, - "id": 7734, - "name": "Identifier", - "src": "3709:24:36" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7720, - "type": "uint256", - "value": "i" - }, - "id": 7735, - "name": "Identifier", - "src": "3734:1:36" - } - ], - "id": 7736, - "name": "IndexAccess", - "src": "3709:27:36" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "bytes4" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7682, - "type": "bytes4[] memory", - "value": "initialDepositFunctionSignatures" - }, - "id": 7737, - "name": "Identifier", - "src": "3754:32:36" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7720, - "type": "uint256", - "value": "i" - }, - "id": 7738, - "name": "Identifier", - "src": "3787:1:36" - } - ], - "id": 7739, - "name": "IndexAccess", - "src": "3754:35:36" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "bytes4" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7685, - "type": "bytes4[] memory", - "value": "initialExecuteFunctionSignatures" - }, - "id": 7740, - "name": "Identifier", - "src": "3807:32:36" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7720, - "type": "uint256", - "value": "i" - }, - "id": 7741, - "name": "Identifier", - "src": "3840:1:36" - } - ], - "id": 7742, - "name": "IndexAccess", - "src": "3807:35:36" - } - ], - "id": 7743, - "name": "FunctionCall", - "src": "3640:203:36" - } - ], - "id": 7744, - "name": "ExpressionStatement", - "src": "3640:203:36" - } - ], - "id": 7745, - "name": "Block", - "src": "3626:228:36" - } - ], - "id": 7746, - "name": "ForStatement", - "src": "3570:284:36" - } - ], - "id": 7747, - "name": "Block", - "src": "3010:850:36" - } + "constant": false, + "id": 2901, + "mutability": "mutable", + "name": "sig", + "nameLocation": "7391:3:22", + "nodeType": "VariableDeclaration", + "scope": 2947, + "src": "7384:10:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 2900, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "7384:6:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "id": 2905, + "initialValue": { + "baseExpression": { + "id": 2902, + "name": "_contractAddressToDepositFunctionSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2698, + "src": "7397:42:22", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bytes4_$", + "typeString": "mapping(address => bytes4)" + } + }, + "id": 2904, + "indexExpression": { + "id": 2903, + "name": "contractAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2888, + "src": "7440:15:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7397:59:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7384:72:22" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 2911, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2906, + "name": "sig", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2901, + "src": "7471:3:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 2909, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7485:1:22", + "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": 7748, - "name": "FunctionDefinition", - "src": "2731:1129:36" - }, - { - "attributes": { - "functionSelector": "ba484c09", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [null], - "name": "getDepositRecord", - "overrides": null, - "scope": 8022, - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - "children": [ - { - "attributes": { - "text": "@param depositNonce This ID will have been generated by the Bridge contract.\n@param destId ID of chain deposit will be bridged to.\n@return DepositRecord which consists of:\n- _destinationChainID ChainID deposited tokens are intended to end up on.\n- _resourceID ResourceID used when {deposit} was executed.\n- _depositer Address that initially called {deposit} in the Bridge contract.\n- _metaData Data to be passed to method executed in corresponding {resourceID} contract." - }, - "id": 7749, - "name": "StructuredDocumentation", - "src": "3866:537:36" + "id": 2908, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7478:6:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes4_$", + "typeString": "type(bytes4)" + }, + "typeName": { + "id": 2907, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "7478:6:22", + "typeDescriptions": {} + } + }, + "id": 2910, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7478:9:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "7471:16:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2933, + "nodeType": "IfStatement", + "src": "7467:240:22", + "trueBody": { + "id": 2932, + "nodeType": "Block", + "src": "7489:218:22", + "statements": [ + { + "assignments": [ + 2913 + ], + "declarations": [ + { + "constant": false, + "id": 2913, + "mutability": "mutable", + "name": "callData", + "nameLocation": "7517:8:22", + "nodeType": "VariableDeclaration", + "scope": 2932, + "src": "7504:21:22", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "depositNonce", - "overrides": null, - "scope": 7765, - "stateVariable": false, - "storageLocation": "default", - "type": "uint64", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint64", - "type": "uint64" - }, - "id": 7750, - "name": "ElementaryTypeName", - "src": "4434:6:36" - } - ], - "id": 7751, - "name": "VariableDeclaration", - "src": "4434:19:36" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "destId", - "overrides": null, - "scope": 7765, - "stateVariable": false, - "storageLocation": "default", - "type": "uint8", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint8", - "type": "uint8" - }, - "id": 7752, - "name": "ElementaryTypeName", - "src": "4455:5:36" - } - ], - "id": 7753, - "name": "VariableDeclaration", - "src": "4455:12:36" - } - ], - "id": 7754, - "name": "ParameterList", - "src": "4433:35:36" + "typeName": { + "id": 2912, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7504:5:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } }, + "visibility": "internal" + } + ], + "id": 2919, + "initialValue": { + "arguments": [ { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "", - "overrides": null, - "scope": 7765, - "stateVariable": false, - "storageLocation": "memory", - "type": "struct GenericHandler.DepositRecord", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "DepositRecord", - "referencedDeclaration": 7625, - "type": "struct GenericHandler.DepositRecord" - }, - "id": 7755, - "name": "UserDefinedTypeName", - "src": "4492:13:36" - } - ], - "id": 7756, - "name": "VariableDeclaration", - "src": "4492:20:36" - } - ], - "id": 7757, - "name": "ParameterList", - "src": "4491:22:36" + "id": 2916, + "name": "sig", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2901, + "src": "7545:3:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } }, { - "children": [ - { - "attributes": { - "functionReturnParameters": 7757 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct GenericHandler.DepositRecord storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "mapping(uint64 => struct GenericHandler.DepositRecord storage ref)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7631, - "type": "mapping(uint8 => mapping(uint64 => struct GenericHandler.DepositRecord storage ref))", - "value": "_depositRecords" - }, - "id": 7758, - "name": "Identifier", - "src": "4531:15:36" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7753, - "type": "uint8", - "value": "destId" - }, - "id": 7759, - "name": "Identifier", - "src": "4547:6:36" - } - ], - "id": 7760, - "name": "IndexAccess", - "src": "4531:23:36" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7751, - "type": "uint64", - "value": "depositNonce" - }, - "id": 7761, - "name": "Identifier", - "src": "4555:12:36" - } - ], - "id": 7762, - "name": "IndexAccess", - "src": "4531:37:36" - } - ], - "id": 7763, - "name": "Return", - "src": "4524:44:36" - } - ], - "id": 7764, - "name": "Block", - "src": "4514:61:36" + "id": 2917, + "name": "metadata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2863, + "src": "7550:8:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } } - ], - "id": 7765, - "name": "FunctionDefinition", - "src": "4408:167:36" - }, - { - "attributes": { - "baseFunctions": [8298], - "functionSelector": "bba8185a", - "implemented": true, - "isConstructor": false, - "kind": "function", - "name": "setResource", - "scope": 8022, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - "children": [ - { - "attributes": { - "text": "@notice First verifies {_resourceIDToContractAddress}[{resourceID}] and\n{_contractAddressToResourceID}[{contractAddress}] are not already set,\nthen sets {_resourceIDToContractAddress} with {contractAddress},\n{_contractAddressToResourceID} with {resourceID},\n{_contractAddressToDepositFunctionSignature} with {depositFunctionSig},\n{_contractAddressToExecuteFunctionSignature} with {executeFunctionSig},\nand {_contractWhitelist} to true for {contractAddress}.\n@param resourceID ResourceID to be used when making deposits.\n@param contractAddress Address of contract to be called when a deposit is made and a deposited is executed.\n@param depositFunctionSig Function signature of method to be called in {contractAddress} when a deposit is made.\n@param executeFunctionSig Function signature of method to be called in {contractAddress} when a deposit is executed." - }, - "id": 7766, - "name": "StructuredDocumentation", - "src": "4581:957:36" + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 2914, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967295, + "src": "7528:3:22", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } }, - { - "attributes": { - "overrides": [null] - }, - "id": 7778, - "name": "OverrideSpecifier", - "src": "5721:8:36" + "id": 2915, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "7532:12:22", + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "7528:16:22", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 2918, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7528:31:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7504:55:22" + }, + { + "assignments": [ + 2921, + null + ], + "declarations": [ + { + "constant": false, + "id": 2921, + "mutability": "mutable", + "name": "success", + "nameLocation": "7580:7:22", + "nodeType": "VariableDeclaration", + "scope": 2932, + "src": "7575:12:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "resourceID", - "overrides": null, - "scope": 7788, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 7767, - "name": "ElementaryTypeName", - "src": "5573:7:36" - } - ], - "id": 7768, - "name": "VariableDeclaration", - "src": "5573:18:36" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "contractAddress", - "overrides": null, - "scope": 7788, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 7769, - "name": "ElementaryTypeName", - "src": "5601:7:36" - } - ], - "id": 7770, - "name": "VariableDeclaration", - "src": "5601:23:36" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "depositFunctionSig", - "overrides": null, - "scope": 7788, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes4", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes4", - "type": "bytes4" - }, - "id": 7771, - "name": "ElementaryTypeName", - "src": "5634:6:36" - } - ], - "id": 7772, - "name": "VariableDeclaration", - "src": "5634:25:36" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "executeFunctionSig", - "overrides": null, - "scope": 7788, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes4", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes4", - "type": "bytes4" - }, - "id": 7773, - "name": "ElementaryTypeName", - "src": "5669:6:36" - } - ], - "id": 7774, - "name": "VariableDeclaration", - "src": "5669:25:36" - } - ], - "id": 7775, - "name": "ParameterList", - "src": "5563:137:36" + "typeName": { + "id": 2920, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7575:4:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } }, + "visibility": "internal" + }, + null + ], + "id": 2926, + "initialValue": { + "arguments": [ { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 7779, - "name": "ParameterList", - "src": "5730:0:36" + "id": 2924, + "name": "callData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2913, + "src": "7613:8:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 2922, + "name": "contractAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2888, + "src": "7592:15:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, + "id": 2923, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7608:4:22", + "memberName": "call", + "nodeType": "MemberAccess", + "src": "7592:20:22", + "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": 2925, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7592:30:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7574:48:22" + }, + { + "expression": { + "arguments": [ { - "attributes": { - "arguments": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7658, - "type": "modifier ()", - "value": "onlyBridge" - }, - "id": 7776, - "name": "Identifier", - "src": "5710:10:36" - } - ], - "id": 7777, - "name": "ModifierInvocation", - "src": "5710:10:36" + "id": 2928, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2921, + "src": "7645:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } }, { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 8021, - "type": "function (bytes32,address,bytes4,bytes4)", - "value": "_setResource" - }, - "id": 7780, - "name": "Identifier", - "src": "5741:12:36" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7768, - "type": "bytes32", - "value": "resourceID" - }, - "id": 7781, - "name": "Identifier", - "src": "5754:10:36" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7770, - "type": "address", - "value": "contractAddress" - }, - "id": 7782, - "name": "Identifier", - "src": "5766:15:36" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7772, - "type": "bytes4", - "value": "depositFunctionSig" - }, - "id": 7783, - "name": "Identifier", - "src": "5783:18:36" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7774, - "type": "bytes4", - "value": "executeFunctionSig" - }, - "id": 7784, - "name": "Identifier", - "src": "5803:18:36" - } - ], - "id": 7785, - "name": "FunctionCall", - "src": "5741:81:36" - } - ], - "id": 7786, - "name": "ExpressionStatement", - "src": "5741:81:36" - } - ], - "id": 7787, - "name": "Block", - "src": "5730:99:36" + "hexValue": "64656c656761746563616c6c20746f20636f6e747261637441646472657373206661696c6564", + "id": 2929, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7654:40:22", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_51f8dc53a1a1265d7e1a33da60330d21af9ee076b3a370b08330721ff4064ac2", + "typeString": "literal_string \"delegatecall to contractAddress failed\"" + }, + "value": "delegatecall to contractAddress failed" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_51f8dc53a1a1265d7e1a33da60330d21af9ee076b3a370b08330721ff4064ac2", + "typeString": "literal_string \"delegatecall to contractAddress failed\"" + } + ], + "id": 2927, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "7637:7:22", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } + }, + "id": 2930, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7637:58:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2931, + "nodeType": "ExpressionStatement", + "src": "7637:58:22" + } + ] + } + }, + { + "expression": { + "id": 2945, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "baseExpression": { + "id": 2934, + "name": "_depositRecords", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2686, + "src": "7719:15:22", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint8_$_t_mapping$_t_uint64_$_t_struct$_DepositRecord_$2679_storage_$_$", + "typeString": "mapping(uint8 => mapping(uint64 => struct GenericHandler.DepositRecord storage ref))" + } + }, + "id": 2937, + "indexExpression": { + "id": 2935, + "name": "destinationChainID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2848, + "src": "7735:18:22", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7719:35:22", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_DepositRecord_$2679_storage_$", + "typeString": "mapping(uint64 => struct GenericHandler.DepositRecord storage ref)" + } + }, + "id": 2938, + "indexExpression": { + "id": 2936, + "name": "depositNonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2850, + "src": "7755:12:22", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "7719:49:22", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DepositRecord_$2679_storage", + "typeString": "struct GenericHandler.DepositRecord storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 2940, + "name": "destinationChainID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2848, + "src": "7799:18:22", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "id": 2941, + "name": "depositer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2852, + "src": "7832:9:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2942, + "name": "resourceID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2846, + "src": "7856:10:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 2943, + "name": "metadata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2863, + "src": "7881:8:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } ], - "id": 7788, - "name": "FunctionDefinition", - "src": "5543:286:36" + "id": 2939, + "name": "DepositRecord", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2679, + "src": "7771:13:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_DepositRecord_$2679_storage_ptr_$", + "typeString": "type(struct GenericHandler.DepositRecord storage pointer)" + } + }, + "id": 2944, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7771:129:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_DepositRecord_$2679_memory_ptr", + "typeString": "struct GenericHandler.DepositRecord memory" + } }, + "src": "7719:181:22", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DepositRecord_$2679_storage", + "typeString": "struct GenericHandler.DepositRecord storage ref" + } + }, + "id": 2946, + "nodeType": "ExpressionStatement", + "src": "7719:181:22" + } + ] + }, + "documentation": { + "id": 2844, + "nodeType": "StructuredDocumentation", + "src": "5948:917:22", + "text": "@notice A deposit is initiatied by making a deposit in the Bridge contract.\n@param destinationChainID Chain ID deposit is expected to be bridged to.\n@param depositNonce This value is generated as an ID by the Bridge contract.\n@param depositer Address of account making the deposit in the Bridge contract.\n@param data Consists of: {resourceID}, {lenMetaData}, and {metaData} all padded to 32 bytes.\n@notice Data passed into the function should be constructed as follows:\nlen(data) uint256 bytes 0 - 32\ndata bytes bytes 64 - END\n@notice {contractAddress} is required to be whitelisted\n@notice If {_contractAddressToDepositFunctionSignature}[{contractAddress}] is set,\n{metaData} is expected to consist of needed function arguments." + }, + "functionSelector": "38995da9", + "id": 2948, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2857, + "kind": "modifierInvocation", + "modifierName": { + "id": 2856, + "name": "onlyBridge", + "nameLocations": [ + "7004:10:22" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2713, + "src": "7004:10:22" + }, + "nodeType": "ModifierInvocation", + "src": "7004:10:22" + } + ], + "name": "deposit", + "nameLocation": "6880:7:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2855, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2846, + "mutability": "mutable", + "name": "resourceID", + "nameLocation": "6896:10:22", + "nodeType": "VariableDeclaration", + "scope": 2948, + "src": "6888:18:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2845, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6888:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2848, + "mutability": "mutable", + "name": "destinationChainID", + "nameLocation": "6914:18:22", + "nodeType": "VariableDeclaration", + "scope": 2948, + "src": "6908:24:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 2847, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "6908:5:22", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2850, + "mutability": "mutable", + "name": "depositNonce", + "nameLocation": "6941:12:22", + "nodeType": "VariableDeclaration", + "scope": 2948, + "src": "6934:19:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 2849, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "6934:6:22", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2852, + "mutability": "mutable", + "name": "depositer", + "nameLocation": "6963:9:22", + "nodeType": "VariableDeclaration", + "scope": 2948, + "src": "6955:17:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2851, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6955:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2854, + "mutability": "mutable", + "name": "data", + "nameLocation": "6989:4:22", + "nodeType": "VariableDeclaration", + "scope": 2948, + "src": "6974:19:22", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2853, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6974:5:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "6887:107:22" + }, + "returnParameters": { + "id": 2858, + "nodeType": "ParameterList", + "parameters": [], + "src": "7015:0:22" + }, + "scope": 3077, + "src": "6871:1037:22", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 3033, + "nodeType": "Block", + "src": "8669:699:22", + "statements": [ + { + "assignments": [ + 2959 + ], + "declarations": [ + { + "constant": false, + "id": 2959, + "mutability": "mutable", + "name": "lenMetadata", + "nameLocation": "8693:11:22", + "nodeType": "VariableDeclaration", + "scope": 3033, + "src": "8680:24:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2958, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8680:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2960, + "nodeType": "VariableDeclarationStatement", + "src": "8680:24:22" + }, + { + "assignments": [ + 2962 + ], + "declarations": [ { - "attributes": { - "functionSelector": "38995da9", - "implemented": true, - "isConstructor": false, - "kind": "function", - "name": "deposit", - "overrides": null, - "scope": 8022, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" + "constant": false, + "id": 2962, + "mutability": "mutable", + "name": "metaData", + "nameLocation": "8728:8:22", + "nodeType": "VariableDeclaration", + "scope": 3033, + "src": "8715:21:22", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2961, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "8715:5:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 2963, + "nodeType": "VariableDeclarationStatement", + "src": "8715:21:22" + }, + { + "expression": { + "id": 2972, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2964, + "name": "lenMetadata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2959, + "src": "8749:11:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 2967, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2953, + "src": "8774:4:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } }, - "children": [ - { - "attributes": { - "text": "@notice A deposit is initiatied by making a deposit in the Bridge contract.\n@param destinationChainID Chain ID deposit is expected to be bridged to.\n@param depositNonce This value is generated as an ID by the Bridge contract.\n@param depositer Address of account making the deposit in the Bridge contract.\n@param data Consists of: {resourceID}, {lenMetaData}, and {metaData} all padded to 32 bytes.\n@notice Data passed into the function should be constructed as follows:\nlen(data) uint256 bytes 0 - 32\ndata bytes bytes 64 - END\n@notice {contractAddress} is required to be whitelisted\n@notice If {_contractAddressToDepositFunctionSignature}[{contractAddress}] is set,\n{metaData} is expected to consist of needed function arguments." - }, - "id": 7789, - "name": "StructuredDocumentation", - "src": "5835:905:36" - }, + { + "components": [ { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "resourceID", - "overrides": null, - "scope": 7893, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 7790, - "name": "ElementaryTypeName", - "src": "6762:7:36" - } - ], - "id": 7791, - "name": "VariableDeclaration", - "src": "6762:18:36" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "destinationChainID", - "overrides": null, - "scope": 7893, - "stateVariable": false, - "storageLocation": "default", - "type": "uint8", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint8", - "type": "uint8" - }, - "id": 7792, - "name": "ElementaryTypeName", - "src": "6782:5:36" - } - ], - "id": 7793, - "name": "VariableDeclaration", - "src": "6782:24:36" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "depositNonce", - "overrides": null, - "scope": 7893, - "stateVariable": false, - "storageLocation": "default", - "type": "uint64", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint64", - "type": "uint64" - }, - "id": 7794, - "name": "ElementaryTypeName", - "src": "6808:6:36" - } - ], - "id": 7795, - "name": "VariableDeclaration", - "src": "6808:19:36" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "depositer", - "overrides": null, - "scope": 7893, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 7796, - "name": "ElementaryTypeName", - "src": "6829:7:36" - } - ], - "id": 7797, - "name": "VariableDeclaration", - "src": "6829:17:36" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "data", - "overrides": null, - "scope": 7893, - "stateVariable": false, - "storageLocation": "calldata", - "type": "bytes", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes", - "type": "bytes" - }, - "id": 7798, - "name": "ElementaryTypeName", - "src": "6848:5:36" - } - ], - "id": 7799, - "name": "VariableDeclaration", - "src": "6848:19:36" - } - ], - "id": 7800, - "name": "ParameterList", - "src": "6761:107:36" + "id": 2969, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8781:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2968, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8781:7:22", + "typeDescriptions": {} + } + } + ], + "id": 2970, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8780:9:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + }, + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "expression": { + "id": 2965, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967295, + "src": "8763:3:22", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 2966, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "8767:6:22", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "8763:10:22", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2971, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8763:27:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8749:41:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2973, + "nodeType": "ExpressionStatement", + "src": "8749:41:22" + }, + { + "expression": { + "id": 2984, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2974, + "name": "metaData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2962, + "src": "8801:8:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "baseExpression": { + "id": 2977, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2953, + "src": "8818:4:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "endExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 7803, - "name": "ParameterList", - "src": "6889:0:36" + "id": 2981, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3332", + "id": 2979, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8826:2:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" }, - { - "attributes": { - "arguments": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7658, - "type": "modifier ()", - "value": "onlyBridge" - }, - "id": 7801, - "name": "Identifier", - "src": "6878:10:36" - } - ], - "id": 7802, - "name": "ModifierInvocation", - "src": "6878:10:36" + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 2980, + "name": "lenMetadata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2959, + "src": "8831:11:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, - { - "children": [ - { - "attributes": { - "assignments": [7805], - "initialValue": null - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "lenMetadata", - "overrides": null, - "scope": 7892, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 7804, - "name": "ElementaryTypeName", - "src": "6899:7:36" - } - ], - "id": 7805, - "name": "VariableDeclaration", - "src": "6899:24:36" - } - ], - "id": 7806, - "name": "VariableDeclarationStatement", - "src": "6899:24:36" - }, - { - "attributes": { - "assignments": [7808], - "initialValue": null - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "metadata", - "overrides": null, - "scope": 7892, - "stateVariable": false, - "storageLocation": "memory", - "type": "bytes", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes", - "type": "bytes" - }, - "id": 7807, - "name": "ElementaryTypeName", - "src": "6933:5:36" - } - ], - "id": 7808, - "name": "VariableDeclaration", - "src": "6933:21:36" - } - ], - "id": 7809, - "name": "VariableDeclarationStatement", - "src": "6933:21:36" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7805, - "type": "uint256", - "value": "lenMetadata" - }, - "id": 7810, - "name": "Identifier", - "src": "6965:11:36" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - }, - { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "member_name": "decode", - "referencedDeclaration": null, - "type": "function () pure" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": -1, - "type": "abi", - "value": "abi" - }, - "id": 7811, - "name": "Identifier", - "src": "6979:3:36" - } - ], - "id": 7812, - "name": "MemberAccess", - "src": "6979:10:36" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7799, - "type": "bytes calldata", - "value": "data" - }, - "id": 7813, - "name": "Identifier", - "src": "6990:4:36" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(uint256)" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": null - }, - "id": 7814, - "name": "ElementaryTypeName", - "src": "6997:7:36" - } - ], - "id": 7815, - "name": "ElementaryTypeNameExpression", - "src": "6997:7:36" - } - ], - "id": 7816, - "name": "TupleExpression", - "src": "6996:9:36" - } - ], - "id": 7817, - "name": "FunctionCall", - "src": "6979:27:36" - } - ], - "id": 7818, - "name": "Assignment", - "src": "6965:41:36" - } - ], - "id": 7819, - "name": "ExpressionStatement", - "src": "6965:41:36" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "bytes memory" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7808, - "type": "bytes memory", - "value": "metadata" - }, - "id": 7820, - "name": "Identifier", - "src": "7016:8:36" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "bytes calldata", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_calldata_ptr_slice", - "typeString": "bytes calldata slice" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(bytes storage pointer)" - }, - "children": [ - { - "attributes": { - "name": "bytes", - "type": null - }, - "id": 7821, - "name": "ElementaryTypeName", - "src": "7027:5:36" - } - ], - "id": 7822, - "name": "ElementaryTypeNameExpression", - "src": "7027:5:36" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "type": "bytes calldata slice" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7799, - "type": "bytes calldata", - "value": "data" - }, - "id": 7823, - "name": "Identifier", - "src": "7033:4:36" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "3332", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 32", - "value": "32" - }, - "id": 7824, - "name": "Literal", - "src": "7038:2:36" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "+", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "hexvalue": "3332", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 32", - "value": "32" - }, - "id": 7825, - "name": "Literal", - "src": "7041:2:36" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7805, - "type": "uint256", - "value": "lenMetadata" - }, - "id": 7826, - "name": "Identifier", - "src": "7046:11:36" - } - ], - "id": 7827, - "name": "BinaryOperation", - "src": "7041:16:36" - } - ], - "id": 7828, - "name": "IndexRangeAccess", - "src": "7033:25:36" - } - ], - "id": 7829, - "name": "FunctionCall", - "src": "7027:32:36" - } - ], - "id": 7830, - "name": "Assignment", - "src": "7016:43:36" - } - ], - "id": 7831, - "name": "ExpressionStatement", - "src": "7016:43:36" - }, - { - "attributes": { - "assignments": [7833] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "contractAddress", - "overrides": null, - "scope": 7892, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 7832, - "name": "ElementaryTypeName", - "src": "7070:7:36" - } - ], - "id": 7833, - "name": "VariableDeclaration", - "src": "7070:23:36" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7635, - "type": "mapping(bytes32 => address)", - "value": "_resourceIDToContractAddress" - }, - "id": 7834, - "name": "Identifier", - "src": "7096:28:36" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7791, - "type": "bytes32", - "value": "resourceID" - }, - "id": 7835, - "name": "Identifier", - "src": "7125:10:36" - } - ], - "id": 7836, - "name": "IndexAccess", - "src": "7096:40:36" - } - ], - "id": 7837, - "name": "VariableDeclarationStatement", - "src": "7070:66:36" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_b35e1d4b1392122547a6ef1db8ad0b6549b5cc8820bfc81437cf78f8b1333b05", - "typeString": "literal_string \"provided contractAddress is not whitelisted\"" - } - ], - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 7838, - "name": "Identifier", - "src": "7146:7:36" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7651, - "type": "mapping(address => bool)", - "value": "_contractWhitelist" - }, - "id": 7839, - "name": "Identifier", - "src": "7154:18:36" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7833, - "type": "address", - "value": "contractAddress" - }, - "id": 7840, - "name": "Identifier", - "src": "7173:15:36" - } - ], - "id": 7841, - "name": "IndexAccess", - "src": "7154:35:36" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "70726f766964656420636f6e747261637441646472657373206973206e6f742077686974656c6973746564", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"provided contractAddress is not whitelisted\"", - "value": "provided contractAddress is not whitelisted" - }, - "id": 7842, - "name": "Literal", - "src": "7191:45:36" - } - ], - "id": 7843, - "name": "FunctionCall", - "src": "7146:91:36" - } - ], - "id": 7844, - "name": "ExpressionStatement", - "src": "7146:91:36" - }, - { - "attributes": { - "assignments": [7846] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "sig", - "overrides": null, - "scope": 7892, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes4", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes4", - "type": "bytes4" - }, - "id": 7845, - "name": "ElementaryTypeName", - "src": "7248:6:36" - } - ], - "id": 7846, - "name": "VariableDeclaration", - "src": "7248:10:36" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "bytes4" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7643, - "type": "mapping(address => bytes4)", - "value": "_contractAddressToDepositFunctionSignature" - }, - "id": 7847, - "name": "Identifier", - "src": "7261:42:36" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7833, - "type": "address", - "value": "contractAddress" - }, - "id": 7848, - "name": "Identifier", - "src": "7304:15:36" - } - ], - "id": 7849, - "name": "IndexAccess", - "src": "7261:59:36" - } - ], - "id": 7850, - "name": "VariableDeclarationStatement", - "src": "7248:72:36" - }, - { - "attributes": { - "falseBody": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7846, - "type": "bytes4", - "value": "sig" - }, - "id": 7851, - "name": "Identifier", - "src": "7334:3:36" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "bytes4", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(bytes4)" - }, - "children": [ - { - "attributes": { - "name": "bytes4", - "type": null - }, - "id": 7852, - "name": "ElementaryTypeName", - "src": "7341:6:36" - } - ], - "id": 7853, - "name": "ElementaryTypeNameExpression", - "src": "7341:6:36" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 7854, - "name": "Literal", - "src": "7348:1:36" - } - ], - "id": 7855, - "name": "FunctionCall", - "src": "7341:9:36" - } - ], - "id": 7856, - "name": "BinaryOperation", - "src": "7334:16:36" - }, - { - "children": [ - { - "attributes": { - "assignments": [7858] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "callData", - "overrides": null, - "scope": 7877, - "stateVariable": false, - "storageLocation": "memory", - "type": "bytes", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes", - "type": "bytes" - }, - "id": 7857, - "name": "ElementaryTypeName", - "src": "7366:5:36" - } - ], - "id": 7858, - "name": "VariableDeclaration", - "src": "7366:21:36" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "bytes memory", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "member_name": "encodeWithSelector", - "referencedDeclaration": null, - "type": "function (bytes4) pure returns (bytes memory)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": -1, - "type": "abi", - "value": "abi" - }, - "id": 7859, - "name": "Identifier", - "src": "7390:3:36" - } - ], - "id": 7860, - "name": "MemberAccess", - "src": "7390:22:36" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7846, - "type": "bytes4", - "value": "sig" - }, - "id": 7861, - "name": "Identifier", - "src": "7413:3:36" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7808, - "type": "bytes memory", - "value": "metadata" - }, - "id": 7862, - "name": "Identifier", - "src": "7418:8:36" - } - ], - "id": 7863, - "name": "FunctionCall", - "src": "7390:37:36" - } - ], - "id": 7864, - "name": "VariableDeclarationStatement", - "src": "7366:61:36" - }, - { - "attributes": { - "assignments": [7866, null] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "success", - "overrides": null, - "scope": 7877, - "stateVariable": false, - "storageLocation": "default", - "type": "bool", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bool", - "type": "bool" - }, - "id": 7865, - "name": "ElementaryTypeName", - "src": "7442:4:36" - } - ], - "id": 7866, - "name": "VariableDeclaration", - "src": "7442:12:36" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple(bool,bytes memory)", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "call", - "referencedDeclaration": null, - "type": "function (bytes memory) payable returns (bool,bytes memory)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7833, - "type": "address", - "value": "contractAddress" - }, - "id": 7867, - "name": "Identifier", - "src": "7459:15:36" - } - ], - "id": 7868, - "name": "MemberAccess", - "src": "7459:20:36" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7858, - "type": "bytes memory", - "value": "callData" - }, - "id": 7869, - "name": "Identifier", - "src": "7480:8:36" - } - ], - "id": 7870, - "name": "FunctionCall", - "src": "7459:30:36" - } - ], - "id": 7871, - "name": "VariableDeclarationStatement", - "src": "7441:48:36" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_51f8dc53a1a1265d7e1a33da60330d21af9ee076b3a370b08330721ff4064ac2", - "typeString": "literal_string \"delegatecall to contractAddress failed\"" - } - ], - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 7872, - "name": "Identifier", - "src": "7503:7:36" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7866, - "type": "bool", - "value": "success" - }, - "id": 7873, - "name": "Identifier", - "src": "7511:7:36" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "64656c656761746563616c6c20746f20636f6e747261637441646472657373206661696c6564", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"delegatecall to contractAddress failed\"", - "value": "delegatecall to contractAddress failed" - }, - "id": 7874, - "name": "Literal", - "src": "7520:40:36" - } - ], - "id": 7875, - "name": "FunctionCall", - "src": "7503:58:36" - } - ], - "id": 7876, - "name": "ExpressionStatement", - "src": "7503:58:36" - } - ], - "id": 7877, - "name": "Block", - "src": "7352:220:36" - } - ], - "id": 7878, - "name": "IfStatement", - "src": "7330:242:36" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "struct GenericHandler.DepositRecord storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "struct GenericHandler.DepositRecord storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "mapping(uint64 => struct GenericHandler.DepositRecord storage ref)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7631, - "type": "mapping(uint8 => mapping(uint64 => struct GenericHandler.DepositRecord storage ref))", - "value": "_depositRecords" - }, - "id": 7879, - "name": "Identifier", - "src": "7582:15:36" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7793, - "type": "uint8", - "value": "destinationChainID" - }, - "id": 7880, - "name": "Identifier", - "src": "7598:18:36" - } - ], - "id": 7882, - "name": "IndexAccess", - "src": "7582:35:36" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7795, - "type": "uint64", - "value": "depositNonce" - }, - "id": 7881, - "name": "Identifier", - "src": "7618:12:36" - } - ], - "id": 7883, - "name": "IndexAccess", - "src": "7582:49:36" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": true, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "struct GenericHandler.DepositRecord memory", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 7625, - "type": "type(struct GenericHandler.DepositRecord storage pointer)", - "value": "DepositRecord" - }, - "id": 7884, - "name": "Identifier", - "src": "7634:13:36" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7793, - "type": "uint8", - "value": "destinationChainID" - }, - "id": 7885, - "name": "Identifier", - "src": "7661:18:36" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7797, - "type": "address", - "value": "depositer" - }, - "id": 7886, - "name": "Identifier", - "src": "7693:9:36" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7791, - "type": "bytes32", - "value": "resourceID" - }, - "id": 7887, - "name": "Identifier", - "src": "7716:10:36" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7808, - "type": "bytes memory", - "value": "metadata" - }, - "id": 7888, - "name": "Identifier", - "src": "7740:8:36" - } - ], - "id": 7889, - "name": "FunctionCall", - "src": "7634:124:36" - } - ], - "id": 7890, - "name": "Assignment", - "src": "7582:176:36" - } - ], - "id": 7891, - "name": "ExpressionStatement", - "src": "7582:176:36" - } - ], - "id": 7892, - "name": "Block", - "src": "6889:876:36" + "src": "8826:16:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } + }, + "id": 2982, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexRangeAccess", + "src": "8818:25:22", + "startExpression": { + "hexValue": "3332", + "id": 2978, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8823:2:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr_slice", + "typeString": "bytes calldata slice" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr_slice", + "typeString": "bytes calldata slice" + } ], - "id": 7893, - "name": "FunctionDefinition", - "src": "6745:1020:36" + "id": 2976, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8812:5:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 2975, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "8812:5:22", + "typeDescriptions": {} + } + }, + "id": 2983, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8812:32:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "src": "8801:43:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 2985, + "nodeType": "ExpressionStatement", + "src": "8801:43:22" + }, + { + "assignments": [ + 2987 + ], + "declarations": [ + { + "constant": false, + "id": 2987, + "mutability": "mutable", + "name": "contractAddress", + "nameLocation": "8865:15:22", + "nodeType": "VariableDeclaration", + "scope": 3033, + "src": "8857:23:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2986, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8857:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 2991, + "initialValue": { + "baseExpression": { + "id": 2988, + "name": "_resourceIDToContractAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2690, + "src": "8883:28:22", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + } + }, + "id": 2990, + "indexExpression": { + "id": 2989, + "name": "resourceID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2951, + "src": "8912:10:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8883:40:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8857:66:22" + }, + { + "expression": { + "arguments": [ + { + "baseExpression": { + "id": 2993, + "name": "_contractWhitelist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2706, + "src": "8942:18:22", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2995, + "indexExpression": { + "id": 2994, + "name": "contractAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2987, + "src": "8961:15:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8942:35:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "70726f766964656420636f6e747261637441646472657373206973206e6f742077686974656c6973746564", + "id": 2996, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8979:45:22", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b35e1d4b1392122547a6ef1db8ad0b6549b5cc8820bfc81437cf78f8b1333b05", + "typeString": "literal_string \"provided contractAddress is not whitelisted\"" + }, + "value": "provided contractAddress is not whitelisted" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b35e1d4b1392122547a6ef1db8ad0b6549b5cc8820bfc81437cf78f8b1333b05", + "typeString": "literal_string \"provided contractAddress is not whitelisted\"" + } + ], + "id": 2992, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "8934:7:22", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } }, + "id": 2997, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8934:91:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2998, + "nodeType": "ExpressionStatement", + "src": "8934:91:22" + }, + { + "assignments": [ + 3000 + ], + "declarations": [ { - "attributes": { - "functionSelector": "e248cff2", - "implemented": true, - "isConstructor": false, - "kind": "function", - "name": "executeProposal", - "overrides": null, - "scope": 8022, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" + "constant": false, + "id": 3000, + "mutability": "mutable", + "name": "sig", + "nameLocation": "9045:3:22", + "nodeType": "VariableDeclaration", + "scope": 3033, + "src": "9038:10:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 2999, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "9038:6:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "id": 3004, + "initialValue": { + "baseExpression": { + "id": 3001, + "name": "_contractAddressToExecuteFunctionSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2702, + "src": "9051:42:22", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bytes4_$", + "typeString": "mapping(address => bytes4)" + } + }, + "id": 3003, + "indexExpression": { + "id": 3002, + "name": "contractAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2987, + "src": "9094:15:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9051:59:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9038:72:22" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 3010, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3005, + "name": "sig", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3000, + "src": "9125:3:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 3008, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9139:1:22", + "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": 3007, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9132:6:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes4_$", + "typeString": "type(bytes4)" }, - "children": [ - { - "attributes": { - "text": "@notice Proposal execution should be initiated when a proposal is finalized in the Bridge contract.\n@param data Consists of {resourceID}, {lenMetaData}, and {metaData}.\n@notice Data passed into the function should be constructed as follows:\nlen(data) uint256 bytes 0 - 32\ndata bytes bytes 32 - END\n@notice {contractAddress} is required to be whitelisted\n@notice If {_contractAddressToExecuteFunctionSignature}[{contractAddress}] is set,\n{metaData} is expected to consist of needed function arguments." - }, - "id": 7894, - "name": "StructuredDocumentation", - "src": "7771:652:36" + "typeName": { + "id": 3006, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "9132:6:22", + "typeDescriptions": {} + } + }, + "id": 3009, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9132:9:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "9125:16:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3032, + "nodeType": "IfStatement", + "src": "9121:240:22", + "trueBody": { + "id": 3031, + "nodeType": "Block", + "src": "9143:218:22", + "statements": [ + { + "assignments": [ + 3012 + ], + "declarations": [ + { + "constant": false, + "id": 3012, + "mutability": "mutable", + "name": "callData", + "nameLocation": "9171:8:22", + "nodeType": "VariableDeclaration", + "scope": 3031, + "src": "9158:21:22", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "resourceID", - "overrides": null, - "scope": 7979, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 7895, - "name": "ElementaryTypeName", - "src": "8453:7:36" - } - ], - "id": 7896, - "name": "VariableDeclaration", - "src": "8453:18:36" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "data", - "overrides": null, - "scope": 7979, - "stateVariable": false, - "storageLocation": "calldata", - "type": "bytes", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes", - "type": "bytes" - }, - "id": 7897, - "name": "ElementaryTypeName", - "src": "8473:5:36" - } - ], - "id": 7898, - "name": "VariableDeclaration", - "src": "8473:19:36" - } - ], - "id": 7899, - "name": "ParameterList", - "src": "8452:41:36" + "typeName": { + "id": 3011, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "9158:5:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } }, + "visibility": "internal" + } + ], + "id": 3018, + "initialValue": { + "arguments": [ { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 7902, - "name": "ParameterList", - "src": "8514:0:36" + "id": 3015, + "name": "sig", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3000, + "src": "9199:3:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } }, { - "attributes": { - "arguments": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7658, - "type": "modifier ()", - "value": "onlyBridge" - }, - "id": 7900, - "name": "Identifier", - "src": "8503:10:36" - } - ], - "id": 7901, - "name": "ModifierInvocation", - "src": "8503:10:36" + "id": 3016, + "name": "metaData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2962, + "src": "9204:8:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 3013, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294967295, + "src": "9182:3:22", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } }, - { - "children": [ - { - "attributes": { - "assignments": [7904], - "initialValue": null - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "lenMetadata", - "overrides": null, - "scope": 7978, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 7903, - "name": "ElementaryTypeName", - "src": "8524:7:36" - } - ], - "id": 7904, - "name": "VariableDeclaration", - "src": "8524:24:36" - } - ], - "id": 7905, - "name": "VariableDeclarationStatement", - "src": "8524:24:36" - }, - { - "attributes": { - "assignments": [7907], - "initialValue": null - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "metaData", - "overrides": null, - "scope": 7978, - "stateVariable": false, - "storageLocation": "memory", - "type": "bytes", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes", - "type": "bytes" - }, - "id": 7906, - "name": "ElementaryTypeName", - "src": "8558:5:36" - } - ], - "id": 7907, - "name": "VariableDeclaration", - "src": "8558:21:36" - } - ], - "id": 7908, - "name": "VariableDeclarationStatement", - "src": "8558:21:36" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7904, - "type": "uint256", - "value": "lenMetadata" - }, - "id": 7909, - "name": "Identifier", - "src": "8590:11:36" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - }, - { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "member_name": "decode", - "referencedDeclaration": null, - "type": "function () pure" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": -1, - "type": "abi", - "value": "abi" - }, - "id": 7910, - "name": "Identifier", - "src": "8604:3:36" - } - ], - "id": 7911, - "name": "MemberAccess", - "src": "8604:10:36" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7898, - "type": "bytes calldata", - "value": "data" - }, - "id": 7912, - "name": "Identifier", - "src": "8615:4:36" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(uint256)" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": null - }, - "id": 7913, - "name": "ElementaryTypeName", - "src": "8622:7:36" - } - ], - "id": 7914, - "name": "ElementaryTypeNameExpression", - "src": "8622:7:36" - } - ], - "id": 7915, - "name": "TupleExpression", - "src": "8621:9:36" - } - ], - "id": 7916, - "name": "FunctionCall", - "src": "8604:27:36" - } - ], - "id": 7917, - "name": "Assignment", - "src": "8590:41:36" - } - ], - "id": 7918, - "name": "ExpressionStatement", - "src": "8590:41:36" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "bytes memory" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7907, - "type": "bytes memory", - "value": "metaData" - }, - "id": 7919, - "name": "Identifier", - "src": "8641:8:36" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "bytes calldata", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_calldata_ptr_slice", - "typeString": "bytes calldata slice" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(bytes storage pointer)" - }, - "children": [ - { - "attributes": { - "name": "bytes", - "type": null - }, - "id": 7920, - "name": "ElementaryTypeName", - "src": "8652:5:36" - } - ], - "id": 7921, - "name": "ElementaryTypeNameExpression", - "src": "8652:5:36" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "type": "bytes calldata slice" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7898, - "type": "bytes calldata", - "value": "data" - }, - "id": 7922, - "name": "Identifier", - "src": "8658:4:36" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "3332", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 32", - "value": "32" - }, - "id": 7923, - "name": "Literal", - "src": "8663:2:36" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "+", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "hexvalue": "3332", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 32", - "value": "32" - }, - "id": 7924, - "name": "Literal", - "src": "8666:2:36" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7904, - "type": "uint256", - "value": "lenMetadata" - }, - "id": 7925, - "name": "Identifier", - "src": "8671:11:36" - } - ], - "id": 7926, - "name": "BinaryOperation", - "src": "8666:16:36" - } - ], - "id": 7927, - "name": "IndexRangeAccess", - "src": "8658:25:36" - } - ], - "id": 7928, - "name": "FunctionCall", - "src": "8652:32:36" - } - ], - "id": 7929, - "name": "Assignment", - "src": "8641:43:36" - } - ], - "id": 7930, - "name": "ExpressionStatement", - "src": "8641:43:36" - }, - { - "attributes": { - "assignments": [7932] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "contractAddress", - "overrides": null, - "scope": 7978, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 7931, - "name": "ElementaryTypeName", - "src": "8695:7:36" - } - ], - "id": 7932, - "name": "VariableDeclaration", - "src": "8695:23:36" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7635, - "type": "mapping(bytes32 => address)", - "value": "_resourceIDToContractAddress" - }, - "id": 7933, - "name": "Identifier", - "src": "8721:28:36" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7896, - "type": "bytes32", - "value": "resourceID" - }, - "id": 7934, - "name": "Identifier", - "src": "8750:10:36" - } - ], - "id": 7935, - "name": "IndexAccess", - "src": "8721:40:36" - } - ], - "id": 7936, - "name": "VariableDeclarationStatement", - "src": "8695:66:36" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_b35e1d4b1392122547a6ef1db8ad0b6549b5cc8820bfc81437cf78f8b1333b05", - "typeString": "literal_string \"provided contractAddress is not whitelisted\"" - } - ], - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 7937, - "name": "Identifier", - "src": "8771:7:36" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7651, - "type": "mapping(address => bool)", - "value": "_contractWhitelist" - }, - "id": 7938, - "name": "Identifier", - "src": "8779:18:36" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7932, - "type": "address", - "value": "contractAddress" - }, - "id": 7939, - "name": "Identifier", - "src": "8798:15:36" - } - ], - "id": 7940, - "name": "IndexAccess", - "src": "8779:35:36" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "70726f766964656420636f6e747261637441646472657373206973206e6f742077686974656c6973746564", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"provided contractAddress is not whitelisted\"", - "value": "provided contractAddress is not whitelisted" - }, - "id": 7941, - "name": "Literal", - "src": "8816:45:36" - } - ], - "id": 7942, - "name": "FunctionCall", - "src": "8771:91:36" - } - ], - "id": 7943, - "name": "ExpressionStatement", - "src": "8771:91:36" - }, - { - "attributes": { - "assignments": [7945] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "sig", - "overrides": null, - "scope": 7978, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes4", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes4", - "type": "bytes4" - }, - "id": 7944, - "name": "ElementaryTypeName", - "src": "8873:6:36" - } - ], - "id": 7945, - "name": "VariableDeclaration", - "src": "8873:10:36" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "bytes4" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7647, - "type": "mapping(address => bytes4)", - "value": "_contractAddressToExecuteFunctionSignature" - }, - "id": 7946, - "name": "Identifier", - "src": "8886:42:36" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7932, - "type": "address", - "value": "contractAddress" - }, - "id": 7947, - "name": "Identifier", - "src": "8929:15:36" - } - ], - "id": 7948, - "name": "IndexAccess", - "src": "8886:59:36" - } - ], - "id": 7949, - "name": "VariableDeclarationStatement", - "src": "8873:72:36" - }, - { - "attributes": { - "falseBody": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7945, - "type": "bytes4", - "value": "sig" - }, - "id": 7950, - "name": "Identifier", - "src": "8959:3:36" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "bytes4", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(bytes4)" - }, - "children": [ - { - "attributes": { - "name": "bytes4", - "type": null - }, - "id": 7951, - "name": "ElementaryTypeName", - "src": "8966:6:36" - } - ], - "id": 7952, - "name": "ElementaryTypeNameExpression", - "src": "8966:6:36" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 7953, - "name": "Literal", - "src": "8973:1:36" - } - ], - "id": 7954, - "name": "FunctionCall", - "src": "8966:9:36" - } - ], - "id": 7955, - "name": "BinaryOperation", - "src": "8959:16:36" - }, - { - "children": [ - { - "attributes": { - "assignments": [7957] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "callData", - "overrides": null, - "scope": 7976, - "stateVariable": false, - "storageLocation": "memory", - "type": "bytes", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes", - "type": "bytes" - }, - "id": 7956, - "name": "ElementaryTypeName", - "src": "8991:5:36" - } - ], - "id": 7957, - "name": "VariableDeclaration", - "src": "8991:21:36" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "bytes memory", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "member_name": "encodeWithSelector", - "referencedDeclaration": null, - "type": "function (bytes4) pure returns (bytes memory)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": -1, - "type": "abi", - "value": "abi" - }, - "id": 7958, - "name": "Identifier", - "src": "9015:3:36" - } - ], - "id": 7959, - "name": "MemberAccess", - "src": "9015:22:36" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7945, - "type": "bytes4", - "value": "sig" - }, - "id": 7960, - "name": "Identifier", - "src": "9038:3:36" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7907, - "type": "bytes memory", - "value": "metaData" - }, - "id": 7961, - "name": "Identifier", - "src": "9043:8:36" - } - ], - "id": 7962, - "name": "FunctionCall", - "src": "9015:37:36" - } - ], - "id": 7963, - "name": "VariableDeclarationStatement", - "src": "8991:61:36" - }, - { - "attributes": { - "assignments": [7965, null] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "success", - "overrides": null, - "scope": 7976, - "stateVariable": false, - "storageLocation": "default", - "type": "bool", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bool", - "type": "bool" - }, - "id": 7964, - "name": "ElementaryTypeName", - "src": "9067:4:36" - } - ], - "id": 7965, - "name": "VariableDeclaration", - "src": "9067:12:36" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple(bool,bytes memory)", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "call", - "referencedDeclaration": null, - "type": "function (bytes memory) payable returns (bool,bytes memory)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7932, - "type": "address", - "value": "contractAddress" - }, - "id": 7966, - "name": "Identifier", - "src": "9084:15:36" - } - ], - "id": 7967, - "name": "MemberAccess", - "src": "9084:20:36" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7957, - "type": "bytes memory", - "value": "callData" - }, - "id": 7968, - "name": "Identifier", - "src": "9105:8:36" - } - ], - "id": 7969, - "name": "FunctionCall", - "src": "9084:30:36" - } - ], - "id": 7970, - "name": "VariableDeclarationStatement", - "src": "9066:48:36" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_51f8dc53a1a1265d7e1a33da60330d21af9ee076b3a370b08330721ff4064ac2", - "typeString": "literal_string \"delegatecall to contractAddress failed\"" - } - ], - "overloadedDeclarations": [-18, -18], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 7971, - "name": "Identifier", - "src": "9128:7:36" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7965, - "type": "bool", - "value": "success" - }, - "id": 7972, - "name": "Identifier", - "src": "9136:7:36" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "64656c656761746563616c6c20746f20636f6e747261637441646472657373206661696c6564", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"delegatecall to contractAddress failed\"", - "value": "delegatecall to contractAddress failed" - }, - "id": 7973, - "name": "Literal", - "src": "9145:40:36" - } - ], - "id": 7974, - "name": "FunctionCall", - "src": "9128:58:36" - } - ], - "id": 7975, - "name": "ExpressionStatement", - "src": "9128:58:36" - } - ], - "id": 7976, - "name": "Block", - "src": "8977:220:36" - } - ], - "id": 7977, - "name": "IfStatement", - "src": "8955:242:36" - } - ], - "id": 7978, - "name": "Block", - "src": "8514:689:36" + "id": 3014, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "9186:12:22", + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "9182:16:22", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" } + }, + "id": 3017, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9182:31:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9158:55:22" + }, + { + "assignments": [ + 3020, + null ], - "id": 7979, - "name": "FunctionDefinition", - "src": "8428:775:36" - }, - { - "attributes": { - "documentation": null, - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [null], - "name": "_setResource", - "overrides": null, - "scope": 8022, - "stateMutability": "nonpayable", - "virtual": false, + "declarations": [ + { + "constant": false, + "id": 3020, + "mutability": "mutable", + "name": "success", + "nameLocation": "9234:7:22", + "nodeType": "VariableDeclaration", + "scope": 3031, + "src": "9229:12:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3019, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "9229:4:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, "visibility": "internal" - }, - "children": [ + }, + null + ], + "id": 3025, + "initialValue": { + "arguments": [ { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "resourceID", - "overrides": null, - "scope": 8021, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 7980, - "name": "ElementaryTypeName", - "src": "9240:7:36" - } - ], - "id": 7981, - "name": "VariableDeclaration", - "src": "9240:18:36" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "contractAddress", - "overrides": null, - "scope": 8021, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 7982, - "name": "ElementaryTypeName", - "src": "9268:7:36" - } - ], - "id": 7983, - "name": "VariableDeclaration", - "src": "9268:23:36" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "depositFunctionSig", - "overrides": null, - "scope": 8021, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes4", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes4", - "type": "bytes4" - }, - "id": 7984, - "name": "ElementaryTypeName", - "src": "9301:6:36" - } - ], - "id": 7985, - "name": "VariableDeclaration", - "src": "9301:25:36" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "executeFunctionSig", - "overrides": null, - "scope": 8021, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes4", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes4", - "type": "bytes4" - }, - "id": 7986, - "name": "ElementaryTypeName", - "src": "9336:6:36" - } - ], - "id": 7987, - "name": "VariableDeclaration", - "src": "9336:25:36" - } - ], - "id": 7988, - "name": "ParameterList", - "src": "9230:137:36" + "id": 3023, + "name": "callData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3012, + "src": "9267:8:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 3021, + "name": "contractAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2987, + "src": "9246:15:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, + "id": 3022, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9262:4:22", + "memberName": "call", + "nodeType": "MemberAccess", + "src": "9246:20:22", + "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": 3024, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9246:30:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9228:48:22" + }, + { + "expression": { + "arguments": [ { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 7989, - "name": "ParameterList", - "src": "9377:0:36" + "id": 3027, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3020, + "src": "9299:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } }, { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7635, - "type": "mapping(bytes32 => address)", - "value": "_resourceIDToContractAddress" - }, - "id": 7990, - "name": "Identifier", - "src": "9387:28:36" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7981, - "type": "bytes32", - "value": "resourceID" - }, - "id": 7991, - "name": "Identifier", - "src": "9416:10:36" - } - ], - "id": 7992, - "name": "IndexAccess", - "src": "9387:40:36" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7983, - "type": "address", - "value": "contractAddress" - }, - "id": 7993, - "name": "Identifier", - "src": "9430:15:36" - } - ], - "id": 7994, - "name": "Assignment", - "src": "9387:58:36" - } - ], - "id": 7995, - "name": "ExpressionStatement", - "src": "9387:58:36" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7639, - "type": "mapping(address => bytes32)", - "value": "_contractAddressToResourceID" - }, - "id": 7996, - "name": "Identifier", - "src": "9455:28:36" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7983, - "type": "address", - "value": "contractAddress" - }, - "id": 7997, - "name": "Identifier", - "src": "9484:15:36" - } - ], - "id": 7998, - "name": "IndexAccess", - "src": "9455:45:36" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7981, - "type": "bytes32", - "value": "resourceID" - }, - "id": 7999, - "name": "Identifier", - "src": "9503:10:36" - } - ], - "id": 8000, - "name": "Assignment", - "src": "9455:58:36" - } - ], - "id": 8001, - "name": "ExpressionStatement", - "src": "9455:58:36" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "bytes4" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "bytes4" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7643, - "type": "mapping(address => bytes4)", - "value": "_contractAddressToDepositFunctionSignature" - }, - "id": 8002, - "name": "Identifier", - "src": "9523:42:36" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7983, - "type": "address", - "value": "contractAddress" - }, - "id": 8003, - "name": "Identifier", - "src": "9566:15:36" - } - ], - "id": 8004, - "name": "IndexAccess", - "src": "9523:59:36" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7985, - "type": "bytes4", - "value": "depositFunctionSig" - }, - "id": 8005, - "name": "Identifier", - "src": "9585:18:36" - } - ], - "id": 8006, - "name": "Assignment", - "src": "9523:80:36" - } - ], - "id": 8007, - "name": "ExpressionStatement", - "src": "9523:80:36" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "bytes4" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "bytes4" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7647, - "type": "mapping(address => bytes4)", - "value": "_contractAddressToExecuteFunctionSignature" - }, - "id": 8008, - "name": "Identifier", - "src": "9613:42:36" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7983, - "type": "address", - "value": "contractAddress" - }, - "id": 8009, - "name": "Identifier", - "src": "9656:15:36" - } - ], - "id": 8010, - "name": "IndexAccess", - "src": "9613:59:36" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7987, - "type": "bytes4", - "value": "executeFunctionSig" - }, - "id": 8011, - "name": "Identifier", - "src": "9675:18:36" - } - ], - "id": 8012, - "name": "Assignment", - "src": "9613:80:36" - } - ], - "id": 8013, - "name": "ExpressionStatement", - "src": "9613:80:36" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7651, - "type": "mapping(address => bool)", - "value": "_contractWhitelist" - }, - "id": 8014, - "name": "Identifier", - "src": "9704:18:36" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 7983, - "type": "address", - "value": "contractAddress" - }, - "id": 8015, - "name": "Identifier", - "src": "9723:15:36" - } - ], - "id": 8016, - "name": "IndexAccess", - "src": "9704:35:36" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "74727565", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "bool", - "type": "bool", - "value": "true" - }, - "id": 8017, - "name": "Literal", - "src": "9742:4:36" - } - ], - "id": 8018, - "name": "Assignment", - "src": "9704:42:36" - } - ], - "id": 8019, - "name": "ExpressionStatement", - "src": "9704:42:36" - } - ], - "id": 8020, - "name": "Block", - "src": "9377:376:36" + "hexValue": "64656c656761746563616c6c20746f20636f6e747261637441646472657373206661696c6564", + "id": 3028, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9308:40:22", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_51f8dc53a1a1265d7e1a33da60330d21af9ee076b3a370b08330721ff4064ac2", + "typeString": "literal_string \"delegatecall to contractAddress failed\"" + }, + "value": "delegatecall to contractAddress failed" } - ], - "id": 8021, - "name": "FunctionDefinition", - "src": "9209:544:36" + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_51f8dc53a1a1265d7e1a33da60330d21af9ee076b3a370b08330721ff4064ac2", + "typeString": "literal_string \"delegatecall to contractAddress failed\"" + } + ], + "id": 3026, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967278, + 4294967278 + ], + "referencedDeclaration": 4294967278, + "src": "9291:7:22", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3029, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9291:58:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3030, + "nodeType": "ExpressionStatement", + "src": "9291:58:22" + } + ] + } + } + ] + }, + "documentation": { + "id": 2949, + "nodeType": "StructuredDocumentation", + "src": "7916:661:22", + "text": "@notice Proposal execution should be initiated when a proposal is finalized in the Bridge contract.\n@param data Consists of {resourceID}, {lenMetaData}, and {metaData}.\n@notice Data passed into the function should be constructed as follows:\nlen(data) uint256 bytes 0 - 32\ndata bytes bytes 32 - END\n@notice {contractAddress} is required to be whitelisted\n@notice If {_contractAddressToExecuteFunctionSignature}[{contractAddress}] is set,\n{metaData} is expected to consist of needed function arguments." + }, + "functionSelector": "e248cff2", + "id": 3034, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2956, + "kind": "modifierInvocation", + "modifierName": { + "id": 2955, + "name": "onlyBridge", + "nameLocations": [ + "8658:10:22" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2713, + "src": "8658:10:22" + }, + "nodeType": "ModifierInvocation", + "src": "8658:10:22" + } + ], + "name": "executeProposal", + "nameLocation": "8592:15:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2954, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2951, + "mutability": "mutable", + "name": "resourceID", + "nameLocation": "8616:10:22", + "nodeType": "VariableDeclaration", + "scope": 3034, + "src": "8608:18:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2950, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8608:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } - ], - "id": 8022, - "name": "ContractDefinition", - "src": "277:9478:36" - } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2953, + "mutability": "mutable", + "name": "data", + "nameLocation": "8643:4:22", + "nodeType": "VariableDeclaration", + "scope": 3034, + "src": "8628:19:22", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2952, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "8628:5:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "8607:41:22" + }, + "returnParameters": { + "id": 2957, + "nodeType": "ParameterList", + "parameters": [], + "src": "8669:0:22" + }, + "scope": 3077, + "src": "8583:785:22", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 3075, + "nodeType": "Block", + "src": "9549:383:22", + "statements": [ + { + "expression": { + "id": 3049, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 3045, + "name": "_resourceIDToContractAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2690, + "src": "9560:28:22", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", + "typeString": "mapping(bytes32 => address)" + } + }, + "id": 3047, + "indexExpression": { + "id": 3046, + "name": "resourceID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3036, + "src": "9589:10:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "9560:40:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3048, + "name": "contractAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3038, + "src": "9603:15:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9560:58:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3050, + "nodeType": "ExpressionStatement", + "src": "9560:58:22" + }, + { + "expression": { + "id": 3055, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 3051, + "name": "_contractAddressToResourceID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2694, + "src": "9629:28:22", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bytes32_$", + "typeString": "mapping(address => bytes32)" + } + }, + "id": 3053, + "indexExpression": { + "id": 3052, + "name": "contractAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3038, + "src": "9658:15:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "9629:45:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3054, + "name": "resourceID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3036, + "src": "9677:10:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "9629:58:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 3056, + "nodeType": "ExpressionStatement", + "src": "9629:58:22" + }, + { + "expression": { + "id": 3061, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 3057, + "name": "_contractAddressToDepositFunctionSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2698, + "src": "9698:42:22", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bytes4_$", + "typeString": "mapping(address => bytes4)" + } + }, + "id": 3059, + "indexExpression": { + "id": 3058, + "name": "contractAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3038, + "src": "9741:15:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "9698:59:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3060, + "name": "depositFunctionSig", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3040, + "src": "9760:18:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "9698:80:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "id": 3062, + "nodeType": "ExpressionStatement", + "src": "9698:80:22" + }, + { + "expression": { + "id": 3067, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 3063, + "name": "_contractAddressToExecuteFunctionSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2702, + "src": "9789:42:22", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bytes4_$", + "typeString": "mapping(address => bytes4)" + } + }, + "id": 3065, + "indexExpression": { + "id": 3064, + "name": "contractAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3038, + "src": "9832:15:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "9789:59:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3066, + "name": "executeFunctionSig", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3042, + "src": "9851:18:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "9789:80:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "id": 3068, + "nodeType": "ExpressionStatement", + "src": "9789:80:22" + }, + { + "expression": { + "id": 3073, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 3069, + "name": "_contractWhitelist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2706, + "src": "9882:18:22", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 3071, + "indexExpression": { + "id": 3070, + "name": "contractAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3038, + "src": "9901:15:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "9882:35:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 3072, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9920:4:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "9882:42:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3074, + "nodeType": "ExpressionStatement", + "src": "9882:42:22" + } + ] + }, + "id": 3076, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setResource", + "nameLocation": "9385:12:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3043, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3036, + "mutability": "mutable", + "name": "resourceID", + "nameLocation": "9416:10:22", + "nodeType": "VariableDeclaration", + "scope": 3076, + "src": "9408:18:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3035, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9408:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3038, + "mutability": "mutable", + "name": "contractAddress", + "nameLocation": "9445:15:22", + "nodeType": "VariableDeclaration", + "scope": 3076, + "src": "9437:23:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3037, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9437:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3040, + "mutability": "mutable", + "name": "depositFunctionSig", + "nameLocation": "9478:18:22", + "nodeType": "VariableDeclaration", + "scope": 3076, + "src": "9471:25:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 3039, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "9471:6:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3042, + "mutability": "mutable", + "name": "executeFunctionSig", + "nameLocation": "9514:18:22", + "nodeType": "VariableDeclaration", + "scope": 3076, + "src": "9507:25:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 3041, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "9507:6:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "9397:142:22" + }, + "returnParameters": { + "id": 3044, + "nodeType": "ParameterList", + "parameters": [], + "src": "9549:0:22" + }, + "scope": 3077, + "src": "9376:556:22", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + } ], - "id": 8023, - "name": "SourceUnit", - "src": "0:9756:36" - }, - "compiler": { - "name": "solc", - "version": "0.7.0+commit.9e61f92b.Emscripten.clang" - }, - "networks": { - "5": { - "events": {}, - "links": {}, - "address": "0xd7E33e1bbf65dC001A0Eb1552613106CD7e40C31", - "transactionHash": "0x5c221e8ba781d9318770e46d2a21c9fc4376e8316ca107f88e80c7cc5a4f5b6a" - }, - "5777": { - "events": {}, - "links": {}, - "address": "0x2dEF2042aa2ce6530d2c926Edc1318459dfE30C4", - "transactionHash": "0x1965f6216621f938ba354ea2b992bf6a682f4ca7598348325db99e435e386913" + "scope": 3078, + "src": "284:9651:22", + "usedErrors": [] + } + ], + "src": "33:9904:22" + }, + "compiler": { + "name": "solc", + "version": "0.8.19+commit.7dd6d404.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.4.16", + "updatedAt": "2024-05-15T07:58:14.443Z", + "devdoc": { + "author": "ChainSafe Systems.", + "kind": "dev", + "methods": { + "constructor": { + "details": "{initialResourceIDs}, {initialContractAddresses}, {initialDepositFunctionSignatures}, and {initialExecuteFunctionSignatures} must all have the same length. Also, values must be ordered in the way that that index x of any mentioned array must be intended for value x of any other array, e.g. {initialContractAddresses}[0] is the intended address for {initialDepositFunctionSignatures}[0].", + "params": { + "bridgeAddress": "Contract address of previously deployed Bridge.", + "initialContractAddresses": "These are the addresses the {initialResourceIDs} will point to, and are the contracts that will be called to perform deposit and execution calls.", + "initialDepositFunctionSignatures": "These are the function signatures {initialContractAddresses} will point to, and are the function that will be called when executing {deposit}", + "initialExecuteFunctionSignatures": "These are the function signatures {initialContractAddresses} will point to, and are the function that will be called when executing {executeProposal}", + "initialResourceIDs": "Resource IDs used to identify a specific contract address. These are the Resource IDs this contract will initially support." + } + }, + "deposit(bytes32,uint8,uint64,address,bytes)": { + "params": { + "data": "Consists of: {resourceID}, {lenMetaData}, and {metaData} all padded to 32 bytes.", + "depositNonce": "This value is generated as an ID by the Bridge contract.", + "depositer": "Address of account making the deposit in the Bridge contract.", + "destinationChainID": "Chain ID deposit is expected to be bridged to." + } + }, + "executeProposal(bytes32,bytes)": { + "params": { + "data": "Consists of {resourceID}, {lenMetaData}, and {metaData}." + } + }, + "getDepositRecord(uint64,uint8)": { + "params": { + "depositNonce": "This ID will have been generated by the Bridge contract.", + "destId": "ID of chain deposit will be bridged to." }, - "1658807992770": { - "events": {}, - "links": {}, - "address": "0xd7E33e1bbf65dC001A0Eb1552613106CD7e40C31", - "transactionHash": "0xf95d569fb0b23fc05f0e56a166d6e40bb56c141a617d13cf974cce6e7fd38bb5" + "returns": { + "_0": "DepositRecord which consists of: - _destinationChainID ChainID deposited tokens are intended to end up on. - _resourceID ResourceID used when {deposit} was executed. - _depositer Address that initially called {deposit} in the Bridge contract. - _metaData Data to be passed to method executed in corresponding {resourceID} contract." + } + }, + "setResource(bytes32,address,bytes4,bytes4)": { + "params": { + "contractAddress": "Address of contract to be called when a deposit is made and a deposited is executed.", + "depositFunctionSig": "Function signature of method to be called in {contractAddress} when a deposit is made.", + "executeFunctionSig": "Function signature of method to be called in {contractAddress} when a deposit is executed.", + "resourceID": "ResourceID to be used when making deposits." } + } }, - "schemaVersion": "3.4.8", - "updatedAt": "2022-07-27T05:41:34.687Z", - "networkType": "ethereum", - "devdoc": { - "author": "ChainSafe Systems.", - "kind": "dev", - "methods": { - "constructor": { - "details": "{initialResourceIDs}, {initialContractAddresses}, {initialDepositFunctionSignatures}, and {initialExecuteFunctionSignatures} must all have the same length. Also, values must be ordered in the way that that index x of any mentioned array must be intended for value x of any other array, e.g. {initialContractAddresses}[0] is the intended address for {initialDepositFunctionSignatures}[0].", - "params": { - "bridgeAddress": "Contract address of previously deployed Bridge.", - "initialContractAddresses": "These are the addresses the {initialResourceIDs} will point to, and are the contracts that will be called to perform deposit and execution calls.", - "initialDepositFunctionSignatures": "These are the function signatures {initialContractAddresses} will point to, and are the function that will be called when executing {deposit}", - "initialExecuteFunctionSignatures": "These are the function signatures {initialContractAddresses} will point to, and are the function that will be called when executing {executeProposal}", - "initialResourceIDs": "Resource IDs used to identify a specific contract address. These are the Resource IDs this contract will initially support." - } - }, - "deposit(bytes32,uint8,uint64,address,bytes)": { - "params": { - "data": "Consists of: {resourceID}, {lenMetaData}, and {metaData} all padded to 32 bytes.", - "depositNonce": "This value is generated as an ID by the Bridge contract.", - "depositer": "Address of account making the deposit in the Bridge contract.", - "destinationChainID": "Chain ID deposit is expected to be bridged to." - } - }, - "executeProposal(bytes32,bytes)": { - "params": { - "data": "Consists of {resourceID}, {lenMetaData}, and {metaData}." - } - }, - "getDepositRecord(uint64,uint8)": { - "params": { - "depositNonce": "This ID will have been generated by the Bridge contract.", - "destId": "ID of chain deposit will be bridged to." - }, - "returns": { - "_0": "DepositRecord which consists of: - _destinationChainID ChainID deposited tokens are intended to end up on. - _resourceID ResourceID used when {deposit} was executed. - _depositer Address that initially called {deposit} in the Bridge contract. - _metaData Data to be passed to method executed in corresponding {resourceID} contract." - } - }, - "setResource(bytes32,address,bytes4,bytes4)": { - "params": { - "contractAddress": "Address of contract to be called when a deposit is made and a deposited is executed.", - "depositFunctionSig": "Function signature of method to be called in {contractAddress} when a deposit is made.", - "executeFunctionSig": "Function signature of method to be called in {contractAddress} when a deposit is executed.", - "resourceID": "ResourceID to be used when making deposits." - } - } - }, - "title": "Handles generic deposits and deposit executions.", - "version": 1 + "title": "Handles generic deposits and deposit executions.", + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": { + "deposit(bytes32,uint8,uint64,address,bytes)": { + "notice": "A deposit is initiatied by making a deposit in the Bridge contract.Data passed into the function should be constructed as follows: len(data) uint256 bytes 0 - 32 data bytes bytes 64 - END{contractAddress} is required to be whitelistedIf {_contractAddressToDepositFunctionSignature}[{contractAddress}] is set, {metaData} is expected to consist of needed function arguments." + }, + "executeProposal(bytes32,bytes)": { + "notice": "Proposal execution should be initiated when a proposal is finalized in the Bridge contract.Data passed into the function should be constructed as follows: len(data) uint256 bytes 0 - 32 data bytes bytes 32 - END{contractAddress} is required to be whitelistedIf {_contractAddressToExecuteFunctionSignature}[{contractAddress}] is set, {metaData} is expected to consist of needed function arguments." + }, + "setResource(bytes32,address,bytes4,bytes4)": { + "notice": "First verifies {_resourceIDToContractAddress}[{resourceID}] and {_contractAddressToResourceID}[{contractAddress}] are not already set, then sets {_resourceIDToContractAddress} with {contractAddress}, {_contractAddressToResourceID} with {resourceID}, {_contractAddressToDepositFunctionSignature} with {depositFunctionSig}, {_contractAddressToExecuteFunctionSignature} with {executeFunctionSig}, and {_contractWhitelist} to true for {contractAddress}." + } }, - "userdoc": { - "kind": "user", - "methods": { - "deposit(bytes32,uint8,uint64,address,bytes)": { - "notice": "A deposit is initiatied by making a deposit in the Bridge contract.Data passed into the function should be constructed as follows: len(data) uint256 bytes 0 - 32 data bytes bytes 64 - END{contractAddress} is required to be whitelistedIf {_contractAddressToDepositFunctionSignature}[{contractAddress}] is set, {metaData} is expected to consist of needed function arguments." - }, - "executeProposal(bytes32,bytes)": { - "notice": "Proposal execution should be initiated when a proposal is finalized in the Bridge contract.Data passed into the function should be constructed as follows: len(data) uint256 bytes 0 - 32 data bytes bytes 32 - END{contractAddress} is required to be whitelistedIf {_contractAddressToExecuteFunctionSignature}[{contractAddress}] is set, {metaData} is expected to consist of needed function arguments." - }, - "setResource(bytes32,address,bytes4,bytes4)": { - "notice": "First verifies {_resourceIDToContractAddress}[{resourceID}] and {_contractAddressToResourceID}[{contractAddress}] are not already set, then sets {_resourceIDToContractAddress} with {contractAddress}, {_contractAddressToResourceID} with {resourceID}, {_contractAddressToDepositFunctionSignature} with {depositFunctionSig}, {_contractAddressToExecuteFunctionSignature} with {executeFunctionSig}, and {_contractWhitelist} to true for {contractAddress}." - } - }, - "notice": "This contract is intended to be used with the Bridge contract.", - "version": 1 - } -} + "notice": "This contract is intended to be used with the Bridge contract.", + "version": 1 + } +} \ No newline at end of file diff --git a/ts-tests/common/abi/bridge/README.md b/ts-tests/common/abi/bridge/README.md index 4cf42c7372..6aa7881f16 100644 --- a/ts-tests/common/abi/bridge/README.md +++ b/ts-tests/common/abi/bridge/README.md @@ -2,15 +2,13 @@ ## Build Contracts -These contracts come from [Repo: chainbridge-solidity](https://github.com/Phala-Network/chainbridge-solidity) +These contracts come from [Repo: chainbridge-solidity](https://github.com/collab-ai-network/chainbridge-solidity) Run command: `make compile`in the project(chainbridge-solidity) root directory to generate the files. Copy files from chainbridge-solidity(build/contracts) to current directory. -The smart contract version deployed on Rinkeby or Mainnet is: [Phala_audited version](https://github.com/Phala-Network/chainbridge-solidity/commit/0561b64da85f3242d8ddf63d1dde7c203e1a7f9a) - -In the CI test, the version is: [Branch: phala-bridge](https://github.com/Phala-Network/chainbridge-solidity/commit/9f0487a89b68abc8f60d1f77c92e0b5b4789b23f) +In the CI test, the version is: [Branch: release-0.8.19](https://github.com/collab-ai-network/chainbridge-solidity/commit/1aa527d23001d9d134624a6e63dcdda1b7287fbc) ## Why use different versions @@ -19,11 +17,3 @@ In the integration test, after launching the local test network, We want to run After running the test script, the nonce on Parachain will be changed, so a function is needed to set the value of the nonce on smart contract. In the branch Phala-Bridge, we can call the function: adminSetDepositNonce. In addition, we can also flexibly set the value of decimals for different tokens (adminSetDecimals). - -## Differences - -There are some differences between the two versions of the contract code. These differences are mainly related to decimals and nonce, like: adminSetDecimals, adminSetDepositNonce. - -Only some settings are changed, the core function like deposit, voteProposal, executeProposal have not changed - -For more details, see at [Compare diffs](https://github.com/Phala-Network/chainbridge-solidity/compare/btclottery..Phala-Network:chainbridge-solidity:phala-bridge) diff --git a/ts-tests/common/abi/precompile/Bridge.json b/ts-tests/common/abi/precompile/Bridge.json index d5ab21c488..2beb702554 100644 --- a/ts-tests/common/abi/precompile/Bridge.json +++ b/ts-tests/common/abi/precompile/Bridge.json @@ -1,25 +1,30 @@ [ - { - "inputs": [ - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "receipt", - "type": "bytes" - }, - { - "internalType": "uint8", - "name": "dest_id", - "type": "uint8" - } - ], - "name": "transferNative", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } -] + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "dest_id", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "resource_id", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "recipient", + "type": "bytes" + } + ], + "name": "transferAssets", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] \ No newline at end of file diff --git a/ts-tests/common/abi/precompile/README.md b/ts-tests/common/abi/precompile/README.md index 3f0b65430a..8d024e66fb 100644 --- a/ts-tests/common/abi/precompile/README.md +++ b/ts-tests/common/abi/precompile/README.md @@ -8,5 +8,5 @@ This folder contains Ethereum Virtual Machine (EVM) contracts converted to JSON ## Included Contracts -- [ParachainStaking](https://www.notion.so/web3builders/Parachain-Precompile-Contract-0c34929e5f16408084446dcf3dd36006?pvs=4#53cff6e661e84c4fb300bbb5e9f68033) -- [BridgeTransfer](https://www.notion.so/web3builders/Parachain-Precompile-Contract-0c34929e5f16408084446dcf3dd36006?pvs=4#1f82e990425345b59b7cdbba50bb2c49) +- [ParachainStaking] precompiles/parachain-staking/StakingInterface.sol +- [BridgeTransfer] precompiles/bridge-transfer/BridgeInterface.sol diff --git a/ts-tests/common/abi/precompile/Staking.json b/ts-tests/common/abi/precompile/Staking.json index 488464b8e5..735bdbff62 100644 --- a/ts-tests/common/abi/precompile/Staking.json +++ b/ts-tests/common/abi/precompile/Staking.json @@ -1,165 +1,165 @@ [ - { - "inputs": [ - { - "internalType": "bytes32", - "name": "candidate", - "type": "bytes32" - } - ], - "name": "cancelDelegationRequest", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "candidate", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "delegate", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "candidate", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "uint8", - "name": "autoCompound", - "type": "uint8" - } - ], - "name": "delegateWithAutoCompound", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "delegator", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "candidate", - "type": "bytes32" - } - ], - "name": "delegationRequestIsPending", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "candidate", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "more", - "type": "uint256" - } - ], - "name": "delegatorBondMore", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "delegator", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "candidate", - "type": "bytes32" - } - ], - "name": "executeDelegationRequest", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "candidate", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "less", - "type": "uint256" - } - ], - "name": "scheduleDelegatorBondLess", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "candidate", - "type": "bytes32" - } - ], - "name": "scheduleRevokeDelegation", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "candidate", - "type": "bytes32" - }, - { - "internalType": "uint8", - "name": "value", - "type": "uint8" - } - ], - "name": "setAutoCompound", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } -] + { + "inputs": [ + { + "internalType": "bytes32", + "name": "candidate", + "type": "bytes32" + } + ], + "name": "cancelDelegationRequest", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "candidate", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "delegate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "candidate", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "autoCompound", + "type": "uint8" + } + ], + "name": "delegateWithAutoCompound", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "delegator", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "candidate", + "type": "bytes32" + } + ], + "name": "delegationRequestIsPending", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "candidate", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "more", + "type": "uint256" + } + ], + "name": "delegatorBondMore", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "delegator", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "candidate", + "type": "bytes32" + } + ], + "name": "executeDelegationRequest", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "candidate", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "less", + "type": "uint256" + } + ], + "name": "scheduleDelegatorBondLess", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "candidate", + "type": "bytes32" + } + ], + "name": "scheduleRevokeDelegation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "candidate", + "type": "bytes32" + }, + { + "internalType": "uint8", + "name": "value", + "type": "uint8" + } + ], + "name": "setAutoCompound", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] \ No newline at end of file diff --git a/ts-tests/common/setup/setup-bridge.ts b/ts-tests/common/setup/setup-bridge.ts index 36fae7f596..a7ec351b57 100644 --- a/ts-tests/common/setup/setup-bridge.ts +++ b/ts-tests/common/setup/setup-bridge.ts @@ -149,21 +149,21 @@ async function setupCrossChainTransfer( extrinsic.push(await sudoWrapperGC(pConfig.api, pConfig.api.tx.chainBridge.whitelistChain(sourceChainID))); } - const resource = await pConfig.api.query.chainBridge.resources(destResourceId); - if (resource.toHuman() !== 'BridgeTransfer.transfer') { + // ?????Please check I am not sure if this will work - Minqi + // But we need to set AssetInfo { + // fee: ..., + // asset: None, // None for native token + // } + const AssetInfo = await pConfig.api.query.assetsHandler.resourceToAssetInfo(destResourceId); + if (AssetInfo is not null) { extrinsic.push( await sudoWrapperGC( pConfig.api, - pConfig.api.tx.chainBridge.setResource(destResourceId, 'BridgeTransfer.transfer') + pConfig.api.tx.assetsHandler.set_resource(destResourceId, {"fee": parachainFee, "asset": null}) ) ); } - const fee = await pConfig.api.query.chainBridge.bridgeFee(sourceChainID); - if (!fee || fee.toString() !== parachainFee.toString()) { - extrinsic.push(await sudoWrapperGC(pConfig.api, pConfig.api.tx.chainBridge.updateFee(0, parachainFee))); - } - if (extrinsic.length > 0) { const tx = pConfig.api.tx.utility.batch(extrinsic); await signAndSend(tx, pConfig.alice); diff --git a/ts-tests/integration-tests/bridge.test.ts b/ts-tests/integration-tests/bridge.test.ts index f67da24423..d2389fb0d3 100644 --- a/ts-tests/integration-tests/bridge.test.ts +++ b/ts-tests/integration-tests/bridge.test.ts @@ -6,15 +6,15 @@ import { assert } from 'chai'; import { BigNumber, ethers } from 'ethers'; import { BN } from 'bn.js'; const bn100e12 = new BN(10).pow(new BN(12)).mul(new BN(100)); +// substrate native token +const destResourceId = "0x00000000000000000000000000000063a7e2be78898ba83824b0c0cc8dfb6001" describeCrossChainTransfer('Test Cross-chain Transfer', ``, (context) => { step('Transfer 100 Lit from eth to parachain', async function () { let bridge = context.ethConfig.bridge.connect(context.ethConfig.wallets.bob); let erc20 = context.ethConfig.erc20.connect(context.ethConfig.wallets.bob); - // substrate native token - // const destResourceId = "0x00000000000000000000000000000063a7e2be78898ba83824b0c0cc8dfb6001" - const destResourceId = context.parachainConfig.api.consts.bridgeTransfer.nativeTokenResourceId.toHex(); + // This is LIT on ETH with decimal 18 already const depositAmount = numberToHex('100,000,000,000,000,000,000'.replace(/,/g, '')); let destinationChainID = parseInt(context.parachainConfig.api.consts.chainBridge.bridgeChainId.toString()); console.log(destinationChainID); @@ -52,10 +52,11 @@ describeCrossChainTransfer('Test Cross-chain Transfer', ``, (context) => { let erc20 = context.ethConfig.erc20.connect(context.ethConfig.wallets.bob); const b: BigNumber = await erc20.balanceOf(receipt); await signAndSend( - context.parachainConfig.api.tx.bridgeTransfer.transferNative(bn100e12.toString(), receipt, 0), + context.parachainConfig.api.tx.bridgeTransfer.transferAssets(bn100e12.toString(), receipt, 0, destResourceId), context.parachainConfig.alice ); await sleep(15); + // This is LIT on ETH with decimal 18 already const actual_receive = BigNumber.from('99,000,000,000,000,000,000'.replace(/,/g, '')); assert.equal(b.add(actual_receive).toString(), (await erc20.balanceOf(receipt)).toString()); }); @@ -65,18 +66,20 @@ describeCrossChainTransfer('Test Cross-chain Transfer', ``, (context) => { const handlerBalance: BigNumber = await context.ethConfig.erc20.balanceOf( context.ethConfig.erc20Handler.address ); - const fee = await context.parachainConfig.api.query.chainBridge.bridgeFee(0); + const AssetInfo = await context.parachainConfig.api.query.assetsHandler.resourceToAssetInfo(destResourceId); const Bridge = require('../common/abi/bridge/Bridge.json'); const inter = new ethers.utils.Interface(Bridge.abi); await signAndSend( - context.parachainConfig.api.tx.bridgeTransfer.transferNative( + context.parachainConfig.api.tx.bridgeTransfer.transferAssets( handlerBalance .div(BigNumber.from(1000000)) .add(BigNumber.from(100)) - .add(BigNumber.from(fee.toString())) + // !!!!Something wrong + .add(BigNumber.from(AssetInfo["fee"].toString())) .toString(), receipt, - 0 + 0, + destResourceId ), context.parachainConfig.alice ); @@ -89,15 +92,18 @@ describeCrossChainTransfer('Test Cross-chain Transfer', ``, (context) => { if (block.transactions[j].to === context.ethConfig.bridge.address) { const tx = block.transactions[j]; const decodedInput = inter.parseTransaction({ data: tx.data, value: tx.value }); - if (decodedInput.name === 'executeProposal') { + // The last vote proposal of threshold should failed + if (decodedInput.name === 'voteProposal') { const receipt = await provider.getTransactionReceipt(tx.hash); - assert.equal(0, receipt.status, 'Expect the transaction fail, it actually succeeds'); - return; + if (receipt.status === 0) { + // This means we found the failed voteProposal, which is what we expected + return; + } } } } } - assert.fail('could not find any transactions'); + assert.fail('could not find any failed transactions'); }); step('Boundary testing on ethereum: equal to the maximum balance', async function () { @@ -106,17 +112,21 @@ describeCrossChainTransfer('Test Cross-chain Transfer', ``, (context) => { context.ethConfig.erc20Handler.address ); const erc20 = context.ethConfig.erc20.connect(context.ethConfig.wallets.bob); - const fee = await context.parachainConfig.api.query.chainBridge.bridgeFee(0); + const AssetInfo = await context.parachainConfig.api.query.chainBridge.resourceToAssetInfo(destResourceId); + // !!!!Something wrong + const fee = AssetInfo["fee"]; await signAndSend( - context.parachainConfig.api.tx.bridgeTransfer.transferNative( + context.parachainConfig.api.tx.bridgeTransfer.transferAssets( handlerBalance.div(BigNumber.from(1000000)).add(BigNumber.from(fee.toString())).toString(), receipt, - 0 + 0, + destResourceId ), context.parachainConfig.alice ); await sleep(15); assert.equal((await erc20.balanceOf(context.ethConfig.erc20Handler.address)).toString(), '0'); + assert.equal((await erc20.balanceOf(receipt)).toString(), handlerBalance.toString()); }); step('Boundary testing on parachain', async function () { @@ -125,11 +135,9 @@ describeCrossChainTransfer('Test Cross-chain Transfer', ``, (context) => { // get context.ethConfig.wallets.bob balance const balance = await context.ethConfig.erc20.balanceOf(context.ethConfig.wallets.bob.address); let erc20 = context.ethConfig.erc20.connect(context.ethConfig.wallets.bob); - // substrate native token - const destResourceId = context.parachainConfig.api.consts.bridgeTransfer.nativeTokenResourceId.toHex(); const total_issuance = (await context.parachainConfig.api.query.balances.totalIssuance()).toBn(); const maximum_issuance = new BN( - (await context.parachainConfig.api.query.bridgeTransfer.maximumIssuance()).toString() + (await context.parachainConfig.api.query.assetsHandler.maximumIssuance()).toString() ); await context.ethConfig.erc20.mint( context.ethConfig.wallets.bob.address, diff --git a/ts-tests/integration-tests/precompile-contract.test.ts b/ts-tests/integration-tests/precompile-contract.test.ts index b6ec57a9e7..18ab92f40a 100644 --- a/ts-tests/integration-tests/precompile-contract.test.ts +++ b/ts-tests/integration-tests/precompile-contract.test.ts @@ -19,6 +19,8 @@ import { ethers } from 'ethers'; const toBigNumber = (int: number) => int * 1e12; // TODO: Better use bn1e18, but we will fix it in P-895 const bn1e12 = new BN(10).pow(new BN(12)).mul(new BN(1)); +// substrate native token +const destResourceId = "0x00000000000000000000000000000063a7e2be78898ba83824b0c0cc8dfb6001" describeLitentry('Test Parachain Precompile Contract', ``, (context) => { const config = loadConfig(); @@ -144,10 +146,16 @@ describeLitentry('Test Parachain Precompile Contract', ``, (context) => { } // update chain bridge fee - const updateFeeTx = await sudoWrapperGC(context.api, context.api.tx.chainBridge.updateFee(0, bn1e12 / 1000)); + // ?????Please check I am not sure if this will work - Minqi + // But we need to set AssetInfo { + // fee: ..., + // asset: None, // None for native token + // } + const updateFeeTx = await sudoWrapperGC(context.api, context.api.tx.assetsHandler.set_resource(destResourceId, {"fee": bn1e12 / 1000, "asset": null})); await signAndSend(updateFeeTx, context.alice); - const bridge_fee = await context.api.query.chainBridge.bridgeFee(0); + const AssetInfo = await context.api.query.assetsHandler.resourceToAssetInfo(destResourceId); + const bridge_fee = await AssetInfo["fee"]; expect(bridge_fee.toString()).to.eq((bn1e12 / 1000).toString()); // set chainId to whitelist @@ -156,13 +164,14 @@ describeLitentry('Test Parachain Precompile Contract', ``, (context) => { // The above two steps are necessary, otherwise the contract transaction will be reverted. // transfer native token - const transferNativeTx = precompileBridgeContract.interface.encodeFunctionData('transferNative', [ + const transferNativeTx = precompileBridgeContract.interface.encodeFunctionData('transferAssets', [ bn1e12 / 100, // 0.01 LIT dest_address, 0, + destResourceId, ]); - await executeTransaction(transferNativeTx, precompileBridgeContractAddress, 'transferNative'); + await executeTransaction(transferNativeTx, precompileBridgeContractAddress, 'transferAssets'); const eventsPromise = subscribeToEvents('chainBridge', 'FungibleTransfer', context.api); const events = (await eventsPromise).map(({ event }) => event); @@ -171,7 +180,6 @@ describeLitentry('Test Parachain Precompile Contract', ``, (context) => { // FungibleTransfer(BridgeChainId, DepositNonce, ResourceId, u128, Vec) expect(event_data[0]).to.eq('0'); - const destResourceId = context.api.consts.bridgeTransfer.nativeTokenResourceId.toHex(); expect(event_data[2]).to.eq(destResourceId); expect(event_data[3]).to.eq((bn1e12 / 100 - bn1e12 / 1000).toLocaleString()); expect(event_data[4]).to.eq(dest_address);